MediaWiki:Gadget-sectionAnchors.css

From RuneRealm Wiki

This is an old revision of this page, as edited by Alex (talk | contribs) at 03:46, 13 October 2024. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Jump to navigation Jump to search

After saving, you may need to bypass your browser's cache to see the changes. For further information, see Wikipedia:Bypass your cache.

  • In most Windows and Linux browsers: Hold down Ctrl and press F5.
  • In Safari: Hold down ⇧ Shift and click the Reload button.
  • In Chrome and Firefox for Mac: Hold down both ⌘ Cmd+⇧ Shift and press R.
/**
 * Vector HeadAnchors
 * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-vector-headanchor.css
 *
 * Copyright 2013 Timo Tijhof + with OSW customisations
 * @license MIT <https://opensource.org/licenses/MIT>
 *
 * See also:
 * https://www.mediawiki.org/wiki/Requests_for_comment/Clickable_section_anchors
 * https://phabricator.wikimedia.org/T18691
 */

.mw-header {
	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 [[mw:User:Tgr]]!
	*/
	overflow: visible;
	display: flow-root;
}

.mw-headline-headanchor::after {
	content: '';
	/* originally px, using rem to match different paddings applied to
	.mw-body when > 982px */
	padding-left: 1rem; 
	margin-left: -1rem;
	-webkit-mask: no-repeat 50% 50% / 15px; /* support chrome/safari */
	mask: no-repeat 50% 50% / 15px;
}

@media screen and (min-width: 982px) {
	.mw-headline-headanchor::after {
		padding-left: 1.5rem; 
		margin-left: -1.5rem;
	}
}

.mw-header:hover .mw-headline-headanchor::after,
.mw-headline-headanchor:target::after {
	-webkit-mask-image: url('filepath://Section_anchor_light.svg');
	mask-image: url('filepath://Section_anchor_light.svg');
	background-color: var(--text-color);
}

.mw-headline-headanchor:focus {
	outline: 0;
}

/** 
 * fix section heading being hidden underneath sticky header
 * @source <https://css-tricks.com/hash-tag-links-padding/>
 *
 * Note: a more optimal fix would be to use `scroll-padding-top` on page <html>;
 * however that requires the use of :has() pseudo-class (which is only recently
 * supported) as the `wgl-stickyheader` class is on <body>
 */

body.wgl-stickyheader.action-view .mw-headline-headanchor:target {
	display: block;
	position: relative;
	bottom: -1.25rem;
	background-position: left bottom;
	z-index: -1;
}

body.wgl-stickyheader.action-view .mw-headline-headanchor:target::before {
	display: block;
	content: '';
	margin-top: -4rem;
	height: 4rem;
	visibility: hidden;
	pointer-events: none;
}

body.wgl-stickyheader.action-view .mw-headline-headanchor:target::after {
	position: relative;
	bottom: -0.625rem;
}

/* override [[MediaWiki:Common.less/interface.less]] - sticky header hack uses
   a different selector when this gadget is disabled */
body.wgl-stickyheader.action-view .mw-headline:target::before {
	display: none;
}