DOM盒模型和位置 client offset scroll 和滚动的关系
DOM盒模型和位置 client offset scroll 和滚动的关系
概览
在dom里面有几个描述盒子位置信息的值,
- pading border margin
- width height
- client
- clientWidth 不要border
- clientHeight 不要border
- offset
- offsetTop
- offsetLeft
- offsetWidth 要border
- offsetHeight 要border
- scroll
- scrollTop
- scrollHeight
- scrollLeft
- scrollWidth
盒模型
生产环境一般使用 box-sizing: border-box,
效果:
width == content.width + pading + border
height == content.height + pading + border
.antd-pro-pages-test-dom-index-box {
box-sizing: border-box;
width: 100px;
height: 100px;
padding: 5px;
border-color: grey;
border-style: solid;
border-width: 5px;
margin: 5px;
}

滚动
<div class="container1" style="overflow: auto; height: 200px; width: 200px">
<ul class="container2" style="position: relative">
<li>1</li>
<li>1</li>
<li>1</li>
<li>1</li>
</ul>
</div>
// 把item 放在container的可视区域范围内
function scrollToDom(container, item){
// 当前元素 上边框上边 到 基线 的距离
const itemTop = item.offsetTop;
// 当前元素 下边框下边 到 基线 的距离
const itemBottom = itemTop + item.offsetHeight;
// container 上边框下边 距离 基线距离
const containerTop = container.scrollTop;
// container 下边框上边 距离 基线距离
const containerBottom = containerTop + container.clientHeight;
if(itemTop < containerTop){
container.scrollTop = itemTop;
}
if(itemBottom > containerBottom){
container.scrollTop = itemBottom - container.clientHeight;
}
}
此种结构特点
如果垂直滚动条已经出来了
.container1的上下 padding 区域也会有内容
向上滑动
- 向上滑动, 实质是
.container2向上滑动了 - 因为.container2.position == relative
li.offsetParent也是.container2, 所以.container1.scrollTop和li.offsetTop基准线都是.container2的上边框, 具有可比性
DOM盒模型和位置 client offset scroll 和滚动的关系的更多相关文章
- DOM盒子模型常用属性client,offset和scroll
JS盒子模型属性 在JS中通过相关的属性可以获取(设置)元素的样式信息,这些属性就是盒子模型属性(基本上都是有关于样式的) 属性 值 client top/left/width/height offs ...
- JavaScript概念之screen/client/offset/scroll/inner/avail的width/left 分类: JavaScript HTML+CSS 2015-05-27 16:42 635人阅读 评论(0) 收藏
原文地址:http://caibaojian.com/js-name.html JS中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词 ...
- JavaScript位置:window&client&offset&scroll&MouseEvent&getBoundingClientRect&计算任意元素滚动条宽度
Window: window.innerWidth:浏览器viewport视口宽,包括垂直滚动条 window.innerHeight:浏览器视口高,包括水平滚动条 window.outerWidth ...
- JS中client/offset/scroll等的宽高解析
原文地址:→传送门 window相关宽高属性 1. window.outerHeight (窗口的外层的高度) / window.outerWidth (窗口的外层的宽度) window.outerH ...
- client , offset , scroll 系列 及百度导航栏案例
1. client 系列 示例 : <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- client,offset,scroll系列
client(客户端),offset(偏移),scroll(滚动)1.client系列 clientTop 内容区域到边框顶部的距离 ,说白了,就是边框的高度 clientLeft 内容区域到边框左部 ...
- JS-特效 ~ 04. client对象、网页可视区域的宽高、client / offset / scroll 三大家族的区别、冒泡事件、事件委托、获取内嵌式和外链式属性getStyle(ele,attr) ;、缓动动画封装
知识点: 模拟滚动条的解除事件问题 : event内置对象,包含 了大量事件: page兼容性: pageX || clientX + scool().top : if (true === a)tr ...
- client offset scroll 之间的区别
一.client 属性 值 clientWidth 元素被设置的宽度 + padding左右内间距 clientHeight 元素被设置的高度 + padding上下内间距 clientLeft 左 ...
- JS ——DOM,BOM(包含盒模型,动画)总结
JS盒模型 content: 通过计算后样式获取padding + content: box.clientWidth | box.clientHeightborder + padding + cont ...
随机推荐
- JavaSE学习笔记(3)---面向对象三大特性
JavaSE学习笔记(3)---面向对象三大特性 面向对象的三大特征:继承.封装.多态 1.封装 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改.然 ...
- Python编辑器——Pycharm以及Sublime Text 3的安装教程
近来工作繁忙,顾不上学习,但还是有些小兄弟问我有没有编写Python代码的工具以及安装方法,跟我吐槽说他安装后总是有问题.那么今天就来说一说Pycharm的安装,顺带说一下Sublime Text 3 ...
- ASP.NET Identity系列教程-2【Identity入门】
https://www.cnblogs.com/r01cn/p/5177708.html13 Identity入门 Identity is a new API from Microsoft to ma ...
- gulp常用插件之gulp-inject使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-inject这个插件的作用与wiredep类似,不同的是可以自己任意指定需要插入文件的列表.它同样是利用注释来寻找插入的位置.获取源文件 ...
- python三器
1.1 装饰器 1.装饰器的作用 1. 装饰器作用:本质是函数(装饰其他函数)就是为其他函数添加其他功能 2. 装饰器必须准寻得原则: 1)不能修改被装饰函数的源代码 2)不能修改被装饰函数的调用方式 ...
- 已知float后几位,谋几位保留
设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式____. #include "common.h" #includ ...
- Burp Suite Professional 针对APP抓包篡改数据提交【安全】
Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应的HTTP 消息 ...
- DVA知识集合
react与dva 原文地址:https://github.com/dvajs/dva-knowledgemap 1.变量声明 const DELAY = 1000 let count = 0 cou ...
- Fiddler抓取https方法
基本配置 菜单 -> menu -> tool -> https 勾选"捕获https连接" 勾选"捕获https流量" 勾选"检查 ...
- Python学习笔记四:主要图表
图表部分,很多要记忆的.以下来自于培训材料的记录. 但我个人觉得更重要的是要根据业务特点确定用什么样的图表,然后再去查具体的参数,光记住参数意义不是很大. import numpy as np imp ...