参考原文链接:
魅族面试的一个问题,img是行内元素,为什么也可以设置框高?
简单说法:
置换元素就是会根据标签和属性来显示的元素。反之就是非置换元素了。
比如img根据src属性来显示,input根据type属性来显示,因此可知道img和input是置换元素,当然同理textarea, select,也是置换元素。
准确说法:
置换元素/替换元素
1.1. 一个 内容 不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素。
1.2. 置换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内容。
1.3. 例如浏览器会根据img标签的src属性的值来读取图片信息并显示出来,而如果查看(X)HTML代码,则看不到图片的实际内容;又例如根据input标签的type属性来决定是显示输入框,还是单选按钮等。
1.4. HTML中的img、input、textarea、select、object都是替换元素。这些元素往往没有实际的内容,即是一个空元素。
非置换元素/不可替换元素
2.1. HTML 的大多数元素是不可替换元素,即其内容直接表现给用户端(例如浏览器),如:
<!-- span是非置换元素 因此 hello word 被展示出来 而不是被替换成其他内容 -->
<span>hello word</span>