js 盒子模型:

  通过js中提供的一系列属性和方法获取页面中元素的样式信息值。

  一、client系类—》只读属性不可设置 (当前元素的私有属性,和内容溢出没关系,如果给容器设置了高度,就采用设置的高度,如果没设置,就采用自适应之后的高度)

    (1)clientHeight / cilentWidth  内容的高度/宽度 加上 上下/左右填充值。

      clientHeight  = height + padding-top + padding-bottom

      clientWidth  = width + padding-left + padding-right

    (2)clientLeft / clientTop 左/右边框的宽度

      clientLeft = borderLeftWidth;

      clientTop = borderTopHeight;

  二、offset系类 只读属性不可设置 (当前元素的私有属性,和内容溢出没关系,如果给容器设置了高度,就采用设置的高度,如果没设置,就采用自适应之后的高度)  

    (1)offsetHeight/offsetWidth    内容的高度/宽度 加上 上下/左右填充值  加上上下/左右边框。

      offsetHeigh = clientHeight + 2clientTop;

      offsetWidth = clientWidth + 2clientLeft;

    (2)offsetParent  当前元素的父级参照物,在同一个平面中最外层的元素是它里面所有元素的父级参照物,一般来说body是所有元素的父级参照物,但是当脱离文档结构时父级参照物发生改变即通过position定位来实现

        position:absolute; position:relative;position:fixed 都可以改变父级参照物

    (3)offsetLeft/offsetTop   当前元素的外边框距离基于父级参照物内边框的偏移量

  三、scroll系列

    (1)scrollHeight/scrollWidth 只读属性不可设置

        当容器内容没有溢出的时候和clientHeight/clientWidth 获取的值是一模一样的;

        当容器内容有溢出的时候,获取的规则如下:

        scrollWidth 真实内容宽度加上左填充

        scrollTop  真实内容高度加上上填充

        他们获取到的结果都是约等于的值,因为对于同一个浏览器设置overflow:hidden和不设置是有区别的,对于不同的浏览器获取到的值也是不同

    (2)scrollLeft/scrollTop 既可读取也可以设置  滚动条卷去的宽度和高度

  四、关于js盒子模型取值问题:通过这13个属性获取的值不可能出现小数,因为浏览器自动回进行四舍五入。

  五、对于浏览器本身的盒子模型信息

    clientWidth/clientHeight  是当前浏览器可视区域(一屏幕)的宽和高

    scrollWidth/scrollHeight  当前页面的真实内容的宽和高(所有屏幕的宽和高即整个页面的高)是一个约等于的值;为兼容通过以下方式进行获取或者设置   document.documentElement[attr] || document.body[attr]

    (1)获取浏览器的可视区域的宽或者高(一屏幕的宽或者高)

      document.docementElement.clientWidth || document.body.clientWidth

      document.docementElement.clientHeight || document.body.clientHeight

    (2)设置浏览器滚动条卷去的高

      document.documentElement.scrollTop= 0;

      document.body.scrollTop = 0;

  六、获取页面元素中的某一个具体的样式属性值

    (1)元素.style.属性名  // box.style.height

      弊端:只能获取定义了的行内样式的属性值,不能获取样式变中定义的样式属性值(无法实现css和html的分离);

    (2)window.getComputedStyle这个方法获取浏览器计算过得所有的样式,没有定义的样式也能获取到;

      window.getComputedStyle(当前要操作的元素对象,当前元素的伪类【一般不写伪类写null】)   获取的结果是CSSStyleDeclaration 这个类的一个实例:包含了当前元素的所有样式集合。

      window.getComputedStyle(box,null)["height"];

      弊端:在IE6-IE8不兼容,但是在IE6-IE8下使用currentStyle来获取浏览器计算过得所有的样式;

      元素.currentStyle     box.currentStyle.height

      处理兼容:

      (1)使用try...catch 处理兼容   

/*
          功能:获取当前浏览器计算过得所有的样式对应的attr对应的值
          参数:curEle 当前要操作的元素对象,attr字符串类型的值,我们要获取的当前元素的属性名
          返回值:返回获取到当前元素的attr属性的值

        */

        getCss:function(curEle,attr){
          var curAttrVal = null;
          try{
            curAttrVal = window.getComputedStyle(curEle,null)[attr];
           }catch(e){

              curAttrVal = curEle.currentStyle[attr];
          }

          return curAttrVal;

        }

       弊端:

        1、必须保证try中的代码在低版本浏览器中报错,否则catch中的语句不会执行

        2、不管是什么浏览器,try中的语句都会先执行一遍,比较消耗性能

      (2)检测当前浏览器中是否存在当前的属性或者方法,存在即兼容

      getCss:function(curEle,attr)

      {
        var curAttrVal = null;

        if("getCumputedStyle" in window){

          curAttrVal = window.getComputedStyle(curEle,null)[attr];

        }

        else{

          curAttrVal = curEle.currentStyle[attr];

        }

        return curAttrVal ;

      }

      

