css的盒模型非常重要,是写css的关键所在,当点开网页,F12,点击
选中一个元素模块,就会出现下述盒模型
现在我们一起来了解一下:
假如有个div给它设置样式:div { width: 300px; border: 25px solid #ccc; padding: 25px; margin: 25px; }
这个呢,最好自己画一下,加深理解。
jQuery里面的css
.css(width)
返回带有完整单位的字符串(例如,400px
);.width()
返回一个没有单位的数值(例如,400
);当一个元素的宽度需要数学计算的时候推荐使用.width()
方法 。
截至jQuery 1.8,
如果css是#box1 { width: 50px; border:10px solid #ccc; margin: 5px; padding: 5px; box-sizing: border-box;color: yellow; background-color: blue; }
.width()
不管CSS box-sizing
属性值。依然是元素内容的宽度:50-padding(10)- border(20)=20。
使用.css( "width" )依然是设置的宽度,是50px。
如果css是#box1 { width: 50px; border:10px solid #ccc; margin: 5px; padding: 5px; color: yellow; background-color: blue; }没有了box-sizing: border-box。
.width()依然是元素内容的宽度:50。
使用.css( "width" )依然是设置的宽度,是50px。
.width():总是返回内容宽度。
.innerWidth():为匹配的元素集合中获取第一个元素的当前计算宽度值,包括padding,但是不包括border。
.outerWidth():获取元素集合中第一个元素的当前计算宽度值,包括padding,border和选择性的margin。
height和width一样的。
浏览器的兼容性问题
一旦为页面设置了恰当的 DTD,大多数浏览器都会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现却是不正确的。根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。
虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。
IE8 及更早IE版本不支持设置填充的宽度和边框的宽度属性。
解决IE8及更早版本不兼容问题可以在HTML页面声明 <!DOCTYPE html>即可。
以上均为个人观点,欢迎指正、讨论。