1. 当样式写在行内的时候,如 <div id="box" style="width:100px">时,用 style.width或者offsetWidth都可以获取元素的宽度。
但是,当样式写在样式表中时,如 #box{ width: 100px; }, 此时只能用offsetWidth来获取元素的宽度,而style.width所返回的值为空。
2、
style.width 获取的元素宽度只是div的宽度,不包括border、和padding所占的宽度,且宽度值是带单位px的。
offsetWidth 获取的元素宽度为width+border+padding的值(不包括margin),且返回值只为一个数值,不带单位。
3、style.width 也可以在js中用来设置元素的宽度,而offsetWidth不可以。
4、
JQUERY 获取 DIV 宽度与高度(width,padding,margin,border):
var content = $(‘div’). width();//只是获取content宽度
var contentWithPadding = $(‘div’). innerWidth();//获取content+padding的宽度
var withoutMargin = $(‘div’). outerWidth();//获取content+padding+border的宽度var full = $(‘div’). outerWidth(true);//获取content+padding+border+margin的宽度
5、
box-sizing 属性允许你以某种方式定义某些元素,以适应指定区域。
例如,假如您需要并排放置两个带边框的框,可通过将 box-sizing 设置为 "border-box"。这可令浏览器呈现出带有指定宽度和高度的框,并把边框和内边距放入框中。
默认值: content-box 继承: no 版本: CSS3 JavaScript 语法: object.style.boxSizing="border-box"
语法
box-sizing: content-box|border-box|inherit:
值 说明 content-box 这是CSS2.1指定的宽度和高度的行为。指定元素的宽度和高度(最小/最大属性)适用于box的宽度和高度。元素的填充和边框布局和绘制指定宽度和高度除外 border-box 指定宽度和高度(最小/最大属性)确定元素边框box。也就是说,对元素指定宽度和高度包括padding和border的指定。内容的宽度和高度减去各自双方该边框和填充的宽度从指定的"宽度"和"高度"属性计算 inherit 指定box-sizing属性的值,应该从父元素继承 content-box 默认值。该值表示设置元素的width和height时,这两个尺寸实际指的是内容区的尺寸。即:
width = 内容区的宽度
height = 内容区的高度
border-box 该值表示设置元素的width和height时,这两个尺寸实际指的是border + padding + 内容区 这三项的总尺寸。即:
width = border-left + padding-left + 内容区宽度 +padding-right + border-right
height = border-top + padding-top + 内容区高度 +padding-bottom + border-bottom
6、当所有元素都设置了box-sizing:border-box的时候,这时候通过DOM元素获取的style.width是包含了内边距和边框宽度的宽度,所以这个时候给DOM的子元素的宽度赋值时要考虑到这一点,不能直接用DOM宽度进行赋值,用jquery获取$("div").width()赋值只是content的宽度,这样就避免了内部宽度和外部宽度一致,再加上内边距与边框的宽度,造成外部宽度溢出,实际上扩大了宽度。---bootstrap.css里面对所有元素都进行了box-sizing的设置需要注意: