zoom:1的常見作用



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

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

設置zoom:1可以在IE6下清除浮動、解決margin導致的重疊等問題。

通常,當浮動子元素導致父元素塌陷的時候,只要給父元素加上overflow: hidden;來解決,但是對於IE不行,需要觸發其hasLayout屬性才可以。

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

hasLayout對於內聯元素也可以有效果,當內聯元素的hasLayout為true的時候,可以給這個內聯元素設定高度和寬度並得到期望的效果。具體關於hasLayout的知識點,可以另外搜索。

通常,在給低版本的IE做兼容的時候會用到zoom:1。例如,清除浮動的時候,我們會這么寫

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

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

為了實現inline-block的兼容的時候,我們會這么寫:{display: inline-block;*display:inline;*zoom:1;}因為在IE6、IE7下,只有設置在默認顯示方式為inline的元素上才會生效。前面說過,當內聯元素的hasLayout為true的時候,可以給這個內聯元素設定高度和寬度並得到期望的效果,所以這樣做可以達到兼容inline-block的效果。

這里還要補充一點,為什么*display:inline;*zoom:1;前面有*,*放在css屬性前面,表示這個屬性僅僅應用到Internet Explorer 7 以及以下版本。因為Internet Explorer 版本 7 以及以下承認非字母數字(除了下划線)前綴的屬性。所以這里,IE7以上的版本作用的是display: inline-block;而在IE7及以下的版本中作用的是display:inline;zoom:1。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM