元素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 ...
随机推荐
- 手把手教你用python做一个年会抽奖系统
引言 马上就要举行年会抽奖了,我们都不知道是否有人能够中奖.我觉得无聊的时候可以尝试自己写一个抽奖系统,主要是为了娱乐.现在人工智能这么方便,写一个简单的代码不是一件困难的事情.今天我想和大家一起构建 ...
- Vite4+Typescript+Vue3+Pinia 从零搭建(7) - request封装
项目代码同步至码云 weiz-vue3-template 基于 axios 封装请求,支持多域名请求地址 安装 npm i axios 封装 utils 目录下新建 request 文件夹,并新建 i ...
- XILINX HLS 入坑记录 之 写RAM 综合出 读取+写入Ram
最近使用 Xilinx HLS 来开发 算法的IPcore,使用的Vitis 2021,发现光是 EDA 工具就存在很多的bug,比如: 1.经常C综合 停留在 Using flow_target ' ...
- 浅谈数字孪生和GIS融合的必要性
随着科技的不断发展和应用的不断深入,数字孪生和GIS在各自领域中展现出巨大的潜力.然而,更引人注目的是,数字孪生和GIS的融合将为许多行业带来全新的机遇和变革.在本文中,我们将探讨数字孪生和GIS融合 ...
- iMessage群发,iMessage群发基础知识,iMessage群发源代码分享
在当今的数字化时代,即时通讯已经成为我们日常生活和工作中不可或缺的一部分,其中,苹果的iMessage服务因其出色的用户体验和无缝的设备间同步而备受用户喜爱. 然而,你是否想过如何利用iMessage ...
- 基于注解玩转excel导出导入-基于注解玩转excel导出导入
title: 基于注解玩转excel导出导入 date: 2021-05-01 15:55:13.53 updated: 2021-12-26 17:43:19.505 url: https://ww ...
- DNSlog注入(利用DNSlog平台将SQL盲注变成回显注入)
前言 什么是UNC 什么是DNSlog注入 DNSlog注入的条件 防止DNSlog注入的几个措施 sqli-labs试验 前言 前几天面试的时候,面试官问我知不知道OOB(带外数据). 当时我蒙了, ...
- P6357 题解
Luogu 题面 题目描述 给定一串长度为 \(n\) 的数字,数字为 \(0 \sim 9\) 之间的任意一个,下标从 \(1\) 记起. 然后进行 \(m\) 次区间查询,每次查找区间 \([l, ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 15.创建持续效果BUFF
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应Lecture 18 – Creating Buffs, World Interaction, 71 ...
- flutter常用的设计模式
单例模式(Singleton Pattern): 确保一个类只有一个实例,并提供一个全局访问点. 工厂模式(Factory Pattern): 定义一个创建对象的接口,但让子类决定具体实例化哪个类:常 ...