使用 clear 屬性清除浮動(dòng)的原理?
使用 clear 屬性清除浮動(dòng),其語法如下:
如果單看字面意思,clear:left 是“清除左浮動(dòng)”,clear:right 是“清除右浮動(dòng)”,實(shí)際上,這種解釋是有問題的,因?yàn)楦?dòng)一直還在,并沒有清除。
官方對(duì) clear 屬性解釋:“元素盒子的邊不能和前面的浮動(dòng)元素相鄰”,對(duì)元素設(shè)置 clear 屬性是為了避免浮動(dòng)元素對(duì)該元素的影響,而不是清除掉浮動(dòng)。
還需要注意 clear 屬性指的是元素盒子的邊不能和前面的浮動(dòng)元素相鄰,注意這里“前面的”3 個(gè)字,也就是 clear 屬性對(duì)“后面的”浮動(dòng)元素是不聞不問的??紤]到 float 屬性要么是 left,要么是 right,不可能同時(shí)存在,同時(shí)由于 clear 屬性對(duì)“后面的”浮動(dòng)元素不聞不問,因此,當(dāng) clear:left 有效的時(shí)候,clear:right 必定無效,也就是此時(shí) clear:left 等同于設(shè)置 clear:both;同樣地,clear:right 如果有效也是等同于設(shè)置 clear:both。由此可見,clear:left 和 clear:right 這兩個(gè)聲明就沒有任何使用的價(jià)值,至少在 CSS 世界中是如此,直接使用 clear:both 吧。
一般使用偽元素的方式清除浮動(dòng):
clear 屬性只有塊級(jí)元素才有效的,而::after 等偽元素默認(rèn)都是內(nèi)聯(lián)水平,這就是借助偽元素清除浮動(dòng)影響時(shí)需要設(shè)置 display 屬性值的原因。