gecko-dev/layout/style/quirk.css

290 строки
10 KiB
CSS
Исходник Обычный вид История

/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the NPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
/* Quirk: input images have a blue border (b=28010) */
/* default border */
input[type=image] {
border: 2px solid blue;
}
/* border when focused -- only change style to dotted */
input[type=image]:focused {
border-style: dotted;
}
/* border when focused -- only change color to gray */
input[type=image][disabled] {
border-color: GrayText;
}
/* Quirk: make orphaned LIs have inside bullet (b=1049) */
/* force inside position for orphaned lis */
li {
list-style-position: inside;
}
/* restore outside position for lists inside LIs */
li ul, li ol, li dir, li menu {
list-style-position: outside;
}
/* undo previous two rules for properly nested lists */
ul ul, ul ol, ul dir, ul menu, ul li,
ol ul, ol ol, ol dir, ol menu, ol li,
dir ul, dir ol, dir dir, dir menu, dir li,
menu ul, menu ol, menu dir, menu menu, menu li {
list-style-position: inherit;
}
/* Quirk: ensure that we get proper padding if the very first
* node in an LI is another UL or OL. This is an ugly way to
* fix the problem, because it extends the LI up into what
* would otherwise appear to be the ULs space. (b=38832) */
/* Note: this fix will fail once we implement marker box
* alignment correctly. */
li > ul:first-node,
li > ol:first-node {
padding-top: 1em;
}
/* Quirk: prevent bullet from resizing with the list item
* see bug 97351
*/
li:-moz-list-bullet {
font-size: -moz-initial;
}
/* Quirk: cut off all font inheritance in tables and captions except for family. */
table, caption {
font-size: -moz-initial;
font-weight: -moz-initial;
font-style: -moz-initial;
font-variant: -moz-initial;
}
table {
text-align: -moz-initial;
white-space: normal; /* compatible with IE & spec */
line-height: normal;
}
/* Quirk: collapse top margin of BODY and TD and bottom margin of TD */
/*
* While it may seem simpler to use :first-node and :last-node without
* tags, it's slower, since we have to do the :first-node or :last-node
* check on every single element in the document. If we list all the
* element names for which the UA stylesheet specifies a margin, the
* selectors will be hashed in the RuleHash and things will be much more
* efficient.
*/
body > form:first-node, td > form:first-node, th > form:first-node,
body > p:first-node, td > p:first-node, th > p:first-node,
body > dl:first-node, td > dl:first-node, th > dl:first-node,
body > multicol:first-node, td > multicol:first-node, th > multicol:first-node,
body > blockquote:first-node, td > blockquote:first-node, th > blockquote:first-node,
body > h1:first-node, td > h1:first-node, th > h1:first-node,
body > h2:first-node, td > h2:first-node, th > h2:first-node,
body > h3:first-node, td > h3:first-node, th > h3:first-node,
body > h4:first-node, td > h4:first-node, th > h4:first-node,
body > h5:first-node, td > h5:first-node, th > h5:first-node,
body > h6:first-node, td > h6:first-node, th > h6:first-node,
body > listing:first-node, td > listing:first-node, th > listing:first-node,
body > plaintext:first-node, td > plaintext:first-node, th > plaintext:first-node,
body > xmp:first-node, td > xmp:first-node, th > xmp:first-node,
body > pre:first-node, td > pre:first-node, th > pre:first-node,
body > ul:first-node, td > ul:first-node, th > ul:first-node,
body > menu:first-node, td > menu:first-node, th > menu:first-node,
body > dir:first-node, td > dir:first-node, th > dir:first-node,
body > ol:first-node, td > ol:first-node, th > ol:first-node {
margin-top: 0;
}
td > form:last-node, th > form:last-node,
td > p:last-node, th > p:last-node,
td > dl:last-node, th > dl:last-node,
td > multicol:last-node, th > multicol:last-node,
td > blockquote:last-node, th > blockquote:last-node,
td > h1:last-node, th > h1:last-node,
td > h2:last-node, th > h2:last-node,
td > h3:last-node, th > h3:last-node,
td > h4:last-node, th > h4:last-node,
td > h5:last-node, th > h5:last-node,
td > h6:last-node, th > h6:last-node,
td > listing:last-node, th > listing:last-node,
td > plaintext:last-node, th > plaintext:last-node,
td > xmp:last-node, th > xmp:last-node,
td > pre:last-node, th > pre:last-node,
td > ul:last-node, th > ul:last-node,
td > menu:last-node, th > menu:last-node,
td > dir:last-node, th > dir:last-node,
td > ol:last-node, th > ol:last-node {
margin-bottom: 0;
}
/* Similar as above, but for empty elements
* collapse the bottom or top margins of empty elements
* - see bug 97361
*/
body > form:empty:first-node, td > form:empty:first-node, th > form:empty:first-node,
body > p:empty:first-node, td > p:empty:first-node, th > p:empty:first-node,
body > dl:empty:first-node, td > dl:empty:first-node, th > dl:empty:first-node,
body > multicol:empty:first-node, td > multicol:empty:first-node, th > multicol:empty:first-node,
body > blockquote:empty:first-node, td > blockquote:empty:first-node, th > blockquote:empty:first-node,
body > h1:empty:first-node, td > h1:empty:first-node, th > h1:empty:first-node,
body > h2:empty:first-node, td > h2:empty:first-node, th > h2:empty:first-node,
body > h3:empty:first-node, td > h3:empty:first-node, th > h3:empty:first-node,
body > h4:empty:first-node, td > h4:empty:first-node, th > h4:empty:first-node,
body > h5:empty:first-node, td > h5:empty:first-node, th > h5:empty:first-node,
body > h6:empty:first-node, td > h6:empty:first-node, th > h6:empty:first-node,
body > listing:empty:first-node, td > listing:empty:first-node, th > listing:empty:first-node,
body > plaintext:empty:first-node, td > plaintext:empty:first-node, th > plaintext:empty:first-node,
body > xmp:empty:first-node, td > xmp:empty:first-node, th > xmp:empty:first-node,
body > pre:empty:first-node, td > pre:empty:first-node, th > pre:empty:first-node,
body > ul:empty:first-node, td > ul:empty:first-node, th > ul:empty:first-node,
body > menu:empty:first-node, td > menu:empty:first-node, th > menu:empty:first-node,
body > dir:empty:first-node, td > dir:empty:first-node, th > dir:empty:first-node,
body > ol:empty:first-node, td > ol:empty:first-node, th > ol:empty:first-node {
margin-bottom: 0;
}
td > form:empty:last-node, th > form:empty:last-node,
td > p:empty:last-node, th > p:empty:last-node,
td > dl:empty:last-node, th > dl:empty:last-node,
td > multicol:empty:last-node, th > multicol:empty:last-node,
td > blockquote:empty:last-node, th > blockquote:empty:last-node,
td > h1:empty:last-node, th > h1:empty:last-node,
td > h2:empty:last-node, th > h2:empty:last-node,
td > h3:empty:last-node, th > h3:empty:last-node,
td > h4:empty:last-node, th > h4:empty:last-node,
td > h5:empty:last-node, th > h5:empty:last-node,
td > h6:empty:last-node, th > h6:empty:last-node,
td > listing:empty:last-node, th > listing:empty:last-node,
td > plaintext:empty:last-node, th > plaintext:empty:last-node,
td > xmp:empty:last-node, th > xmp:empty:last-node,
td > pre:empty:last-node, th > pre:empty:last-node,
td > ul:empty:last-node, th > ul:empty:last-node,
td > menu:empty:last-node, th > menu:empty:last-node,
td > dir:empty:last-node, th > dir:empty:last-node,
td > ol:empty:last-node, th > ol:empty:last-node {
margin-top: 0;
}
/* Quirk: support the ways of making PRE have wrapping */
pre[wrap], pre[cols], pre[width] {
white-space: -moz-pre-wrap;
}
/* Quirk: HRs avoid floats (b=18754) */
bug 14280 nsTextTransformer.cpp. I moved where we translate the nbsp to a (ascii 32 space character) until after the i18n routines are called, so they can properly account for the space as non-breaking and therefore part of the first word in the block. bug 39901 and 38396 nsHTMLImageLoader.*, nsImageFrame.cpp I backed out the bad fix for 38396, and put in a new fix where I store a little state in the image loader flags for cases where the image gets an unconstrained reflow and has %-based width. This does not handle %-based min-width or max-width, that would be a separate bug that I'll file shortly. But this fixes the vast majority of real cases out there. bug 18754 nsHRFrame.cpp, quirks.css, nsCSSFrameConstructor.cpp, last part of nsLineLayout.cpp in quirks mode, I changed HR from a block element to a replaced inline element that acts like a block, using generated content to get newlines before and after the HR. This isn't ideal, but it gets us backwards compatibility, and ian and dbaron have blessed the approach. bug 50257 nsLineLayout.cpp Did a couple of things in here: * The actual fix is controlled by FIX_BUG_50257 #define symbol. This basically says that an break (BR) will always fit on a line. A more general solution would probably be to round up to the nearest pixel, and if the thing is less than a pixel make it fit on a line. This is a wimpier, safer solution. * I noticed that the way we got the compatibility mode was way out of date, very wasteful. So I fixed that. * I noticed that there were a bunch of redundant SetFlag calls. Since the flag variable is initialized to 0, setting a flag to 0 on a newly created object is a waste. nsBlockFrame.cpp -- just added a comment to some odd looking code, to make sure no one comes along later and breaks it
2000-09-12 01:15:02 +04:00
hr {
display: inline;
-moz-box-sizing: border-box;
margin: 0 0.1% 0 0.1%; /* Mmm! Hack-on-a-hack for bug 81776 */
font-size: -moz-initial !important;
bug 14280 nsTextTransformer.cpp. I moved where we translate the nbsp to a (ascii 32 space character) until after the i18n routines are called, so they can properly account for the space as non-breaking and therefore part of the first word in the block. bug 39901 and 38396 nsHTMLImageLoader.*, nsImageFrame.cpp I backed out the bad fix for 38396, and put in a new fix where I store a little state in the image loader flags for cases where the image gets an unconstrained reflow and has %-based width. This does not handle %-based min-width or max-width, that would be a separate bug that I'll file shortly. But this fixes the vast majority of real cases out there. bug 18754 nsHRFrame.cpp, quirks.css, nsCSSFrameConstructor.cpp, last part of nsLineLayout.cpp in quirks mode, I changed HR from a block element to a replaced inline element that acts like a block, using generated content to get newlines before and after the HR. This isn't ideal, but it gets us backwards compatibility, and ian and dbaron have blessed the approach. bug 50257 nsLineLayout.cpp Did a couple of things in here: * The actual fix is controlled by FIX_BUG_50257 #define symbol. This basically says that an break (BR) will always fit on a line. A more general solution would probably be to round up to the nearest pixel, and if the thing is less than a pixel make it fit on a line. This is a wimpier, safer solution. * I noticed that the way we got the compatibility mode was way out of date, very wasteful. So I fixed that. * I noticed that there were a bunch of redundant SetFlag calls. Since the flag variable is initialized to 0, setting a flag to 0 on a newly created object is a waste. nsBlockFrame.cpp -- just added a comment to some odd looking code, to make sure no one comes along later and breaks it
2000-09-12 01:15:02 +04:00
}
hr:before {
bug 14280 nsTextTransformer.cpp. I moved where we translate the nbsp to a (ascii 32 space character) until after the i18n routines are called, so they can properly account for the space as non-breaking and therefore part of the first word in the block. bug 39901 and 38396 nsHTMLImageLoader.*, nsImageFrame.cpp I backed out the bad fix for 38396, and put in a new fix where I store a little state in the image loader flags for cases where the image gets an unconstrained reflow and has %-based width. This does not handle %-based min-width or max-width, that would be a separate bug that I'll file shortly. But this fixes the vast majority of real cases out there. bug 18754 nsHRFrame.cpp, quirks.css, nsCSSFrameConstructor.cpp, last part of nsLineLayout.cpp in quirks mode, I changed HR from a block element to a replaced inline element that acts like a block, using generated content to get newlines before and after the HR. This isn't ideal, but it gets us backwards compatibility, and ian and dbaron have blessed the approach. bug 50257 nsLineLayout.cpp Did a couple of things in here: * The actual fix is controlled by FIX_BUG_50257 #define symbol. This basically says that an break (BR) will always fit on a line. A more general solution would probably be to round up to the nearest pixel, and if the thing is less than a pixel make it fit on a line. This is a wimpier, safer solution. * I noticed that the way we got the compatibility mode was way out of date, very wasteful. So I fixed that. * I noticed that there were a bunch of redundant SetFlag calls. Since the flag variable is initialized to 0, setting a flag to 0 on a newly created object is a waste. nsBlockFrame.cpp -- just added a comment to some odd looking code, to make sure no one comes along later and breaks it
2000-09-12 01:15:02 +04:00
white-space: pre;
content: "\A";
}
hr:after {
bug 14280 nsTextTransformer.cpp. I moved where we translate the nbsp to a (ascii 32 space character) until after the i18n routines are called, so they can properly account for the space as non-breaking and therefore part of the first word in the block. bug 39901 and 38396 nsHTMLImageLoader.*, nsImageFrame.cpp I backed out the bad fix for 38396, and put in a new fix where I store a little state in the image loader flags for cases where the image gets an unconstrained reflow and has %-based width. This does not handle %-based min-width or max-width, that would be a separate bug that I'll file shortly. But this fixes the vast majority of real cases out there. bug 18754 nsHRFrame.cpp, quirks.css, nsCSSFrameConstructor.cpp, last part of nsLineLayout.cpp in quirks mode, I changed HR from a block element to a replaced inline element that acts like a block, using generated content to get newlines before and after the HR. This isn't ideal, but it gets us backwards compatibility, and ian and dbaron have blessed the approach. bug 50257 nsLineLayout.cpp Did a couple of things in here: * The actual fix is controlled by FIX_BUG_50257 #define symbol. This basically says that an break (BR) will always fit on a line. A more general solution would probably be to round up to the nearest pixel, and if the thing is less than a pixel make it fit on a line. This is a wimpier, safer solution. * I noticed that the way we got the compatibility mode was way out of date, very wasteful. So I fixed that. * I noticed that there were a bunch of redundant SetFlag calls. Since the flag variable is initialized to 0, setting a flag to 0 on a newly created object is a waste. nsBlockFrame.cpp -- just added a comment to some odd looking code, to make sure no one comes along later and breaks it
2000-09-12 01:15:02 +04:00
white-space: pre;
content: "\A";
}
/* Quirk: DD not in DL has text-indent instead of margin (b=5119) */
:not(dl) > dd {
display: inline;
margin: 0;
}
:not(dl) > dd:before {
display: inline;
white-space: pre;
font-size: 1px;
line-height: 0;
content: "\A ";
margin-right: 40px;
}
/* quirk to indent nested DL elements (b=8749) */
dl > dl {
display: block;
margin-left: 40px;
}
/* Quirk: MAP acts like an inline, not a block */
map {
display: inline;
}
/* Quirk: Make floated images have a margin (b=58899) */
img[align=left] {
margin-right: 3px;
}
img[align=right] {
margin-left: 3px;
}
/*
* XXX This is a potential performance problem. This should not be
* using an attribute!
*/
/* Quirk: Make sure that the residual style tags' size info.
* does not take precedence over heading tags' size. (b=77352)
* Note: This special attribute is set only for a residual
* style tag within a heading tag.
*/
*[_moz-rs-heading] {
font-size: inherit !important;
}