mediawiki-skins-Vector/components/tabs.less
Timo Tijhof 8795cee025 Remove min-width/-moz-any-link hack for vectorMenu in old Firefox
I've tested as far back as Firefox 3.6 on Windows XP and
Firefox 16 on Windows 8 (localhost tunnel via BrowserStack), and
could not find any rendering issue with the menu.

For Firefox 3.6 it is Grade C without JavaScript, so the menu
only appears when logged-in (e.g. as admin) where it contains
Delete, Protect, and Move.

For Firefox 16 it is Grad A with JavaScript, and the menu can
also can be seen by narrowing the browser window when logged-out
until the History tab turns into a menu.

In both cases, the menu rendered without issue both with
and without these two rules.

Change-Id: I4946b115595424fdcf74429b237e0c2ee5715fc3
2018-09-04 03:47:25 +01:00

242 lines
4.8 KiB
Plaintext

/**
* Styling for namespace tabs (page, discussion) and views (read, edit, view history, watch and other actions)
*/
/* Navigation Labels */
.vectorTabs h3 {
display: none;
}
/* Namespaces and Views */
.vectorTabs {
float: left;
height: 2.5em;
.background-image('images/tab-break.png');
background-position: bottom left;
background-repeat: no-repeat;
padding-left: 1px;
ul {
float: left;
height: 100%;
list-style-type: none;
list-style-image: none;
margin: 0;
padding: 0;
.background-image('images/tab-break.png');
background-position: right bottom;
background-repeat: no-repeat;
li {
float: left;
line-height: 1.125em;
display: block;
height: 100%;
margin: 0;
padding: 0;
.background-image('images/tab-normal-fade.png');
background-position: bottom left;
background-repeat: repeat-x;
white-space: nowrap;
}
}
li {
&.new {
a,
a:visited {
color: #a55858;
}
}
&.selected {
.background-image('images/tab-current-fade.png');
a,
a:visited {
color: #222;
text-decoration: none;
}
}
&.icon {
a {
background-position: bottom right;
background-repeat: no-repeat;
}
}
a {
display: block;
height: 1.9em;
padding-left: 0.615em; // equals `8px` at computed `font-size` of `13px` below
padding-right: 0.615em;
color: @menu-link-color;
cursor: pointer;
font-size: 0.8125em; // equals `13px` at browser default of `16px`
}
}
span {
display: inline-block;
.background-image('images/tab-break.png');
background-position: bottom right;
background-repeat: no-repeat;
height: 100%;
a {
float: left;
display: block;
padding-top: 1.25em;
}
}
}
/* Variants and Actions */
.vectorMenu {
direction: ltr;
float: left;
cursor: pointer;
position: relative;
line-height: 1.125em;
}
#mw-head .vectorMenu h3 {
float: left;
.background-image('images/tab-break.png');
background-repeat: no-repeat;
background-position: bottom right;
font-size: 1em;
height: 2.5em;
// `padding-right` >= `1px` effectively moves the "background border" outside of the element to
// act like a real border. It is necessary for `.vectorMenu .menu` dropdown to align well.
// 0.5em equals `8px` at computed `font-size` of `14px` as visually harmonically with
// `padding-left` in `.vectorMenu h3 span`
padding: 0 0.5em 0 0;
margin: 0 -1px 0 0;
}
.vectorMenu h3 {
span {
position: relative;
display: block;
font-size: 0.8125em;
padding-left: 0.615em;
padding-top: 1.25em;
padding-right: 16px;
font-weight: normal;
color: #444;
&:after {
content: '';
position: absolute;
top: 1.25em;
right: 0;
bottom: 0;
left: 0;
.background-image-svg('images/arrow-down.svg', 'images/arrow-down.png');
background-position: 100% 50%;
background-repeat: no-repeat;
// Modify the color of the image from the default #222 to approx. #444 to match the text.
opacity: 0.85;
}
}
&:hover span,
&:focus span {
color: @content-font-color;
&:after {
opacity: 1;
}
}
}
.vectorMenu .vectorMenuCheckbox:checked + h3 span:after {
transform: scaleY( -1 );
}
.vectorMenu .vectorMenuCheckbox:focus + h3 {
// Simulate browser focus ring
outline: dotted 1px; // Firefox style
outline: auto -webkit-focus-ring-color; // Webkit style
}
.vectorMenu .menu {
// Match the width of the dropdown "heading" (the tab)
min-width: 100%;
position: absolute;
top: 2.5em;
left: -1px;
background-color: @body-background-color;
border: 1px solid #a2a9b1;
border-top-width: 0;
clear: both;
box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 );
text-align: left;
display: none;
// Menus must overlap indicators (z-index: 1) and VisualEditor toolbar (z-index: 2)
z-index: 2;
}
.vectorMenu:hover .menu {
display: block;
}
// This is in a separate block, so that browsers supporting :hover but not :checked still apply the rule above
// Support: IE8
.vectorMenu .vectorMenuCheckbox:checked ~ .menu {
display: block;
}
.vectorMenu ul {
list-style-type: none;
list-style-image: none;
padding: 0;
margin: 0;
text-align: left;
}
.vectorMenu li {
padding: 0;
margin: 0;
text-align: left;
line-height: 1em;
}
.vectorMenu li a {
display: block;
padding: 0.625em;
white-space: nowrap;
color: @menu-link-color;
cursor: pointer;
font-size: 0.8125em;
}
.vectorMenu li.selected a,
.vectorMenu li.selected a:visited {
color: #222;
text-decoration: none;
}
// Invisible checkbox covering the dropdown menu handle
.vectorMenuCheckbox {
cursor: pointer;
position: absolute;
top: 0;
left: 0;
z-index: 1;
opacity: 0;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
// Hide the checkbox completely in browsers that don't support :checked
display: none;
}
:not( :checked ) > .vectorMenuCheckbox {
// When the browser supports :checked, display it
display: block;
}
@import 'watchstar.less';