元素scroll系列属性
scroll翻译过来,就是滚动的,我们使用scroll系列的相关属性可以动态的得到该元素的大小、滚动距离等。

| scroll系列属性 | 作用 |
| element.scrollTop | 返回被卷上去的上侧距离,返回数值不带单位 |
| element.scrollLeft | 返回被卷上去的左侧距离,返回数值不带单位 |
| element.scrollWidth | 返回自身实际的宽度,不含边框,返回数值不带单位 |
| element.scrollHeight | 返回自身实际的高度,不含边框,返回数值不带单位 |
案例:仿淘宝固定右侧侧边栏
1.原先侧边栏是绝对定位。
2.当页面滚动到一定位置,侧边栏改为固定定位。
3.页面继续滚动,会让返回顶部显示出来。
分析:
1.需要用到页面滚动事件scroll,因为是页面滚动,所以事件源是document。
2.滚动到某个位置,就是判断页面被卷上去的上部值。
3.页面被卷上去的头部:可以通过window.pageYOffset获得。
4.注意: 元素被卷上去的头部是element.scrollTop,如果是页面被卷去的头部,则是window.pageYOffset。
5.其实这个值 可以通过盒子的 offsetTop可以得到,如果大于等于这个值,就可以让盒子固定定位了。
1 //1. 获取元素
2 var sliderbar = document.querySelector('.slider-bar');
3 var banner = document.querySelector('.banner');
4 // banner.offestTop 就是被卷去头部的大小 一定要写到滚动的外面
5 var bannerTop = banner.offsetTop
6 // 当我们侧边栏固定定位之后应该变化的数值
7 var sliderbarTop = sliderbar.offsetTop - bannerTop;
8 // 获取main 主体元素
9 var main = document.querySelector('.main');
10 var goBack = document.querySelector('.goBack');
11 var mainTop = main.offsetTop;
12 // 2. 页面滚动事件 scroll
13 document.addEventListener('scroll', function() {
14 // window.pageYOffset 页面被卷去的头部
15 // console.log(window.pageYOffset);
16 // 3 .当我们页面被卷去的头部大于等于了 172 此时 侧边栏就要改为固定定位
17 if (window.pageYOffset >= bannerTop) {
18 sliderbar.style.position = 'fixed';
19 sliderbar.style.top = sliderbarTop + 'px';
20 } else {
21 sliderbar.style.position = 'absolute';
22 sliderbar.style.top = '300px';
23 }
24 // 4. 当我们页面滚动到main盒子,就显示 goback模块
25 if (window.pageYOffset >= mainTop) {
26 goBack.style.display = 'block';
27 } else {
28 goBack.style.display = 'none';
29 }
30 })
页面被卷上去的头部兼容性解决方案
需要注意的是,页面被卷上去的头部,有兼容性问题,因此被卷上去的头部通常有如下几种写法:
1.声明了DTD,使用了document.documentElement.scrollTop
2.未声明DTD,使用document.body.scrollTop
3.新方法window.pageYOffset和window.pageXOffset, IE9开始支持。
封装统一方法getScroll(),使用getScroll().left
1 function getScroll() {
2 return {
3 left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft||0,
4 top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
5 };
6 }

