最近在学习DOM盒子模型,各种属性看着眼花缭乱,下面根据三个系列来分别介绍一下:

client系列

  1. clientWidth :width+(padding-left)+(padding-right)—>和内容溢出无关系
  2. clientHeight:height+(padding-top)+(padding-bottom)—>和内容溢出无关系
  3. clientLeft:左边框的宽度
  4. clientTop:上边框的高度(border[Left/Top]Width)

offset系列

  1. offsetParent:当前元素的父级参照(父级参照物),在同一个平面中,最外层的元素是里面所有元素的父级参照物(和html层级结构没有必然联系)
    a)一般来说一个页面中所有元素的父级参照物都是body
    b)body的父级参照物->document.body.offsetParent->null
    c)可以通过position:absolute/realative/fixed改变父级参照物
    我们可以总结一下规律:

position为fixed元素是没有offsetParent,但firefox统一返回body。
position为absolute, relative的元素的offsetParent总是为其最近的已定位
的元素,没有找最近的td,th元素,再没有找body。
position为static的元素的offsetParent则是先找最近的td,th元素,再没有找body。
body为最顶层的offsetParent。

  1. offsetWidth/offsetHeight:clientWidth/ clientHeight+左右/上下边框 —>和内容溢出无关系
  2. offseTop/offsetLeft:当前元素的外边框距离父级参照物内边框的偏移量

scroll系列

  1. scrollWidth/scrollHeight:和clientWidth/clientHeight一样(前提是:内容无溢出)

若容器内容有溢出:获取结果是如下规则:
scrollWidth:真实内容的宽度(包含溢出)+左填充
scrollHeight:真实内容的高度(包含溢出)+上填充。

  1. scrollLeft/scrollTop(可读写 ):滚动条卷曲的宽度和高度

scrollTop有两个临界值,最大值和最小值
滚动最小值:0,dom.scrollTop=一个小于0的数,滚动条也是滚动到顶部
滚动最大值:scrollHeight-clientHeight ,dom.scrollTop=一个大于(scrollHeight-clientHeight)的数,滚动条也是在最底部

通过以上我画了一张图,对照图看顿时你会觉得恍然大悟!请看下图:

javascript基础学习系列-DOM盒子模型常用属性的更多相关文章

  1. DOM盒子模型常用属性client,offset和scroll

    JS盒子模型属性 在JS中通过相关的属性可以获取(设置)元素的样式信息,这些属性就是盒子模型属性(基本上都是有关于样式的) 属性 值 client top/left/width/height offs ...

  2. javascript基础学习--HTML DOM

    写在前面的话:由于学校没有开过javascript这门课,所以平时用javascript时都是用到什么就去搜什么样的代码,但是在工作中有时候搜来的代码总是有那么点小问题,而当自己想去修改时,却又无从下 ...

  3. JavaScript基础学习(九)—DOM

    一.DOM概述      DOM(Document Object Model)文本对象模型.      D: 文档,HTML文档或XML文档.      O: 对象,document对象的属性和方法. ...

  4. javascript基础学习系列-1

    JavaScript简介 JavaScript的用途 JavaScript用来制作web页面交互效果,提升用户体验. web前端三层来说:w3c的规范:行内样式(淘汰) 结构层 HTML 从语义的角度 ...

  5. CSS基础学习-8.CSS盒子模型_标准盒子&&9.CSS怪异盒子

    怪异盒模型 box-sizing:content-box;/*正常盒模型,默认值*/ box-sizing:border-box:/*怪异盒模型,固定了盒子的大小,无论是否添加内边距还是边框,盒子的大 ...

  6. javascript基础学习系列-原型链模式

    1.demo代码如下: 2.画图如下: 3.规则: 1)每一个函数数据类型(普通函数/类)都有一个天生自带的属性:prototype(原型),并且这个属性是一个对象数据类型的值 2)并且prototy ...

  7. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  8. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  9. JavaScript 基础学习1-day14

    JavaScript 基础学习1 知识预览JavaScript概述二 JavaScript的基础三 JavaScript的对象BOM对象DOM对象实例练习js扩展 JavaScript概述 JavaS ...

随机推荐

  1. 使用nvm进行node多版本管理

    nvm与Python的virtualenv和Ruby的rvm类似.NVM (Node Version Manager,Node多版本管理器)是一个通用的叫法,它目前有许多不同的实现.通常我们说的 nv ...

  2. Android HandlerThread 源代码分析

    HandlerThread 简单介绍: 我们知道Thread线程是一次性消费品,当Thread线程运行完一个耗时的任务之后.线程就会被自己主动销毁了.假设此时我又有一 个耗时任务须要运行,我们不得不又 ...

  3. grid - 通过网格线号码来定位网格项目

    网格线实际上是代表线的开始.结束. 两者之间就是网格列或行. 以下css仅对子元素生效 ,具体详情可以看后面示例 grid-row-start: 2; grid-row-end: 3; grid-co ...

  4. Load 和 DOMContentLoaded 区别

    Load 事件触发代表页面中的 DOM,CSS,JS,图片已经全部加载完毕. DOMContentLoaded 事件触发代表初始的 HTML 被完全加载和解析,不需要等待 CSS,JS,图片加载.

  5. 下载网易云音乐的MV

    网易云音乐有很多经典视频, 但是苦于没有下载按钮...今天就记录下如何保存MV到本地, 又get一项新技能!!! 一. 安装360极速浏览器(非安利) 二. 打开网易云音乐客户端, 点击"等 ...

  6. 门户级UGC系统的技术进化路线 [转]

    原文链接   :http://weibo.com/p/1001603789147444803230 新闻门户网站的评论系统,或者称为跟帖.留言板,是所有门户网站的核心标准服务组件之一.与论坛.博客等其 ...

  7. [k8s]coredns/kube-dns配置subdomain

    思想: kube-dns或coredns本质上是一个dns服务软件.都需要配置配置文件.要控制怎么查询,即控制他的配置文件即可. 本文先说下coredns怎么配置,然后在配下kube-dns(包含了外 ...

  8. 【MongoDB】MongoDb的“not master and slaveok=false”错误及解决方法 mongo连接从库出现问题

    链接mongodb报错如下 2016-03-14T16:26:00.912+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok& ...

  9. Linux expect 使用(免密登录跳板机)

    登录公司的跳板机是挺麻烦的事,首先要ssh,然后输入密码,有的公司可能还要动态密码,前两步操作都是固定的,所以能免去前两步的操作就会方便很多(线上出问题也能尽快登上去,免得紧张密码一直输错,哈哈哈). ...

  10. 【SpringMVC学习07】SpringMVC中的统一异常处理

    我们知道,系统中异常包括:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生.在开发中,不管是dao层 ...