zoom:1的常見做用

zoom是IE專用屬性,firefox等是不支持的。它的原本做用是設置或檢索對象的縮放比例,但這做用幾乎用不到。css

可讓網頁實現IE7中的放大縮小功能。好比你想讓你的網頁縮小爲原來的一半,那麼就在body中加入style="zoom:0.5"web

 

設置zoom:1能夠在IE6下清除浮動、解決margin致使的重疊等問題。瀏覽器

 

一般,當浮動子元素致使父元素塌陷的時候,只要給父元素加上overflow: hidden;來解決,可是對於IE不行,須要觸發其hasLayout屬性才能夠。 spa

 

zoom:1就是IE6 專用的 觸發 haslayout 屬性的。hasLayout是IE特有的一個屬性。不少的IE下的css bug都與其息息相關。在IE中,一個元素要麼本身對自身的內容進行計算大小和組織,要麼依賴於父元素來計算尺寸和組織內容。當一個元素的hasLayout屬性值爲true時,它負責對本身和可能的子孫元素進行尺寸計算和定位。firefox

hasLayout對於內聯元素也能夠有效果,當內聯元素的hasLayout爲true的時候,能夠給這個內聯元素設定高度和寬度並獲得指望的效果。具體關於hasLayout的知識點,能夠另外搜索。對象

 

一般,在給低版本的IE作兼容的時候會用到zoom:1。例如,清除浮動的時候,咱們會這麼寫it

.clearfix::after{content: ".";clear: both;display: block;visibility: hidden;overflow: hidden;height: 0;*zoom:1}class

爲了防止低版本的IE瀏覽器不支持after選擇器或者某些屬性,在最後加上zoom:1來清除浮動。搜索

 

爲了實現inline-block的兼容的時候,咱們會這麼寫:{display: inline-block;*display:inline;*zoom:1;}由於在IE六、IE7下,只有設置在默認顯示方式爲inline的元素上纔會生效。前面說過,當內聯元素的hasLayout爲true的時候,能夠給這個內聯元素設定高度和寬度並獲得指望的效果,因此這樣作能夠達到兼容inline-block的效果。webkit

這裏還要補充一點,爲何*display:inline;*zoom:1;前面有*,*放在css屬性前面,表示這個屬性僅僅應用到Internet Explorer 7 以及如下版本。由於Internet Explorer 版本 7 以及如下認可非字母數字(除了下劃線)前綴的屬性。因此這裏,IE7以上的版本做用的是display: inline-block;而在IE7及如下的版本中做用的是display:inline;zoom:1。

相關文章
相關標籤/搜索