DOM盒模型

栏目: CSS · 发布时间: 5年前

内容简介:JS中也提供了一些属性和方法用来描述当前元素的样式,主要有以下几种:备注:通过JS盒子模型属性获取的结果是不带单位的。而且只能是整数(它会自动四舍五入,进行计算)

DOM盒模型

CSS中的盒模型

  1. 传统盒模型

    在传统盒子模型中我们说的宽度和高度是指该块元素内容的宽度和高度。

    而一个块元素的宽度是

    width === width+padding(left/right)+border(left/right);

    相应的一个块元素的高度是

    height === height+padding(top/bottom)+border(top/bottom);
  2. CSS3中的盒模型

    在css3中新增加了盒子模型

    .box{

    border-sizing: border-box;

    }

    此时块元素的的width和height仅仅是这个块元素的宽度和高度。它包含了这个块元素的padding和border。在这个基础上我们在修改padding或者border块元素的宽度讲不会发生变化。改变的是内容的宽高。

JS中的盒模型

JS中也提供了一些属性和方法用来描述当前元素的样式,主要有以下几种:

备注:通过JS盒子模型属性获取的结果是不带单位的。而且只能是整数(它会自动四舍五入,进行计算)

  1. clientWidth/clientHeight

    clientWidth/clientHeight:当前盒子可视区域的宽度和高度

    可视区域是指:内容的宽高+padding

    clientWidth = width + padding(left + right);
    clientHeight = height + padding(top + bottom);

    可视区域和内容是否溢出以及我们是否设置了overflow:hidden没有关系

    在我们的项目中,我经常这样使用这两个属性

    //获取当前页面一屏幕的宽度
    W = document.documentElement.clientWidth||document.body.clientWidth;
    //获取当前页面一屏幕的高度
    H = document.documentElement.clientHeight||document.body.clientHeight;

    利用这个就可以实现让一个盒子水平和垂直居中。

    即实现相对定位,计算出来left和top就可以实现

    //width和height是盒子的宽高
    left = (W-width)/2;
    top = (H-height)/2;
  2. clientLeft/clientTop

    clientLeft:盒子左边框的宽度。

    clientTop:盒子上边框的高度。

    它俩获取的结果其实就是border-width。

    JS中只有clientLeft和clientTop,没有clientRight和clientBottom这两个属性。

  3. offsetWidth/offsetHeight

    offsetWidth/offsetHeight就是在clientWidth和clientHeight的基础上加上盒子的边框。

    即:

    offsetWidth === clientWidth + border(left/right);
    offsetHeight === clientHeight + border(top/bottom)

    和内容是否溢出没有关系。

    在我们的项目中,如果想获取一个盒子的宽度和高度,我们一般用offsetWidth(而不是clientWidth)和offsetHeight,因为border也算是当前盒子的一部分。

  4. scrollWwidth/scrollHeight
1) 没有内容溢出情况下:
    获取的结果和clientWidth/clientHeight是一样的
2)有内容溢出的情况下:
    真实内容的宽度和高度(包含溢出的内容),在加上左边的padding 和上边的padding 值。
    有内容溢出时,我们通过scrollWidth/scrollHeight获取的结果是一个约等于值。
    
    我们在项目中会这样使用这个属性


    ```
    //有横向滚动条时,获取当前页面的真实宽度
    document.documentElement.scrollWidth||document.body.scrollWidth;
    //有纵向滚动条时,获取当前页面的真实高度
    document.documentElement.scrollHeight||document.body.scrollHeight;
    
    ```
  1. window.getComputedStyle/currentStyle

    window.getComputedStyle在IE6~8中不兼容。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员修炼之道

程序员修炼之道

Andrew Hunt、David Thomas / 马维达 / 电子工业出版社 / 2005-1 / 48.00元

《程序员修炼之道》由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。一起来看看 《程序员修炼之道》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换