From: jrobson Date: Thu, 26 Sep 2013 18:43:00 +0000 (-0700) Subject: Turn screen.css into screen.less X-Git-Tag: 1.31.0-rc.0~18602 X-Git-Url: http://git.cyclocoop.org/url?a=commitdiff_plain;h=08cf0b1;p=lhc%2Fweb%2Fwiklou.git Turn screen.css into screen.less * Separate external links into own less file to showcase how many unnecessary css rules we have * Introduce new mixins to allow embedding for list-style-image * Replace use of /* embed */ with mediawiki mixins Change-Id: If79d2d1f72579627597b291eec759441d6763c34 --- diff --git a/resources/Resources.php b/resources/Resources.php index ca0426395c..880726b214 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -92,7 +92,8 @@ return array( 'common/commonElements.css' => array( 'media' => 'screen' ), 'common/commonContent.css' => array( 'media' => 'screen' ), 'common/commonInterface.css' => array( 'media' => 'screen' ), - 'vector/screen.css' => array( 'media' => 'screen' ), + 'vector/screen.less' => array( 'media' => 'screen' ), + 'vector/externalLinks.less' => array( 'media' => 'screen' ), 'vector/screen-hd.css' => array( 'media' => 'screen and (min-width: 982px)' ), ), 'remoteBasePath' => $GLOBALS['wgStylePath'], diff --git a/resources/mediawiki.less/mediawiki.mixins.less b/resources/mediawiki.less/mediawiki.mixins.less index 3763b87964..8c9b825f32 100644 --- a/resources/mediawiki.less/mediawiki.mixins.less +++ b/resources/mediawiki.less/mediawiki.mixins.less @@ -27,3 +27,13 @@ /* @embed */ background-image: -webkit-linear-gradient(transparent, transparent), url(@svg); /* @embed */ background-image: linear-gradient(transparent, transparent), url(@svg); } + +/* Caution: Does not support localisable images */ +.list-style-image(@url) when (embeddable(@url)) { + list-style-image: embed(@url); + list-style-image: url(@url)!ie; +} + +.list-style-image(@url) when not (embeddable(@url)) { + list-style-image: url(@url); +} diff --git a/skins/vector/externalLinks.less b/skins/vector/externalLinks.less new file mode 100644 index 0000000000..5b02abbd7c --- /dev/null +++ b/skins/vector/externalLinks.less @@ -0,0 +1,75 @@ +// FIXME: This size of this CSS is ridiculous. Please refactor (see bug 54604) +@import "mediawiki.mixins.less"; + +div#content a.external { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/external-link-ltr-icon.png'); + padding-right: 13px; +} +div#content a.external[href ^="https://"], +.link-https { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/lock-icon.png'); + padding-right: 13px; +} +div#content a.external[href ^="mailto:"], +.link-mailto { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/mail-icon.png'); + padding-right: 13px; +} +div#content a.external[href ^="news:"] { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/news-icon.png'); + padding-right: 13px; +} +div#content a.external[href ^="ftp://"], +.link-ftp { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/file-icon.png'); + padding-right: 13px; +} +div#content a.external[href ^="irc://"], +div#content a.external[href ^="ircs://"], +.link-irc { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/talk-icon.png'); + padding-right: 13px; +} +div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"], +div#content a.external[href $=".mid"], div#content a.external[href $=".MID"], +div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"], +div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"], +div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"], +div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"], +.link-audio { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/audio-icon.png'); + padding-right: 13px; +} +div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"], +div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"], +div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"], +div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"], +.link-video { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/video-icon.png'); + padding-right: 13px; +} +div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"], +div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"], +div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"], +.link-document { + background-position: center right; + background-repeat: no-repeat; + .background-image('images/document-icon.png'); + padding-right: 13px; +} diff --git a/skins/vector/screen.css b/skins/vector/screen.css deleted file mode 100644 index c164c6dd55..0000000000 --- a/skins/vector/screen.css +++ /dev/null @@ -1,911 +0,0 @@ -/* - * Any rules which should not be flipped automatically in right-to-left situations should be - * prepended with @noflip in a comment block. Images that should be embedded as base64 data-URLs - * should be prepended with @embed in a comment block. - * - * This style-sheet employs a few CSS trick to accomplish compatibility with a wide range of web - * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using - * a rule that makes things work in IE6, and then following it with a rule that begins with - * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support - * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and - * "IGNORED BY IE6" comments. - */ - -/* Framework */ -html, -body { - height: 100%; - margin: 0; - padding: 0; - font-family: sans-serif; - font-size: 1em; -} -body { - background-color: #f6f6f6; -} -/* Content */ -div#content { - margin-left: 10em; - padding: 1em; - /* Border on top, left, and bottom side */ - border: 1px solid #a7d7f9; - border-right-width: 0; - /* Merge the border with tabs' one (in their background image) */ - margin-top: -1px; - background-color: white; - color: black; - direction: ltr; -} -/* Hide, but keep accessible for screen-readers */ -#mw-navigation h2 { - position: absolute; - top: -9999px; -} -/* Head */ -#mw-page-base { - height: 5em; - background-color: white; - /* @embed */ - background-image: url(images/page-fade.png); - background-position: bottom left; - background-repeat: repeat-x; -} -#mw-head-base { - margin-top: -5em; - margin-left: 10em; - height: 5em; -} -div#mw-head { - position: absolute; - top: 0; - right: 0; - width: 100%; -} -div#mw-head h3 { - margin: 0; - padding: 0; -} -/* Hide empty portlets */ -div.emptyPortlet { - display: none; -} -/* Personal */ -#p-personal { - position: absolute; - top: 0.33em; - right: 0.75em; - /* Display on top of page tabs - bugs 37158, 48078 */ - z-index: 100; -} -#p-personal h3 { - display: none; -} -#p-personal ul { - list-style-type: none; - list-style-image: none; - margin: 0; - padding-left: 10em; /* Keep from overlapping logo */ -} -/* @noflip */ -#p-personal li { - line-height: 1.125em; - float: left; -} -/* This one flips! */ -#p-personal li { - margin-left: 0.75em; - margin-top: 0.5em; - font-size: 0.75em; - white-space: nowrap; -} -/* Navigation Containers */ -#left-navigation { - float: left; - margin-left: 10em; - margin-top: 2.5em; - /* When right nav would overlap left nav, it's placed below it - (normal CSS floats behavior). This rule ensures that no empty space - is shown between them due to right nav's margin-top. Page layout - is still broken, but at least the nav overlaps only the page title - instead of half the content. */ - margin-bottom: -2.5em; - /* IE 6 double-margin bug fix */ - display: inline; -} -#right-navigation { - float: right; - margin-top: 2.5em; -} -/* Navigation Labels */ -div.vectorTabs h3, -div.vectorMenu h3 span { - display: none; -} -/* Namespaces and Views */ -/* @noflip */ -div.vectorTabs { - float: left; - height: 2.5em; -} -div.vectorTabs { - /* @embed */ - background-image: url(images/tab-break.png); - background-position: bottom left; - background-repeat: no-repeat; - padding-left: 1px; -} -/* @noflip */ -div.vectorTabs ul { - float: left; -} -div.vectorTabs ul { - height: 100%; - list-style-type: none; - list-style-image: none; - margin: 0; - padding: 0; -} -/* @noflip */ -div.vectorTabs ul li { - float: left; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div.vectorTabs ul li { - line-height: 1.125em; - display: inline-block; - height: 100%; - margin: 0; - padding: 0; - background-color: #f3f3f3; - /* @embed */ - background-image: url(images/tab-normal-fade.png); - background-position: bottom left; - background-repeat: repeat-x; - white-space: nowrap; -} -/* IGNORED BY IE6 */ -div.vectorTabs ul > li { - display: block; -} -div.vectorTabs li.selected { - /* @embed */ - background-image: url(images/tab-current-fade.png); -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div.vectorTabs li a { - display: inline-block; - height: 1.9em; - padding-left: 0.5em; - padding-right: 0.5em; - color: #0645ad; - cursor: pointer; - font-size: 0.8em; -} -/* IGNORED BY IE6 */ -div.vectorTabs li > a { - display: block; -} -div.vectorTabs li.icon a { - background-position: bottom right; - background-repeat: no-repeat; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div.vectorTabs span a { - display: inline-block; - padding-top: 1.25em; -} -/* IGNORED BY IE6 */ -/* @noflip */ -div.vectorTabs span > a { - float: left; - display: block; -} -div.vectorTabs span { - display: inline-block; - /* @embed */ - background-image: url(images/tab-break.png); - background-position: bottom right; - background-repeat: no-repeat; -} -div.vectorTabs li.selected a, -div.vectorTabs li.selected a:visited{ - color: #333; - text-decoration: none; -} -div.vectorTabs li.new a, -div.vectorTabs li.new a:visited{ - color: #a55858; -} -/* Variants and Actions */ -/* @noflip */ -div.vectorMenu { - direction: ltr; - float: left; - /* @embed */ - background-image: url(images/arrow-down-icon.png); - /* SVG support using a transparent gradient to guarantee cross-browser - * compatibility (browsers able to understand gradient syntax support also SVG) */ - /* @embed */ - background-image: -webkit-linear-gradient(transparent, transparent), url(images/arrow-down-icon.svg); - /* @embed */ - background-image: linear-gradient(transparent, transparent), url(images/arrow-down-icon.svg); - background-position: 100% 60%; - background-repeat: no-repeat; - cursor: pointer; -} -div.vectorMenuFocus { - /* @embed */ - background-image: url(images/arrow-down-focus-icon.png); - /* SVG support using a transparent gradient to guarantee cross-browser - * compatibility (browsers able to understand gradient syntax support also SVG) */ - /* @embed */ - background-image: -webkit-linear-gradient(transparent, transparent), url(images/arrow-down-focus-icon.svg); - /* @embed */ - background-image: linear-gradient(transparent, transparent), url(images/arrow-down-focus-icon.svg); - background-position: 100% 60%; -} -/* @noflip */ -body.rtl div.vectorMenu { - direction: rtl; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -/* @noflip */ -div#mw-head div.vectorMenu h3 { - float: left; - /* @embed */ - background-image: url(images/tab-break.png); - background-repeat: no-repeat; -} -/* This will be flipped - unlike the one above it */ -div#mw-head div.vectorMenu h3 { - background-position: bottom left; - margin-left: -1px; -} -/* IGNORED BY IE6 */ -div#mw-head div.vectorMenu > h3 { - background-image: none; -} -div#mw-head div.vectorMenu h4, -div.vectorMenu#p-variants #mw-vector-current-variant { - display: inline-block; - float: left; - font-size: 0.8em; - padding-left: 0.5em; - padding-top: 1.375em; - font-weight: normal; - border: none; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -/* @noflip */ -div.vectorMenu h3 a { - display: inline-block; - width: 24px; - height: 1.9em; - text-decoration: none; - /* @embed */ - background-image: url(images/tab-break.png); - background-repeat: no-repeat; -} -/* This will be flipped - unlike the one above it */ -div.vectorMenu h3 a { - background-position: bottom right; -} -/* IGNORED BY IE6 */ -div.vectorMenu h3 > a { - display: block; -} -div.vectorMenu div.menu { - position: relative; - display: none; - clear: both; - text-align: left; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -/* @noflip */ -body.rtl div.vectorMenu div.menu { - margin-left: 24px; -} -/* IGNORED BY IE6 */ -/* @noflip */ -body.rtl div.vectorMenu > div.menu { - margin-left: auto; -} -/* IGNORED BY IE6 */ -/* Also fixes old versions of FireFox */ -/* @noflip */ -body.rtl div.vectorMenu > div.menu, -x:-moz-any-link { - margin-left: 23px; -} -/* Enable forcing showing of the menu for accessibility */ -div.vectorMenu:hover div.menu, -div.vectorMenu div.menuForceShow { - display: block; -} -div.vectorMenu ul { - position: absolute; - background-color: white; - border: solid 1px silver; - border-top-width: 0; - list-style-type: none; - list-style-image: none; - padding: 0; - margin: 0; - margin-left: -1px; - text-align: left; -} -/* Fixes old versions of FireFox */ -div.vectorMenu ul, -x:-moz-any-link { - min-width: 5em; -} -/* Returns things back to normal in modern versions of FireFox */ -div.vectorMenu ul, -x:-moz-any-link, -x:default { - min-width: 0; -} -div.vectorMenu li { - padding: 0; - margin: 0; - text-align: left; - line-height: 1em; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div.vectorMenu li a { - display: inline-block; - padding: 0.5em; - white-space: nowrap; - color: #0645ad; - cursor: pointer; - font-size: 0.8em; -} -/* IGNORED BY IE6 */ -div.vectorMenu li > a { - display: block; -} -div.vectorMenu li.selected a, -div.vectorMenu li.selected a:visited { - color: #333; - text-decoration: none; -} -/* Search */ -#p-search h3 { - display: none; -} -/* @noflip */ -#p-search { - float: left; -} -#p-search { - margin-right: 0.5em; - margin-left: 0.5em; -} -#p-search form, -#p-search input { - margin: 0; - margin-top: 0.4em; -} -div#simpleSearch { - display: block; - width: 14em; - height: 1.4em; - margin-top: 0.65em; - position: relative; - min-height: 1px; /* Gotta trigger hasLayout for IE7 */ - border: solid 1px #aaa; - color: black; - background-color: white; - /* @embed */ - background-image: url(images/search-fade.png); - background-position: top left; - background-repeat: repeat-x; -} -div#simpleSearch input:focus { - outline: none; -} -div#simpleSearch input.placeholder { - color: #999; -} -div#simpleSearch input::-webkit-input-placeholder { - color: #999; -} -div#simpleSearch input:-moz-placeholder { - color: #999; -} -div#simpleSearch input:-ms-input-placeholder { - color: #999; -} -div#simpleSearch input#searchInput { - position: absolute; - top: 0; - left: 0; - width: 90%; - margin: 0; - padding: 0; - padding-left: 0.2em; - padding-top: 0.2em; - padding-bottom: 0.2em; - outline: none; - border: none; - /* - * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent - * this from ever being shown anyways. - */ - font-size: 13px; - color: black; - background-color: transparent; - direction: ltr; -} -div#simpleSearch button#searchButton { - position: absolute; - width: 10%; - right: 0; - top: 0; - padding: 0; - padding-top: 0.3em; - padding-bottom: 0.2em; - padding-right: 0.4em; - margin: 0; - border: none; - cursor: pointer; - background-color: transparent; - background-image: none; -} -/* OVERRIDDEN BY COMPLIANT BROWSERS */ -div#simpleSearch button#searchButton img { - border: none; - margin: 0; - margin-top: -3px; - padding: 0; -} -/* IGNORED BY IE6 */ -div#simpleSearch button#searchButton > img { - margin: 0; -} -/* Panel */ -div#mw-panel { - position: absolute; - top: 160px; - padding-top: 1em; - width: 10em; - left: 0; -} -div#mw-panel div.portal { - padding-bottom: 1.5em; - direction: ltr; -} -div#mw-panel div.portal h3 { - font-weight: normal; - color: #444; - padding: 0.25em; - padding-top: 0; - padding-left: 1.75em; - cursor: default; - border: none; - font-size: 0.75em; -} -div#mw-panel div.portal div.body { - margin: 0; - padding-top: 0.5em; - margin-left: 1.25em; - /* @embed */ - background-image: url(images/portal-break.png); - background-repeat: no-repeat; - background-position: top left; -} -div#mw-panel div.portal div.body ul { - list-style-type: none; - list-style-image: none; - padding: 0; - margin: 0; -} -div#mw-panel div.portal div.body ul li { - line-height: 1.125em; - padding: 0; - padding-bottom: 0.5em; - margin: 0; - font-size: 0.75em; - word-wrap: break-word; -} -div#mw-panel div.portal div.body ul li a { - color: #0645ad; -} -div#mw-panel div.portal div.body ul li a:visited { - color: #0b0080; -} -/* Footer */ -div#footer { - margin-left: 10em; - margin-top: 0; - padding: 0.75em; - direction: ltr; -} -div#footer ul { - list-style-type: none; - list-style-image: none; - margin: 0; - padding: 0; -} -div#footer ul li { - margin: 0; - padding: 0; - padding-top: 0.5em; - padding-bottom: 0.5em; - color: #333; - font-size: 0.7em; -} -div#footer #footer-icons { - float: right; -} -/* @noflip */ -body.ltr div#footer #footer-places { - float: left; -} -div#footer #footer-info li { - line-height: 1.4em; -} -div#footer #footer-icons li { - float: left; - margin-left: 0.5em; - line-height: 2em; - text-align: right; -} -div#footer #footer-places li { - float: left; - margin-right: 1em; - line-height: 2em; -} -/* Logo */ -#p-logo { - position: absolute; - top: -160px; - left: 0; - width: 10em; - height: 160px; -} -#p-logo a { - display: block; - width: 10em; - height: 160px; - background-repeat: no-repeat; - background-position: center center; - text-decoration: none; -} - -/* - * - * The following code is highly modified from monobook. It would be nice if the - * preftoc id was more human readable like preferences-toc for instance, - * howerver this would require backporting the other skins. - */ - -/* Preferences */ -#preftoc { - /* Tabs */ - width: 100%; - float: left; - clear: both; - margin: 0 !important; - padding: 0 !important; - /* @embed */ - background-image: url(images/preferences-break.png); - background-position: bottom left; - background-repeat: no-repeat; -} - #preftoc li { - /* Tab */ - float: left; - margin: 0; - padding: 0; - padding-right: 1px; - height: 2.25em; - white-space: nowrap; - list-style-type: none; - list-style-image: none; - /* @embed */ - background-image: url(images/preferences-break.png); - background-position: bottom right; - background-repeat: no-repeat; - } - /* Sadly, IE6 won't understand this */ - #preftoc li:first-child { - margin-left: 1px; - } - #preftoc a, - #preftoc a:active { - display: inline-block; - position: relative; - color: #0645ad; - padding: 0.5em; - text-decoration: none; - background-image: none; - font-size: 0.9em; - } - #preftoc a:hover, - #preftoc a:focus { - text-decoration: underline; - } - #preftoc li.selected a { - /* @embed */ - background-image: url(images/preferences-fade.png); - background-position: bottom; - background-repeat: repeat-x; - color: #333; - text-decoration: none; - } -#preferences { - float: left; - width: 100%; - margin: 0; - margin-top: -2px; - clear: both; - border: solid 1px #ccc; - background-color: #fafafa; -} -#preferences fieldset { - border: none; - border-top: solid 1px #ccc; -} -#preferences fieldset.prefsection { - border: none; - padding: 0; - margin: 1em; -} -#preferences legend { - color: #666; -} -#preferences fieldset.prefsection legend.mainLegend { - display: none; -} -#preferences td { - padding-left: 0.5em; - padding-right: 0.5em; -} -.htmlform-tip { - font-size: x-small; - padding: .2em 2em; - color: #666; -} -#preferences div.mw-prefs-buttons { - padding: 1em; -} -#preferences div.mw-prefs-buttons input { - margin-right: 0.25em; -} - -/** - * The following code is slightly modified from monobook - */ -div#content { - line-height: 1.5em; -} -#bodyContent { - font-size: 0.8em; -} - -ul { - list-style-type: disc; - /* @embed */ - list-style-image: url(images/bullet-icon.png); -} - -pre, .mw-code { - line-height: 1.3em; -} - -/* Site Notice (includes notices from CentralNotice extension) */ -#siteNotice { - font-size: 0.8em; -} -#firstHeading { - padding-top: 0; - margin-top: 0; - font-size: 1.6em; -} -div#content a.external { - /* @embed */ - background: url(images/external-link-ltr-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="https://"], -.link-https { - /* @embed */ - background: url(images/lock-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="mailto:"], -.link-mailto { - /* @embed */ - background: url(images/mail-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="news:"] { - /* @embed */ - background: url(images/news-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="ftp://"], -.link-ftp { - /* @embed */ - background: url(images/file-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href ^="irc://"], -div#content a.external[href ^="ircs://"], -.link-irc { - /* @embed */ - background: url(images/talk-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"], -div#content a.external[href $=".mid"], div#content a.external[href $=".MID"], -div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"], -div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"], -div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"], -div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"], -.link-audio { - /* @embed */ - background: url(images/audio-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"], -div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"], -div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"], -div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"], -.link-video { - /* @embed */ - background: url(images/video-icon.png) center right no-repeat; - padding-right: 13px; -} -div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"], -div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"], -div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"], -.link-document { - /* @embed */ - background: url(images/document-icon.png) center right no-repeat; - padding-right: 13px; -} - -/* Icon for Usernames */ -#pt-userpage, -#pt-anonuserpage, -#pt-login { - /* @embed */ - background: url(images/user-icon.png) left top no-repeat; - /* SVG support using a transparent gradient to guarantee cross-browser - * compatibility (browsers able to understand gradient syntax support also SVG) */ - /* @embed */ - background-image: -webkit-linear-gradient(transparent, transparent), url(images/user-icon.svg); - /* @embed */ - background-image: linear-gradient(transparent, transparent), url(images/user-icon.svg); - padding-left: 15px !important; -} - -.redirectText { - font-size: 140%; -} - -.redirectMsg img { - vertical-align: text-bottom; -} - -#bodyContent { - position: relative; - width: 100%; -} -div#bodyContent { - line-height: 1.5em; -} - -/* mediawiki.notification */ -.skin-vector .mw-notification-area { - font-size: 0.8em; -} -.skin-vector .mw-notification-area-layout { - top: 7em; -} -.skin-vector .mw-notification { - background-color: #fff; - background-color: rgba(255, 255, 255, 0.93); - padding: 0.75em 1.5em; - border: solid 1px #a7d7f9; - border-radius: 0.75em; - -webkit-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125); - box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125); -} - -/* Watch/Unwatch Icon Styling */ -#ca-unwatch.icon a, -#ca-watch.icon a { - margin: 0; - padding: 0; - outline: none; - display: block; - width: 26px; - /* This hides the text but shows the background image */ - padding-top: 3.1em; - margin-top: 0; - /* Only applied in IE6 */ - margin-top: -0.8em !ie; - height: 0; - overflow: hidden; - /* @embed */ - background-image: url(images/watch-icons.png); -} -#ca-unwatch.icon a { - background-position: -43px 60%; -} -#ca-watch.icon a { - background-position: 5px 60%; -} -#ca-unwatch.icon a:hover, -#ca-unwatch.icon a:focus { - background-position: -67px 60%; -} -#ca-watch.icon a:hover, -#ca-watch.icon a:focus { - background-position: -19px 60%; -} -#ca-unwatch.icon a.loading, -#ca-watch.icon a.loading { - /* @embed */ - background-image: url(images/watch-icon-loading.gif); - background-position: 5px 60%; -} -#ca-unwatch.icon a span, -#ca-watch.icon a span { - display: none; -} -div.vectorTabs ul { - /* @embed */ - background-image: url(images/tab-break.png); - background-position: right bottom; - background-repeat: no-repeat; -} - -/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */ -.tipsy { - font-size: 0.8em; -} - -/* Animate between standard and high definition layouts */ - -body.vector-animateLayout div#content, -body.vector-animateLayout div#footer, -body.vector-animateLayout #left-navigation { - -moz-transition: margin-left 250ms, padding 250ms; - -webkit-transition: margin-left 250ms, padding 250ms; - -o-transition: margin-left 250ms, padding 250ms; - transition: margin-left 250ms, padding 250ms; -} -body.vector-animateLayout #p-logo { - -moz-transition: left 250ms; - -webkit-transition: left 250ms; - -o-transition: left 250ms; - transition: left 250ms; -} -body.vector-animateLayout #mw-panel { - -moz-transition: padding-left 250ms; - -webkit-transition: padding-left 250ms; - -o-transition: padding-left 250ms; - transition: padding-left 250ms; -} -body.vector-animateLayout #p-search { - -moz-transition: margin-right 250ms; - -webkit-transition: margin-right 250ms; - -o-transition: margin-right 250ms; - transition: margin-right 250ms; -} -body.vector-animateLayout #p-personal { - -moz-transition: right 250ms; - -webkit-transition: right 250ms; - -o-transition: right 250ms; - transition: right 250ms; -} -body.vector-animateLayout #mw-head-base { - -moz-transition: margin-left 250ms; - -webkit-transition: margin-left 250ms; - -o-transition: margin-left 250ms; - transition: margin-left 250ms; -} diff --git a/skins/vector/screen.less b/skins/vector/screen.less new file mode 100644 index 0000000000..cccdd7a9ac --- /dev/null +++ b/skins/vector/screen.less @@ -0,0 +1,820 @@ +/* + * Any rules which should not be flipped automatically in right-to-left situations should be + * prepended with @noflip in a comment block. Images that should be embedded as base64 data-URLs + * should be prepended with @embed in a comment block. + * + * This style-sheet employs a few CSS trick to accomplish compatibility with a wide range of web + * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using + * a rule that makes things work in IE6, and then following it with a rule that begins with + * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support + * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and + * "IGNORED BY IE6" comments. + */ +@import "mediawiki.mixins.less"; + +/* Framework */ +html, +body { + height: 100%; + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 1em; +} +body { + background-color: #f6f6f6; +} +/* Content */ +div#content { + margin-left: 10em; + padding: 1em; + /* Border on top, left, and bottom side */ + border: 1px solid #a7d7f9; + border-right-width: 0; + /* Merge the border with tabs' one (in their background image) */ + margin-top: -1px; + background-color: white; + color: black; + direction: ltr; +} +/* Hide, but keep accessible for screen-readers */ +#mw-navigation h2 { + position: absolute; + top: -9999px; +} +/* Head */ +#mw-page-base { + height: 5em; + background-color: white; + .background-image('images/page-fade.png'); + background-position: bottom left; + background-repeat: repeat-x; +} +#mw-head-base { + margin-top: -5em; + margin-left: 10em; + height: 5em; +} +div#mw-head { + position: absolute; + top: 0; + right: 0; + width: 100%; +} +div#mw-head h3 { + margin: 0; + padding: 0; +} +/* Hide empty portlets */ +div.emptyPortlet { + display: none; +} +/* Personal */ +#p-personal { + position: absolute; + top: 0.33em; + right: 0.75em; + /* Display on top of page tabs - bugs 37158, 48078 */ + z-index: 100; +} +#p-personal h3 { + display: none; +} +#p-personal ul { + list-style-type: none; + list-style-image: none; + margin: 0; + padding-left: 10em; /* Keep from overlapping logo */ +} +/* @noflip */ +#p-personal li { + line-height: 1.125em; + float: left; +} +/* This one flips! */ +#p-personal li { + margin-left: 0.75em; + margin-top: 0.5em; + font-size: 0.75em; + white-space: nowrap; +} +/* Navigation Containers */ +#left-navigation { + float: left; + margin-left: 10em; + margin-top: 2.5em; + /* When right nav would overlap left nav, it's placed below it + (normal CSS floats behavior). This rule ensures that no empty space + is shown between them due to right nav's margin-top. Page layout + is still broken, but at least the nav overlaps only the page title + instead of half the content. */ + margin-bottom: -2.5em; + /* IE 6 double-margin bug fix */ + display: inline; +} +#right-navigation { + float: right; + margin-top: 2.5em; +} +/* Navigation Labels */ +div.vectorTabs h3, +div.vectorMenu h3 span { + display: none; +} +/* Namespaces and Views */ +/* @noflip */ +div.vectorTabs { + float: left; + height: 2.5em; +} +div.vectorTabs { + .background-image('images/tab-break.png'); + background-position: bottom left; + background-repeat: no-repeat; + padding-left: 1px; +} +/* @noflip */ +div.vectorTabs ul { + float: left; +} +div.vectorTabs ul { + height: 100%; + list-style-type: none; + list-style-image: none; + margin: 0; + padding: 0; +} +/* @noflip */ +div.vectorTabs ul li { + float: left; +} +/* OVERRIDDEN BY COMPLIANT BROWSERS */ +div.vectorTabs ul li { + line-height: 1.125em; + display: inline-block; + height: 100%; + margin: 0; + padding: 0; + background-color: #f3f3f3; + .background-image('images/tab-normal-fade.png'); + background-position: bottom left; + background-repeat: repeat-x; + white-space: nowrap; +} +/* IGNORED BY IE6 */ +div.vectorTabs ul > li { + display: block; +} +div.vectorTabs li.selected { + .background-image('images/tab-current-fade.png'); +} +/* OVERRIDDEN BY COMPLIANT BROWSERS */ +div.vectorTabs li a { + display: inline-block; + height: 1.9em; + padding-left: 0.5em; + padding-right: 0.5em; + color: #0645ad; + cursor: pointer; + font-size: 0.8em; +} +/* IGNORED BY IE6 */ +div.vectorTabs li > a { + display: block; +} +div.vectorTabs li.icon a { + background-position: bottom right; + background-repeat: no-repeat; +} +/* OVERRIDDEN BY COMPLIANT BROWSERS */ +div.vectorTabs span a { + display: inline-block; + padding-top: 1.25em; +} +/* IGNORED BY IE6 */ +/* @noflip */ +div.vectorTabs span > a { + float: left; + display: block; +} +div.vectorTabs span { + display: inline-block; + .background-image('images/tab-break.png'); + background-position: bottom right; + background-repeat: no-repeat; +} +div.vectorTabs li.selected a, +div.vectorTabs li.selected a:visited{ + color: #333; + text-decoration: none; +} +div.vectorTabs li.new a, +div.vectorTabs li.new a:visited{ + color: #a55858; +} +/* Variants and Actions */ +/* @noflip */ +div.vectorMenu { + direction: ltr; + float: left; + /* SVG support using a transparent gradient to guarantee cross-browser + * compatibility (browsers able to understand gradient syntax support also SVG) */ + .background-image-svg('images/arrow-down-icon.svg', 'images/arrow-down-icon.png'); + background-position: 100% 60%; + background-repeat: no-repeat; + cursor: pointer; +} +div.vectorMenuFocus { + /* SVG support using a transparent gradient to guarantee cross-browser + * compatibility (browsers able to understand gradient syntax support also SVG) */ + .background-image-svg('images/arrow-down-focus-icon.svg', 'images/arrow-down-focus-icon.png'); + background-position: 100% 60%; +} +/* @noflip */ +body.rtl div.vectorMenu { + direction: rtl; +} +/* OVERRIDDEN BY COMPLIANT BROWSERS */ +/* @noflip */ +div#mw-head div.vectorMenu h3 { + float: left; + .background-image('images/tab-break.png'); + background-repeat: no-repeat; +} +/* This will be flipped - unlike the one above it */ +div#mw-head div.vectorMenu h3 { + background-position: bottom left; + margin-left: -1px; +} +/* IGNORED BY IE6 */ +div#mw-head div.vectorMenu > h3 { + background-image: none; +} +div#mw-head div.vectorMenu h4, +div.vectorMenu#p-variants #mw-vector-current-variant { + display: inline-block; + float: left; + font-size: 0.8em; + padding-left: 0.5em; + padding-top: 1.375em; + font-weight: normal; + border: none; +} +/* OVERRIDDEN BY COMPLIANT BROWSERS */ +/* @noflip */ +div.vectorMenu h3 a { + display: inline-block; + width: 24px; + height: 1.9em; + text-decoration: none; + .background-image('images/tab-break.png'); + background-repeat: no-repeat; +} +/* This will be flipped - unlike the one above it */ +div.vectorMenu h3 a { + background-position: bottom right; +} +/* IGNORED BY IE6 */ +div.vectorMenu h3 > a { + display: block; +} +div.vectorMenu div.menu { + position: relative; + display: none; + clear: both; + text-align: left; +} +/* OVERRIDDEN BY COMPLIANT BROWSERS */ +/* @noflip */ +body.rtl div.vectorMenu div.menu { + margin-left: 24px; +} +/* IGNORED BY IE6 */ +/* @noflip */ +body.rtl div.vectorMenu > div.menu { + margin-left: auto; +} +/* IGNORED BY IE6 */ +/* Also fixes old versions of FireFox */ +/* @noflip */ +body.rtl div.vectorMenu > div.menu, +x:-moz-any-link { + margin-left: 23px; +} +/* Enable forcing showing of the menu for accessibility */ +div.vectorMenu:hover div.menu, +div.vectorMenu div.menuForceShow { + display: block; +} +div.vectorMenu ul { + position: absolute; + background-color: white; + border: solid 1px silver; + border-top-width: 0; + list-style-type: none; + list-style-image: none; + padding: 0; + margin: 0; + margin-left: -1px; + text-align: left; +} +/* Fixes old versions of FireFox */ +div.vectorMenu ul, +x:-moz-any-link { + min-width: 5em; +} +/* Returns things back to normal in modern versions of FireFox */ +div.vectorMenu ul, +x:-moz-any-link, +x:default { + min-width: 0; +} +div.vectorMenu li { + padding: 0; + margin: 0; + text-align: left; + line-height: 1em; +} +/* OVERRIDDEN BY COMPLIANT BROWSERS */ +div.vectorMenu li a { + display: inline-block; + padding: 0.5em; + white-space: nowrap; + color: #0645ad; + cursor: pointer; + font-size: 0.8em; +} +/* IGNORED BY IE6 */ +div.vectorMenu li > a { + display: block; +} +div.vectorMenu li.selected a, +div.vectorMenu li.selected a:visited { + color: #333; + text-decoration: none; +} +/* Search */ +#p-search h3 { + display: none; +} +/* @noflip */ +#p-search { + float: left; +} +#p-search { + margin-right: 0.5em; + margin-left: 0.5em; +} +#p-search form, +#p-search input { + margin: 0; + margin-top: 0.4em; +} +div#simpleSearch { + display: block; + width: 14em; + height: 1.4em; + margin-top: 0.65em; + position: relative; + min-height: 1px; /* Gotta trigger hasLayout for IE7 */ + border: solid 1px #aaa; + color: black; + background-color: white; + .background-image('images/search-fade.png'); + background-position: top left; + background-repeat: repeat-x; +} +div#simpleSearch input:focus { + outline: none; +} +div#simpleSearch input.placeholder { + color: #999; +} +div#simpleSearch input::-webkit-input-placeholder { + color: #999; +} +div#simpleSearch input:-moz-placeholder { + color: #999; +} +div#simpleSearch input:-ms-input-placeholder { + color: #999; +} +div#simpleSearch input#searchInput { + position: absolute; + top: 0; + left: 0; + width: 90%; + margin: 0; + padding: 0; + padding-left: 0.2em; + padding-top: 0.2em; + padding-bottom: 0.2em; + outline: none; + border: none; + /* + * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent + * this from ever being shown anyways. + */ + font-size: 13px; + color: black; + background-color: transparent; + direction: ltr; +} +div#simpleSearch button#searchButton { + position: absolute; + width: 10%; + right: 0; + top: 0; + padding: 0; + padding-top: 0.3em; + padding-bottom: 0.2em; + padding-right: 0.4em; + margin: 0; + border: none; + cursor: pointer; + background-color: transparent; + background-image: none; +} +/* OVERRIDDEN BY COMPLIANT BROWSERS */ +div#simpleSearch button#searchButton img { + border: none; + margin: 0; + margin-top: -3px; + padding: 0; +} +/* IGNORED BY IE6 */ +div#simpleSearch button#searchButton > img { + margin: 0; +} +/* Panel */ +div#mw-panel { + position: absolute; + top: 160px; + padding-top: 1em; + width: 10em; + left: 0; +} +div#mw-panel div.portal { + padding-bottom: 1.5em; + direction: ltr; +} +div#mw-panel div.portal h3 { + font-weight: normal; + color: #444; + padding: 0.25em; + padding-top: 0; + padding-left: 1.75em; + cursor: default; + border: none; + font-size: 0.75em; +} +div#mw-panel div.portal div.body { + margin: 0; + padding-top: 0.5em; + margin-left: 1.25em; + .background-image('images/portal-break.png'); + background-repeat: no-repeat; + background-position: top left; +} +div#mw-panel div.portal div.body ul { + list-style-type: none; + list-style-image: none; + padding: 0; + margin: 0; +} +div#mw-panel div.portal div.body ul li { + line-height: 1.125em; + padding: 0; + padding-bottom: 0.5em; + margin: 0; + font-size: 0.75em; + word-wrap: break-word; +} +div#mw-panel div.portal div.body ul li a { + color: #0645ad; +} +div#mw-panel div.portal div.body ul li a:visited { + color: #0b0080; +} +/* Footer */ +div#footer { + margin-left: 10em; + margin-top: 0; + padding: 0.75em; + direction: ltr; +} +div#footer ul { + list-style-type: none; + list-style-image: none; + margin: 0; + padding: 0; +} +div#footer ul li { + margin: 0; + padding: 0; + padding-top: 0.5em; + padding-bottom: 0.5em; + color: #333; + font-size: 0.7em; +} +div#footer #footer-icons { + float: right; +} +/* @noflip */ +body.ltr div#footer #footer-places { + float: left; +} +div#footer #footer-info li { + line-height: 1.4em; +} +div#footer #footer-icons li { + float: left; + margin-left: 0.5em; + line-height: 2em; + text-align: right; +} +div#footer #footer-places li { + float: left; + margin-right: 1em; + line-height: 2em; +} +/* Logo */ +#p-logo { + position: absolute; + top: -160px; + left: 0; + width: 10em; + height: 160px; +} +#p-logo a { + display: block; + width: 10em; + height: 160px; + background-repeat: no-repeat; + background-position: center center; + text-decoration: none; +} + +/* + * + * The following code is highly modified from monobook. It would be nice if the + * preftoc id was more human readable like preferences-toc for instance, + * howerver this would require backporting the other skins. + */ + +/* Preferences */ +#preftoc { + /* Tabs */ + width: 100%; + float: left; + clear: both; + margin: 0 !important; + padding: 0 !important; + .background-image('images/preferences-break.png'); + background-position: bottom left; + background-repeat: no-repeat; +} + #preftoc li { + /* Tab */ + float: left; + margin: 0; + padding: 0; + padding-right: 1px; + height: 2.25em; + white-space: nowrap; + list-style-type: none; + list-style-image: none; + .background-image('images/preferences-break.png'); + background-position: bottom right; + background-repeat: no-repeat; + } + /* Sadly, IE6 won't understand this */ + #preftoc li:first-child { + margin-left: 1px; + } + #preftoc a, + #preftoc a:active { + display: inline-block; + position: relative; + color: #0645ad; + padding: 0.5em; + text-decoration: none; + background-image: none; + font-size: 0.9em; + } + #preftoc a:hover, + #preftoc a:focus { + text-decoration: underline; + } + #preftoc li.selected a { + .background-image('images/preferences-fade.png'); + background-position: bottom; + background-repeat: repeat-x; + color: #333; + text-decoration: none; + } +#preferences { + float: left; + width: 100%; + margin: 0; + margin-top: -2px; + clear: both; + border: solid 1px #ccc; + background-color: #fafafa; +} +#preferences fieldset { + border: none; + border-top: solid 1px #ccc; +} +#preferences fieldset.prefsection { + border: none; + padding: 0; + margin: 1em; +} +#preferences legend { + color: #666; +} +#preferences fieldset.prefsection legend.mainLegend { + display: none; +} +#preferences td { + padding-left: 0.5em; + padding-right: 0.5em; +} +.htmlform-tip { + font-size: x-small; + padding: .2em 2em; + color: #666; +} +#preferences div.mw-prefs-buttons { + padding: 1em; +} +#preferences div.mw-prefs-buttons input { + margin-right: 0.25em; +} + +/** + * The following code is slightly modified from monobook + */ +div#content { + line-height: 1.5em; +} +#bodyContent { + font-size: 0.8em; +} + +ul { + list-style-type: disc; + .list-style-image('images/bullet-icon.png'); +} + +pre, .mw-code { + line-height: 1.3em; +} + +/* Site Notice (includes notices from CentralNotice extension) */ +#siteNotice { + font-size: 0.8em; +} +#firstHeading { + padding-top: 0; + margin-top: 0; + font-size: 1.6em; +} + +/* Icon for Usernames */ +#pt-userpage, +#pt-anonuserpage, +#pt-login { + background-position: left top; + background-repeat: no-repeat; + /* SVG support using a transparent gradient to guarantee cross-browser + * compatibility (browsers able to understand gradient syntax support also SVG) */ + .background-image-svg('images/user-icon.svg', 'images/user-icon.png'); + padding-left: 15px !important; +} + +.redirectText { + font-size: 140%; +} + +.redirectMsg img { + vertical-align: text-bottom; +} + +#bodyContent { + position: relative; + width: 100%; +} +div#bodyContent { + line-height: 1.5em; +} + +/* mediawiki.notification */ +.skin-vector .mw-notification-area { + font-size: 0.8em; +} +.skin-vector .mw-notification-area-layout { + top: 7em; +} +.skin-vector .mw-notification { + background-color: #fff; + background-color: rgba(255, 255, 255, 0.93); + padding: 0.75em 1.5em; + border: solid 1px #a7d7f9; + border-radius: 0.75em; + -webkit-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125); + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125); +} + +/* Watch/Unwatch Icon Styling */ +#ca-unwatch.icon a, +#ca-watch.icon a { + margin: 0; + padding: 0; + outline: none; + display: block; + width: 26px; + /* This hides the text but shows the background image */ + padding-top: 3.1em; + margin-top: 0; + /* Only applied in IE6 */ + margin-top: -0.8em !ie; + height: 0; + overflow: hidden; + .background-image('images/watch-icons.png'); +} +#ca-unwatch.icon a { + background-position: -43px 60%; +} +#ca-watch.icon a { + background-position: 5px 60%; +} +#ca-unwatch.icon a:hover, +#ca-unwatch.icon a:focus { + background-position: -67px 60%; +} +#ca-watch.icon a:hover, +#ca-watch.icon a:focus { + background-position: -19px 60%; +} +#ca-unwatch.icon a.loading, +#ca-watch.icon a.loading { + .background-image('images/watch-icon-loading.gif'); + background-position: 5px 60%; +} +#ca-unwatch.icon a span, +#ca-watch.icon a span { + display: none; +} +div.vectorTabs ul { + .background-image('images/tab-break.png'); + background-position: right bottom; + background-repeat: no-repeat; +} + +/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */ +.tipsy { + font-size: 0.8em; +} + +/* Animate between standard and high definition layouts */ + +body.vector-animateLayout div#content, +body.vector-animateLayout div#footer, +body.vector-animateLayout #left-navigation { + -moz-transition: margin-left 250ms, padding 250ms; + -webkit-transition: margin-left 250ms, padding 250ms; + -o-transition: margin-left 250ms, padding 250ms; + transition: margin-left 250ms, padding 250ms; +} +body.vector-animateLayout #p-logo { + -moz-transition: left 250ms; + -webkit-transition: left 250ms; + -o-transition: left 250ms; + transition: left 250ms; +} +body.vector-animateLayout #mw-panel { + -moz-transition: padding-left 250ms; + -webkit-transition: padding-left 250ms; + -o-transition: padding-left 250ms; + transition: padding-left 250ms; +} +body.vector-animateLayout #p-search { + -moz-transition: margin-right 250ms; + -webkit-transition: margin-right 250ms; + -o-transition: margin-right 250ms; + transition: margin-right 250ms; +} +body.vector-animateLayout #p-personal { + -moz-transition: right 250ms; + -webkit-transition: right 250ms; + -o-transition: right 250ms; + transition: right 250ms; +} +body.vector-animateLayout #mw-head-base { + -moz-transition: margin-left 250ms; + -webkit-transition: margin-left 250ms; + -o-transition: margin-left 250ms; + transition: margin-left 250ms; +}