他们主要用法:
1.offset系列,经常用于获得元素位置: offsetLeft offsetTop
2.client经常用于获取元素大小clientWidth、 clientHeight
3.scroll经常用于获取滚动距离scrollTop、scrollLeft
4.注意页面滚动的距离通过window.pageXOffset获得
元素scroll系列属性的更多相关文章
- JavaScript学习笔记5 之 计时器 & scroll、offset、client系列属性 & 图片无缝滚动
一.计时器 setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复) setTimeout ( 函数/名称 , 毫秒数 ) 表示经过一定的毫秒后,只执行 ...
- 系列属性(offset、scroll、client)
一.offset系列属性 <div id="dv"></div> <!-- 已在style标签里设置div宽高各100px --> <sc ...
- offset系列,client系列,scroll系列回顾
一 scroll系列属性 ——滚动
- offset系列、scroll系列与client系列
offset系列: offsetLeft:获取元素距离最左边的距离,自身的margin包括在内,不包括自身的border offsetTop:获取元素距离最上边的距离,自身的margin包括在内,不包 ...
- 元素的属性:client系列,scroll系列,offset系
元素的属性 div.attributes 是所有标签属性构成的数组集合 dir.classList 是所有class名构成的数组集合 在classList的原型链上看一看到从 add()和remove ...
- 差别client、offset、scroll系列以及event的几个距离属性
element元素结点属性 一. offset系列 1.offsetWidth 和offsetHeight element.offsetWidth是一个仅仅读属性,它包含了: css width + ...
- 区别client、offset、scroll系列以及event的几个距离属性
element元素结点属性 一. offset系列 1.offsetWidth 和offsetHeight element.offsetWidth是一个只读属性,它包括了: css width + p ...
- 元素滚动 scroll 系列
定义 : scroll翻译过来就是滚动的,我们使用scroll系列的相关属性可以动态的得到该元素的大小.滚动距离等. 常用属性 : 需要用到页面滚动事件scroll因为是页面滚动,所以事件源是docu ...
- python 全栈开发,Day52(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)
昨日作业讲解: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉, ...
- client系列、offset系列、scroll系列
一.client系列 clientWidth/clientHeight 是我们设置的宽和高加上内边距(没有边框) clientLeft/clientTop 就是我们设置的边框值 二.offset ...
随机推荐
- [cnn]FashionMINST训练+保存模型+调用模型判断给定图片
import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim impor ...
- 文心一言 VS 讯飞星火 VS chatgpt (154)-- 算法导论12.3 1题
一.用go语言,给出 TREE-INSERT 过程的一个递归版本. 文心一言,代码不能运行: 下面是用 Go 语言实现一个递归版本的 TREE-INSERT 过程的代码: package main i ...
- ETL-txt数据转换为Excel数据
前言: 将txt文件中的数据抽取出来,然后装载到Excel中. 具体操作步骤: 数据准备 id,name,age,gender,province,city,region,phone,birth ...
- Helm Chart 部署 Redis 的完美指南
目录 一.Helm介绍 二.安装Helm 三.配置Helm的repository 四.部署chart(以部署redis为例) 1. 搜索chart 2. 拉取chart 3. 修改values.yam ...
- Java在指定路径下执行cmd命令的方法
目前状态:毕业设计ing 背景: 做毕设时,由于需要将python的运行效果展示出来,所以使用了Java写了一个前端的界面.但是在使用Java对python的脚本进行调用时就尴尬了,出错-- 这里也许 ...
- k8s安装etcd出现Job for etcd.service failed......"journalctl -xe" for details.
错误如下 先按照提示,输入 journalctl -xe 看一些详细信息 1.针对:start request repeated too quickly for etcd.service 错误,解决办 ...
- bash shell笔记整理——less命令
less命令的作用 less和cat.more最大的差别在于不会一次性加载整个文件,速度比较快!另外less具备翻页功能,可以向上/向下翻页! 语法 less [选项] [文件名] *选项* *使用说 ...
- 盘点前端的那些Ajax请求:从ES5到React
说起前端开发,Ajax请求是绕不开的技术点.然而,程序语言更新换代越来越快,Ajax请求的方式也是各有不同. 在使用ES5开发的时候,我们还在使用最原始的XMLHttpRequest对象: // cr ...
- 如何保障Cookie的信息安全
一.支持策略 保障 Cookie 的安全性可以从以下几个方面进行: 使用 HttpOnly 属性:设置 HttpOnly 属性可以防止JavaScript Document.cookie API 无法 ...
- 文件不落地上线sliver
接着二开sliver,给他添加一个生成powershell payload上线的功能,生成并复制到剪切板. 准备 首先,先开启监听,不多说直接mtls默认的就行,sliver可以生成配置文件来实现 ...