可替换元素
在 CSS 中,一个可替换元素的展现效果不是由 CSS 控制的,它们是外部对象,且表现形式独立于 CSS 格式化模型。
简单来讲,它们的内容不受当前文档的样式的影响。使用 CSS 可影响可替换元素的位置,但不会影响可替换元素自身的内容。某些可替换元素,比如<iframe>
元素,可能有其自身的样式表,但它们不会继承父文档的样式。
CSS 对可替换元素的唯一其他影响在于,有些属性支持控制元素内容在其框内的位置。详细内容,控制内容框中的对象位置
需要注意:一部分(并非全部)可替换元素,本身有尺寸和基线,会被像vertical-align
之类的一些 CSS 属性用到。
浏览器会根据元素的标签类型和属性来显示这些元素。可替换元素也在其中生成了框,其可替换元素通常有其固有尺寸(intrinsic dimensions):一个固有宽度,一个固有高度,一个固有的宽高比率。根据 W3C 文档,有且仅有全体替换元素具有固有尺寸的
- 典型的可替换元素:
<iframe>
<video>
<embed>
<img>
- 在特定情况下被作为可替换元素处理:
<option>
<audio>
<object>
<applet>
<input>
- 匿名的可替换元素:用 CSS
content
属性插入的对象是匿名的可替换元素,它们不存在于 HTML 标记中,因此”匿名的”。
非替换元素
html 中大多数元素都是非替换元素,其内容在元素本身生成的框中生成。
元素的显示
替换元素
- 可以增加行框高度,但不影响行高(line-height);
- 内容区域高度值=padding-top + pagging-bottom + margin-top + margin-bottom + height;
- 替换元素居中,可设置 line-height = height
- 行内替换元素设置上下内边距,会撑开父元素。
非替换元素
- 行内非替换元素,padding-top,padding-bottom,不影响行框高度,但内容区域高度会变化,也不会撑开父元素。
- margin-top,margin-bottom,对行框没有影响
- margin-left,margin-right,会影响非替换元素水平位置
- 行内元素 设置 padding-left,padding-right,可见。
- 行内非替换元素,不能设置垂直方向上的 margin 和 padding。