浏览器的HTML元素的默认CSS


146

在哪里可以找到浏览器的HTML元素默认CSS?

许多HTML元素都带有一些默认的CSS属性,这些属性有时可能会导致未知/有害的行为。例如,输入框在不同浏览器中的显示方式有所不同。我正在寻找一个涵盖新CSS3属性和新HTML5元素的地方。

我在其他(较旧的)问题(例如浏览器的默认CSS样式表)中也看到了答案,这些问题提出了CSS重置的解决方案。有时不需要这种解决方案,通常我实际上想保留一些基本属性(例如在Chrome中突出显示输入框)。换句话说:我不想仅仅因为我不知道它们在做什么而摆脱它们

那么,有没有一个网站可以为我提供所有(或也许大多数)这些信息?


3
不是站点,而是在chrome devleoper工具中,它显示继承的css规则,标记为“用户代理样式表”的规则将显示chrome的规则。抱歉,我帮不上忙。也:dowebsitesneed tolookexactlythesameineverybrowser.com
James Khoury

2
好问题!我同意,必须有某个地方可以提供所有这些信息。

仅需注意,reset.css不会停止基本操作。您的输入框仍将在Chrome中突出显示。您将失去所有浏览器之间的随机填充差异。因此,您可以在所有浏览器中以相同的行为开始(填充/边距/ ...明智)。
Jules

1
@James Khoury-Firebug也是如此。
罗布

@Rob当然!我忘了萤火虫
James Khoury

Answers:


93

可以在此处找到所有W3C HTML规范和供应商默认CSS样式表的GitHub存储库。

1. Firefox的默认样式

2. Internet Explorer的默认样式

3. Chrome / Webkit的默认样式

4. Opera的默认样式

5. HTML4的默认样式(W3C规范)

6. HTML5的默认样式(W3C规范)

根据默认W3C HTML4规范的示例:

html, address,
blockquote,
body, dd, div,
dl, dt, fieldset, form,
frame, frameset,
h1, h2, h3, h4,
h5, h6, noframes,
ol, p, ul, center,
dir, hr, menu, pre   { display: block; unicode-bidi: embed }
li              { display: list-item }
head            { display: none }
table           { display: table }
tr              { display: table-row }
thead           { display: table-header-group }
tbody           { display: table-row-group }
tfoot           { display: table-footer-group }
col             { display: table-column }
colgroup        { display: table-column-group }
td, th          { display: table-cell }
caption         { display: table-caption }
th              { font-weight: bolder; text-align: center }
caption         { text-align: center }
body            { margin: 8px }
h1              { font-size: 2em; margin: .67em 0 }
h2              { font-size: 1.5em; margin: .75em 0 }
h3              { font-size: 1.17em; margin: .83em 0 }
h4, p,
blockquote, ul,
fieldset, form,
ol, dl, dir,
menu            { margin: 1.12em 0 }
h5              { font-size: .83em; margin: 1.5em 0 }
h6              { font-size: .75em; margin: 1.67em 0 }
h1, h2, h3, h4,
h5, h6, b,
strong          { font-weight: bolder }
blockquote      { margin-left: 40px; margin-right: 40px }
i, cite, em,
var, address    { font-style: italic }
pre, tt, code,
kbd, samp       { font-family: monospace }
pre             { white-space: pre }
button, textarea,
input, select   { display: inline-block }
big             { font-size: 1.17em }
small, sub, sup { font-size: .83em }
sub             { vertical-align: sub }
sup             { vertical-align: super }
table           { border-spacing: 2px; }
thead, tbody,
tfoot           { vertical-align: middle }
td, th, tr      { vertical-align: inherit }
s, strike, del  { text-decoration: line-through }
hr              { border: 1px inset }
ol, ul, dir,
menu, dd        { margin-left: 40px }
ol              { list-style-type: decimal }
ol ul, ul ol,
ul ul, ol ol    { margin-top: 0; margin-bottom: 0 }
u, ins          { text-decoration: underline }
br:before       { content: "\A"; white-space: pre-line }
center          { text-align: center }
:link, :visited { text-decoration: underline }
:focus          { outline: thin dotted invert }

/* Begin bidirectionality settings (do not change) */
BDO[DIR="ltr"]  { direction: ltr; unicode-bidi: bidi-override }
BDO[DIR="rtl"]  { direction: rtl; unicode-bidi: bidi-override }

