jQuery1.8的幾個小變化

openkk 12年前發布 | 8K 次閱讀 jQuery

一,.width() 和 .height()方法

1.8增加了對css屬性box-sizing的支持,需要注意與1.7.2的區別了。1.7.2及以前的版本無論是否定義box-sizing: border-box返回的都是盒模型中元素內容的寬度或高度,不包括padding和border。

1.8后則不同了,當設置了css屬性box-sizing: box-border后,使用width()返回的數值有可能與css中設置的不同。如

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <style type="text/css">

        #container {
            box-sizing: border-box;
            -moz-box-sizing: border-box;
            width: 500px;
            padding: 5px;
            border: 5px solid gold;
        }
    </style>
    <script src="js/jquery-1.8.0.js"></script>
</head>
<body>
    <div id="container"></div>
    <script>
        var $el = $('#container')
        var w = $el.width();
        console.log(w)
    </script>
</body>  

</html></pre></code>



</div> </div> </div>

div[id=container]的box-sizing設置為border-box(Firefox14.1尚不支持border-box,使用-moz-border-box)。

除了設置width:500px外,還設置了padding和border分別為5px。各瀏覽器打印結果如下

IE6/7 : 500

IE8/9/10: 480

Safari5/6: 480

Chrome21/Firefox14: 480

 

IE6/7不支持box-sizing,輸出的依然是500。但支持該熟悉的瀏覽器此時輸出的結果則是480(刨去了盒模型的border和padding)。因此在1.8中需要注意使用box-sizing屬性帶來的width和height的結果變化。

 

二,.outerWidth 和 .outerHeight()方法

1.7.2及之前版本,outerWidth/outerHeight只作為getter。不傳true時返回元素的寬度或高度(含padding和border),傳true時(當然也可以傳數字1)返回值加上margin。

1.8及后具有了setter功能,如果獲取時想計算margin只能傳true,不能傳數字1等,因為傳數字1等在jQuery內部將處理為設置元素寬高。且返回的不是數字而是jQuery對象(和jQuery其它setter一樣)。

 

相關:

http://www.w3.org/TR/css3-box/

http://www.w3.org/TR/2002/WD-css3-box-20021024/

https://developer.mozilla.org/en-US/docs/CSS/box-sizing


轉自:http://www.cnblogs.com/snandy/archive/2012/08/18/2645882.html

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!