欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅析jQuery1.8的几个小变化

程序员文章站 2023-11-25 13:20:16
一,.width() 和 .height()方法 1.8增加了对css属性box-sizing的支持,需要注意与1.7.2的区别了。1.7.2及以前的版本无论是否定义box-si...

一,.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>
        <p id="container"></p>
        <script>
            var $el = $('#container')
            var w = $el.width();
            console.log(w)
        </script>
    </body>   
</html>


p[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一样)。