js 盒子模型与盒子偏移量的更多相关文章

  1. 盒子模型(W3C盒子模型、IE盒子模型)

    盒子模型:一个物体在页面中所占据的位置 盒子模型包含以下几种元素: padding:margin:content:border 这是大家都知道的,也是书本上定义说明的,但是在ie的情况下是有点区别的; ...

  2. W3c盒子模型+IE盒子模型+box-sizing属性

    1.盒子模型有两种,标准盒模型和IE盒模型,其中W3C标准的盒模型就是在网页的顶部加上 DOCTYPE 声明. (1)W3C标准的盒模型 W3C盒子模型包括4部分:margin,border,padd ...

  3. css盒子模型 css3盒子相关样式

    1.内边距(内边距在content外,边框内) 内边距属性: padding          设置所有边距 padding-bottom     底边距 padding-left           ...

  4. CSS布局(一) 盒子模型

    一.盒子模型 标准盒子模型 从下图可以看到标准 w3c 盒子模型的范围包括 content.padding.border.margin,并且 content 部分不包含其他部分. 怪异盒子模型 从下图 ...

  5. WEB入门.六 盒子模型

    学习内容 CSS盒子模型 盒子之间的关系 页面元素定位 能力目标 理解盒子模型 理解内容与表现分离的优点 理解并掌握盒子之间的关系 理解并掌握绝对定位与相对定位的用法 本章简介 上一章节中已经讲解了页 ...

  6. 这些HTML、CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML、CSS、盒子模型、内容布局)

    这些HTML.CSS知识点,面试和平时开发都需要 No1-No4   系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) ...

  7. CSS篇-dispaly、position、定位机制、布局、盒子模型、BFC

    display常用值 参考链接英文参考链接中文 // 常用值 none:元素不显示 inline:将元素变为内联元素,默认 block:将元素变为块级元素 inline-block:将元素变为内联块级 ...

  8. 深入理解CSS盒子模型

    在CSS中浮动.定位和盒子模型,都是很核心的东西,其中盒子模型是CSS很重要基石之一,感觉还是很有必要把CSS盒子模型相关知识更新一下...... CSS盒子模型<BoxModel>示意图 ...

  9. 标准W3C盒子模型和IE盒子模型

    标准W3C盒子模型和IE盒子模型   CSS盒子模型:网页设计中CSS技术所使用的一种思维模型. CSS盒子模型组成:外边距(margin).边框(border).内边距(padding).内容(co ...

随机推荐

  1. thinkphp助手函数

    tp3 C($name=null, $value=null,$default=null) 获取和设置配置参数 支持批量定义 load_config($file,$parse=CONF_PARSE) 加 ...

  2. WindowsPowerShell常用命令

    zai 获得Shell权限之后,可使用如下命令对系统进行文件操作: cd 后跟相应参数: cd ../ 返回上一级目录 cd +路径 跳转至制定目录(如果路径存在且正确的话) type flag.tx ...

  3. zookeeper中controller项目中资源配置文件applicationContext.xml配置文件编写

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  4. thinkphp PATH_INFO支持

    如果发生在本地测试正常,但是一旦部署到服务器环境后会发生只能访问首页的情况,很有可能是你的服务器或者空间不支持PATH_INFO所致. 系统内置提供了对PATH_INFO的兼容判断处理,但是不能确保在 ...

  5. Javascript下拉刷新

    Html相关代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  6. NX二次开发-UFUN输入表达式TAG,得到表达式值UF_MODL_ask_exp_tag_value

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建表达式 tag_t NewExpTag ...

  7. NX二次开发-NXOpen窗口打印NXMessageBox&ListingWindow

    NX9+VS2012 #include <NXOpen/NXObject.hxx> #include <NXOpen/Part.hxx> #include <NXOpen ...

  8. electron-vue构建桌面应用

    一.项目搭建 electron-vue是vue-cli和electron结合的项目,比单独使用vue构建起的electron项目要方便很多. 1.初始化项目并运行 vue init simulated ...

  9. (转)在Struts 2.0中国际化(i18n)您的应用程序 + 本人拓展备注

    转:http://www.blogjava.net/max/archive/2006/11/01/78536.html 国际化是商业系统中不可或缺的一部分,所以无论您学习的是什么Web框架,它都是必须 ...

  10. O(n)线性时间求解第k大-HDU6040-CSU2078

    目录 目录 思路 (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 HDU6040:传送门  \(m(m\leq 100)\)次查询长度为\(n(n \leq 1e7)\)区间的 ...