为什么chrome会为h*元素添加特定属性?

Wot*_*els 0 css google-chrome

我想知道为什么Chrome会将样式属性添加到<h>家族的标题元素中.当我添加这样的元素,并且没有特定的css标记时,chrome会添加以下内容:

h3 {
display: block;
font-size: 1.17em;
-webkit-margin-before: 1em;
-webkit-margin-after: 1em;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;
font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)

我必须用类似的东西覆盖它

h3{
    display: block;
    font-size: 1.2em;
    -webkit-margin-before: 0;
    -webkit-margin-after: 0;
    -webkit-margin-start: 0;
    -webkit-margin-end: 0;
    cursor: default;
    font-weight: normal;
}
Run Code Online (Sandbox Code Playgroud)

好吧,我可以接受他们将它设置为粗体并增加字体大小的部分,但为什么他们会改变边距呢?

我有时会觉得这很混乱,因为我重新安排了所说的元素,并想知道为什么行为<p><h>因为我忘了这个而不同.

或者只是我,我错过了重要的部分?

请原谅我的英语,尽我所能.

Fel*_*Als 5

停用CSS:你会理解为什么浏览器有一个默认的样式表(他们选择).

  • 想象一下列表中列表中没有任何padding/margin-left项目设置的列表:所有列表项目,无论它们的级别是左对齐还是非常难以阅读.
  • 没有1em的边距之间p,你无法判断2组句子是在两个不同的段落中还是只用a分开<br>(那个和折叠的边距......只是垂直的)
  • a默认情况下带下划线,并且我们已经习惯了这种蓝色.如果不是(带下划线和黑色?

所有这些都定义了文本的自然显示,在Lie和Bos发明CSS之前,这是纯HTML所必需的.

至于-start,-end,-before-after后缀,这仅仅是一个CSS3 不可知的表达上,右,下和左的方式.不可知的意思是语言可能是RTL(从左到右依次写成阿拉伯语和希伯来语)或LTR(从左到右依次为英语或法语)或从上到下的一天和从左到右的,无论主要方向和次要方向,你可以说以前,浏览器会从上下文中了解它是顶部还是左边...
但这是浏览器的内部结构:当然margin指令没有前缀,如果你甚至不关心RTL语言,它会长期与TRBL合作;)
所以继续简单的事情,比如

margin: 1em 10px 1.333em 20px
Run Code Online (Sandbox Code Playgroud)

编辑:CSS编写模式的
定义模块级别3 - 流程相对方向:

相对于页面上的内容流定义前,后,开始和结束的流相对方向.在LTR"水平-tb"写入模式中,它们分别对应于顶部,底部,左侧和右侧方向.