Jump to content

MediaWiki:Gadget-vector-headanchor.css

From wikiNonStop
Revision as of 23:13, 6 September 2024 by en>Krinkle
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/*!
 * Vector HeadAnchors gadget
 *
 * Copyright 2013 Timo Tijhof, https://mediawiki.org/wiki/MediaWiki:Gadget-vector-headanchor.js
 * SPDX-License-Identifier: MIT
 * License: https://opensource.org/licenses/MIT
 */

.tpl-vheadanchor-heading {
	position: relative;
	/*
	Disable Vector's `overflow: hidden` because otherwise
	our negatively positioned anchor won't be visible.
	   
	By itself, showing overflow would cause two problems:

	1. We normally hide overflow for a reason. Namely, to ensure
	   that infoboxes and thumbnails retain their margins and thus
	   things like heading bottom borders will stay away from the
	   edge of these floated boxes.
    2. Headanchor needs `position: relative`, which affects stacking
       context (like z-index). If we don't hide overflow, that means
       the heading and its border etc will render over top and
       strike-through any content in the thumbnail and infobox.
    
    We solve both of these by bringing back the "create block-formatting
    context" behaviour of `overflow: hidden` with `display: flex-root`.
    This isn't supported in all Basic browsers, but good enough for
    this gadget.
    
    Thanks [[User:Tgr]]!
    */
	overflow: visible;
	display: flow-root;
}

.ext-discussiontools-init-section.tpl-vheadanchor-heading {
	overflow: visible;
}

.tpl-vheadanchor {
	position: absolute;
	 /* consistent font and size, regardless of heading level */
	font-family: serif;
	font-size: 24px;
	font-weight: normal; /* reset any bolding from H3-H6 styles */
	line-height: 1.3;
	/* Based on Vector mw-body padding being 16px */
	left: -16px;
	/* Use padding instead of margin. Two reasons:
	  1. With margin, there would be a pointer gap between headline and anchor,
	     and thus flickering because :hover would not match in-between
	  2. With padding, we get a bigger tap/hover area.
	*/
	padding: 0 3px;
}


h3 ~ .tpl-vheadanchor {
	line-height: 1.1;
}
h4 ~ .tpl-vheadanchor,
h6 ~ .tpl-vheadanchor,
h6 ~ .tpl-vheadanchor {
	line-height: 1.0;
}

/* Based on Vector wide viewport using mw-body padding of 24px */
@media screen and (min-width: 982px) {
	.skin-vector .tpl-vheadanchor {
		left: -24px;
		padding: 0 7px;
	}
}

.tpl-vheadanchor-heading:not(:hover) [id]:not(:target) ~ .tpl-vheadanchor {
	color: #c8ccd1;
}