什麼是可替換元素?

樂亦慄發表於2019-04-02

最近在群聊裡偶然看到有位仁兄發了張今日頭條前端面試題的截圖,其中關於 HTML 的只有一題,如下:

請問什麼是可替換元素和非可替換元素,它們的差異是什麼?並舉例說明。

前端面試中 HTML 的題目本來就最少,而且並不難,翻來覆去也就那幾樣。我們之前已經談到過最經典的 HTML 語義化 ,今天就藉此機會來談談可替換元素。

釋義

什麼是可替換元素?顧名思義,就是會被替換的元素。? (尬笑……

比如一個典型的可替換元素 img

<img src=xxx.jpg>
複製程式碼

我們並沒有在 img 標籤中寫入任何內容,那它的內容從哪裡來的呢?

是瀏覽器去下載 src 屬性給到的圖片,並用該圖片資源替換掉 img 標籤,而且瀏覽器在下載前並不知道圖片的寬高。所以,可替換元素比較特殊,它的寬高是由其載入的內容決定的。(當然 CSS 可以覆蓋其樣式)

示例

還是用 img 標籤舉幾個例子:

<img src="https://avatars2.githubusercontent.com/u/17703242?s=460&v=4">
複製程式碼

該圖片在頁面中展現出來的話,就是圖片本身本身的寬高。

img 元素也支援 widthheight 屬性:

<img width="80" height="80" src="https://avatars2.githubusercontent.com/u/17703242?s=460&v=4">
複製程式碼

此時該元素展現出來就是寬高為 80 畫素。

如果我們再用 CSS 去覆蓋其樣式:

img {
  width: 60px;
  height: 60px;
}
複製程式碼

該元素的展現即為 60 畫素。

MDN 的釋義

看過上面的例子之後我們再來理解概念性的知識就比較容易了。

可替換元素replaced element)的展現效果不是由 CSS 來控制的。這些元素是一種外部物件,它們外觀的渲染,是獨立於 CSS 的。

簡單來說,它們的內容不受當前文件的樣式的影響。CSS 可以影響可替換元素的位置,但不會影響到可替換元素自身的內容。

典型的可替換元素有 <iframe> <video> <embed> <img> ,還有一些元素僅在特定情況下被作為可替換元素處理,比如 <input>

瞭解更多可以戳 這裡

(完)

相關文章