jQuery1.8的几个小变化

openkk 12年前
   <p><strong>一,.width() 和 .height()方法</strong></p>    <p>1.8增加了对css属性<a href="/misc/goto?guid=4958522424705448122" target="_blank">box-sizing</a>的支持,需要注意与1.7.2的区别了。1.7.2及以前的版本无论是否定义box-sizing: border-box返回的都是盒模型中元素内容的宽度或高度,不包括padding和border。</p>    <p>1.8后则不同了,当设置了css属性box-sizing: box-border后,使用width()返回的数值有可能与css中设置的不同。如</p>    <div class="cnblogs_Highlighter">     <div>      <div id="highlighter_975188" class="syntaxhighlighter html">      <code><pre class="brush:html; toolbar: true; auto-links: false;"><!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>       <table class="ke-zeroborder" border="0" cellspacing="0" cellpadding="0">        <tbody>         <tr>          <td class="gutter"><br /> </td>          <td class="code"><br /> </td>         </tr>        </tbody>       </table>      </div>     </div>    </div>    <p>div[id=container]的box-sizing设置为border-box(Firefox14.1尚不支持border-box,使用-moz-border-box)。</p>    <p>除了设置width:500px外,还设置了padding和border分别为5px。各浏览器打印结果如下</p>    <p>IE6/7 : 500</p>    <p>IE8/9/10: 480</p>    <p>Safari5/6: 480</p>    <p>Chrome21/Firefox14: 480</p>    <p> </p>    <p>IE6/7不支持box-sizing,输出的依然是500。但支持该熟悉的浏览器此时输出的结果则是480(刨去了盒模型的border和padding)。因此在1.8中需要注意使用box-sizing属性带来的width和height的结果变化。</p>    <p> </p>    <p><strong>二,.outerWidth 和 .outerHeight()方法</strong></p>    <p>1.7.2及之前版本,outerWidth/outerHeight只作为getter。不传true时返回元素的宽度或高度(含padding和border),传true时(当然也可以传数字1)返回值加上margin。</p>    <p>1.8及后具有了setter功能,如果获取时想计算margin只能传true,不能传数字1等,因为传数字1等在jQuery内部将处理为设置元素宽高。且返回的不是数字而是jQuery对象(和jQuery其它setter一样)。</p>    <p> </p>    <p>相关:</p>    <p><a href="/misc/goto?guid=4958522424805987869">http://www.w3.org/TR/css3-box/</a></p>    <p><a href="/misc/goto?guid=4958522424705448122">http://www.w3.org/TR/2002/WD-css3-box-20021024/</a></p>    <p><a href="/misc/goto?guid=4958522424920280199">https://developer.mozilla.org/en-US/docs/CSS/box-sizing</a></p>    <br /> 转自:http://www.cnblogs.com/snandy/archive/2012/08/18/2645882.html