js与jquery中宽度的获取

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的设置需要注意:
* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

猜你喜欢

转载自blog.csdn.net/better1166/article/details/80661606