*[DIR="ltr"]    { direction: ltr; unicode-bidi: embed }
*[DIR="rtl"]    { direction: rtl; unicode-bidi: embed }

@media print {
  h1            { page-break-before: always }
  h1, h2, h3,
  h4, h5, h6    { page-break-after: avoid }
  ul, ol, dl    { page-break-before: avoid }
}

附带一提,很有趣的是看到nobrW3C的HTML5样式表中的臭名昭著的标签。
tomasz86 '16

还是最新的吗?
Webwoman

Firefox的链接不包含所有默认值。例如,它不包含textarea的默认CSS。您可以在resource://gre-resources/forms.css中找到它。通常,浏览resource:// gre-resources中的文件以查找所有默认信息。或对于所有浏览器,请参阅html.spec.whatwg.org/multipage/rendering.html
大卫·史派克

117

每个浏览器都不同,因此:

您还可以查看HTML5 Boilerplate样式表,该样式表 “使很多内容的显示正常化,而无需重新设置传统意义上的内容”。它还修复了许多错误/不一致。

也值得一看:https : //github.com/necolas/normalize.css/blob/master/normalize.css


2
有趣的是,这些内容与我在回答上述问题时所回答的内容大致相同,这显然是“过时的”。虽然我只在两天前添加了IE链接。
robertc 2011年

1
@nayish您认为浏览器默认值之外还有什么?
robertc 2011年

1
@nayish除了浏览器已在其默认样式表中实现的内容之外,HTML元素的默认CSS没有单独的定义
robertc 2011年

1
@nayish 在规范中针对每个单独的属性进行了指定,不过请注意,不透明性不是从CSS 继承
robertc 2011年

2
只需注意一下,HTML5样板比标准化CSS还要多。为了使CSS标准化,他们使用Normalize工具:necolas.github.com/normalize.css
等待开发...


0

尽管这是一个古老的跨浏览器问题,但由于每个浏览器都有自己的呈现和行为,并带有一些html元素(如medias和input元素),所以我们现在可以在2017年非常安全地在它们之上使用css 过滤器属性。

这样就可以提供带有色相-旋转滤镜的调色板,从而可以很好地呈现跨浏览器的效果。

以下代码片段展示了一种使用输入类型的颜色在具有javascript的视频元素上实时呈现此效果的方法。

要仅使用css,必须使用以下每个滤镜都是强制性的:棕褐色不为0,高饱和度,灰度为0,高对比度,然后按照我的测试给出具有hue-rotate属性的颜色。反向滤波器不是强制性的,但会产生一些深远的影响。

同样,阴影过滤器在跨浏览器中也能很好地工作。像这样使用:filter:drop-shadow(2px 20px 50px red)[X,Y,RADIUS,COLOR]

function styloElem() {
  stylo.dataset.hue = ((parseInt(stylo.value.substring(1), 16))/46666).toFixed(0)
  
  media.style.cssText += ";filter:sepia(100%) saturate(1000%)grayscale(0)contrast(200%)hue-rotate("+ stylo.dataset.hue+"deg)invert("+(stylo.dataset.hue/3.6)+"%)"

}
styloElem()
body {
  text-align:center;
  background:#001;
  color: white
}
video {
  width:500px;max-width:500px
}
Colors: 
<input 
       type="color"
       id="stylo"
       oninput="styloElem()"
       class="media"
       data-hue="0" />

<br><br> 

<video 
       controls
       id="media"        
       onplay="this.removeAttribute('controls');this.style.all='unset'"     
       onpause="this.controls='controls';styloElem()"
       src="https://ia600206.us.archive.org/7/items/MysteresDarchives-Saison04/1944%2c%20Dans%20le%20maquis%20du%20Vercors.ogv"></video>

我可以使用CSS过滤器:

http://caniuse.com/#feat=css-filters

我围绕css过滤器制作的工具栏,该注释来自何处:

https://github.com/webdev23/ponyFilters

一个更完整的Codepen示例:

http://codepen.io/Nico_KraZhtest/pen/bWExEB/


似乎有点不对,您是对的!这是我迄今为止的辛勤工作。由于这只是CSS,因此不会改变浏览器元素的行为,但是可以提供一种方法,在任何浏览器中以相同的颜色/亮度呈现这种元素,而无需为每个元素编写特殊的代码。在提出问题时这是不可行的。谢谢。
NVRM
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.