很多網站都是習慣使用<i></i>來代表小圖標?而實際上用 <i> 元素做圖標在語義上是不正確的(雖然看起來像 icon 的縮寫),那么用<i>表示小icon,是出於好記的原因嗎,還是看上去有點像icon?這樣不是違背了語義化的原則嗎?
在語義上<i> 標簽顯示斜體文本效果,它告訴瀏覽器將包含其中的文本以斜體字或者傾斜字體顯示。從含義上可以看出<i>並不具有icon的語義。所以如果遵循語義最好還是使用<span>,目前3.X的版本里面顯示圖片由之前的<i>改為了<span>,例如:
1 <!--在2.X的版本里面的圖表組件是--> 2 <i class="icon-search"></i> 3 <!--在3.X的版本里面的組建改回了span--> 4 <span class="glyphicon glyphicon-search"></span>
在一些字體庫中通常也是使用i來代表icon的。例如font-awesome字體庫中就是使用<i>來顯示圖標字體的,它的好處是毋庸置疑的:1.矢量(無限縮放、高清)、2.CSS樣式(通用、靈活)、3.體積更小(快速)。
1 <i class="fa fa-spinner fa-spin"></i>
網上還流行一種顯示方式:通過<i>標題的偽類來顯示圖標,配合 ::before 或者::after偽元素實現,因為沒有內容,讀屏器不會朗讀(這樣即使有特殊處理也跳過了),機器理解起來應該也沒什么影響。使用偽類的好處就是:插入的內容在頁面的源碼里是不可見的,只能在css里可見。
總結:
由於html中標簽的現狀是: “愛怎么用就怎么用,哪個瀏覽器也不會難為你” ,內聯元素和塊級元素都能通過display相互轉換,由此可見標簽的靈活性,使用不遵循語義這個問題,主要是因為遵循並沒有帶來什么實質的好處。所以是否使用<i>標簽來作為小圖標?就看個人喜好吧。