最近在群聊里偶然看到有位仁兄发了张今日头条前端面试题的截图,其中关于 HTML 的只有一题,以下:css
请问什么是可替换元素和非可替换元素,它们的差别是什么?并举例说明。
前端面试中 HTML 的题目原本就最少,并且并不难,翻来覆去也就那几样。咱们以前已经谈到过最经典的 HTML 语义化 ,今天就借此机会来谈谈可替换元素。html
什么是可替换元素?顾名思义,就是会被替换的元素。😅 (尬笑……前端
好比一个典型的可替换元素 img
:git
<img src=xxx.jpg>
咱们并无在 img
标签中写入任何内容,那它的内容从哪里来的呢?github
是浏览器去下载 src 属性给到的图片,并用该图片资源替换掉 img
标签,并且浏览器在下载前并不知道图片的宽高。因此,可替换元素比较特殊,它的宽高是由其加载的内容决定的。(固然 CSS 能够覆盖其样式)面试
仍是用 img
标签举几个例子:浏览器
<img src="https://avatars2.githubusercontent.com/u/17703242?s=460&v=4">
该图片在页面中展示出来的话,就是图片自己自己的宽高。ide
img
元素也支持 width
和 height
属性:code
<img width="80" height="80" src="https://avatars2.githubusercontent.com/u/17703242?s=460&v=4">
此时该元素展示出来就是宽高为 80 像素。htm
若是咱们再用 CSS 去覆盖其样式:
img { width: 60px; height: 60px; }
该元素的展示即为 60 像素。
看过上面的例子以后咱们再来理解概念性的知识就比较容易了。
可替换元素( replaced element)的展示效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的。简单来讲,它们的内容不受当前文档的样式的影响。CSS 能够影响可替换元素的位置,但不会影响到可替换元素自身的内容。
典型的可替换元素有 <iframe>
<video>
<embed>
<img>
,还有一些元素仅在特定状况下被做为可替换元素处理,好比 <input>
。
了解更多能够戳 这里 。
(完)