目录
滚动宽高
页面尺寸
滚动长度
页面滚动
滚动方法
滚动事件
首页 运维 安全 滚动scroll如何理解

滚动scroll如何理解

May 23, 2023 pm 01:40 PM
scroll

滚动宽高

scrollHeight

  scrollHeight表示元素的总高度,包括由于溢出而无法展示在网页的不可见部分

scrollWidth

  scrollWidth表示元素的总宽度,包括由于溢出而无法展示在网页的不可见部分

  [注意]IE7-浏览器返回值是不准确的

  【1】没有滚动条时,scrollHeight与clientHeight属性结果相等,scrollWidth与clientWidth属性结果相等

<div id="test" ></div><script>//120 120console.log(test.scrollHeight,test.scrollWidth);//120 120console.log(test.clientHeight,test.clientWidth);</script>
登录后复制

  【2】存在滚动条时,但元素设置宽高大于等于元素内容宽高时,scroll和client属性的结果相等

<div id="test" >
    内容<br>内容<br></div><script>//103(120-17) 103(120-17)console.log(test.scrollHeight,test.scrollWidth);//103(120-17) 103(120-17)console.log(test.clientHeight,test.clientWidth);</script>
登录后复制

  【3】存在滚动条,但元素设置宽高小于元素内容宽高,即存在内容溢出的情况时,scroll属性大于client属性

  [注意]scrollHeight属性存在兼容性问题,chrome和safari浏览器中,scrollHeight包含padding-bottom;而IE和firefox不包含padding-bottom

<div id="test" >
    内容</div><script>//chrome/safari:220(200+10+10)//firefox/IE:210(200+10)console.log(test.scrollHeight);//103(120-17)console.log(test.clientHeight);</script>
登录后复制

页面尺寸

  document.documentElement.clientHeight表示页面的可视区域的尺寸,而document.documentElement.scrollHeight表示html元素内容的实际尺寸。但是由于各个浏览器表现不一样,分为以下几种情况

  【1】html元素没有滚动条时,IE和firefox的client和scroll属性始终相同,且返回可视区的尺寸大小;而safari和chrome表现正常,clientHeight返回可视区域大小,而scrollHeight返回元素内容大小

//firefox:  755 755//chrome:   947 8(body元素的margin)//safari:   744 8(body元素的margin)//IE:       768 768console.log(document.documentElement.clientHeight,document.documentElement.scrollHeight)
登录后复制

  【2】html元素存在滚动条时,各个浏览器都表现正常。clientHeight提供了视口区域的尺寸,而scrollHeight则提供了元素内容的尺寸

<body ><script>//firefox:  755 1016(1000+8*2)//chrome:   947 1016(1000+8*2)//safari:   744 1016(1000+8*2)//IE:       768 1016(1000+8*2)console.log(document.documentElement.clientHeight,document.documentElement.scrollHeight)</script>
登录后复制

兼容

  因此要取得文档实际高度时,要取得元素的scrollHeight和clientHeight的最大值

var docHeight = Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight);var docWidth  = Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth);
登录后复制

滚动长度

scrollTop

  scrollTop属性表示被隐藏在内容区域上方的像素数。元素未滚动时,scrollTop的值为0,如果元素被垂直滚动了,scrollTop的值大于0,且表示元素上方不可见内容的像素宽度

scrollLeft

scrollLeft属性指示内容区域左侧隐藏的像素数量。元素未滚动时,scrollLeft的值为0,如果元素被水平滚动了,scrollLeft的值大于0,且表示元素左侧不可见内容的像素宽度

  当滚动条滚动到内容底部时,符合以下等式

scrollHeight == scrollTop  + clientHeight
登录后复制
<div id="test" >
    内容</div><button id=&#39;btn1&#39;>点击</button><div id="result"></div><script>btn1.onclick = function(){
    result.innerHTML = 'scrollTop:' + test.scrollTop+';clientHeight:' + test.clientHeight + ';scrollHeight:' + test.scrollHeight
}</script>
登录后复制

  与scrollHeight和scrollWidth属性不同的是,scrollLeft和scrollTop是可写的

  [注意]为scrollLeft和scrollTop赋值为负值时,并不会报错,而是静默失败

<div id="test" >
    内容</div><button id=&#39;btn1&#39;>向下滚动</button><button id=&#39;btn2&#39;>向上滚动</button><script>btn1.onclick = function(){test.scrollTop += 10;}
btn2.onclick = function(){test.scrollTop -= 10;}</script>
登录后复制

页面滚动

  理论上,通过document.documentElement.scrollTop和scrollLeft可以反映和控制页面的滚动;但是chrome和safari浏览器是通过document.body.scrollTop和scrollLeft来控制的

<body ><button id=&#39;btn1&#39; >点击</button><div id="result" ></div><script>btn1.onclick = function(){
    result.innerHTML = 'html的scrollTop:' + document.documentElement.scrollTop +';body的scrollTop:' + document.body.scrollTop;
}</script>    </body>
登录后复制

  所以,页面的滚动高度兼容写法是

var docScrollTop = document.documentElement.scrollTop || document.body.scrollTop
登录后复制

回到顶部

  可以利用scrollTop来实现回到顶部的功能

function scrollTop(){    if((document.body.scrollTop || document.documentElement.scrollTop) != 0){
        document.body.scrollTop = document.documentElement.scrollTop = 0;
    }
}
登录后复制
<body >
<button id=&#39;btn&#39; >回到顶部</button>
<script>function scrollTop(){    if((document.body.scrollTop || document.documentElement.scrollTop) != 0){
        document.body.scrollTop = document.documentElement.scrollTop = 0;
    }
}
btn.onclick = scrollTop;</script>
</body>
登录后复制

  还有两个window的只读属性可以获取整个页面滚动的像素值,它们是pageXOffset和pageYOffset

pageXOffset

  pageXOffset表示水平方向上页面滚动的像素值

pageYOffset

  pageYOffset表示垂直方向上页面滚动的像素值

  [注意]IE8-浏览器不支持

<body ><button id=&#39;btn1&#39; >点击</button><div id="result" ></div><script>btn1.onclick = function(){
    result.innerHTML = 'pageYOffset:' + window.pageYOffset;
}</script>    </body>
登录后复制

滚动方法

scrollTo(x,y)

  scrollTo(x,y)方法滚动当前window中显示的文档,让文档中由坐标x和y指定的点位于显示区域的左上角

<body ><button id=&#39;btn&#39; >滚动</button><script>btn.onclick = function(){scrollTo(0,0);}</script>
登录后复制

scrollBy(x,y)

  scrollBy(x,y)方法滚动当前window中显示的文档,x和y指定滚动的相对量

<body ><button id=&#39;btn1&#39; >向下滚动</button><button id=&#39;btn2&#39; >向上滚动</button><script>btn1.onclick = function(){scrollBy(0,100);}
btn2.onclick = function(){scrollBy(0,-100);}</script>
登录后复制

【小应用】

  利用scrollBy()加setInterval计时器实现简单的快速滚动功能

<body ><button id=&#39;btn1&#39; >开始滚动</button><button id=&#39;btn2&#39; >停止滚动</button><script>var timer = 0;
btn1.onclick = function(){
    timer = setInterval(function(){
        scrollBy(0,10);
    },100)}
btn2.onclick = function(){
    clearInterval(timer);
    timer = 0;
}</script>
登录后复制

scrollIntoView()

  Element.scrollIntoView方法滚动当前元素,进入浏览器的可见区域

  该方法可以接受一个布尔值作为参数。如果为true,表示元素的顶部与当前区域的可见部分的顶部对齐(前提是当前区域可滚动);如果为false,表示元素的底部与当前区域的可见部分的尾部对齐(前提是当前区域可滚动)。如果没有提供该参数,默认为true

<body ><div id="test" ></div><button id=&#39;btn1&#39; >滚动到页面开头</button><button id=&#39;btn2&#39; >滚动到页面结尾</button><script>btn1.onclick = function(){
    test.scrollIntoView();
};
btn2.onclick = function(){
    test.scrollIntoView(false);
}</script>
登录后复制

scrollIntoViewIfNeeded()

  scrollIntoViewIfNeeded(true)方法只在当前元素在视口中不可见的情况下,才滚动浏览器窗口或容器元素,最终让它可见。如果当前元素在视口中可见,这个方法什么也不做 

当alignCenter参数设置为true时,元素会尽可能地显示在视口的垂直中心位置上

  [注意]该方法只有chrome和safari支持

<body ><div id="test" ></div><button id=&#39;btn&#39; >滚动到页面中间</button><script>btn.onclick = function(){
    test.scrollIntoViewIfNeeded(true)
};</script>
登录后复制

scrollByLines(lineCount)

  scrollByLines(lineCount)方法将元素的内容滚动指定的行髙,lineCount值可以是正值, 也可以是负值

  [注意]该方法只有safari支持

<div id="test" >
    内容</div><button id=&#39;btn1&#39;>向下滚动</button><button id=&#39;btn2&#39;>向上滚动</button><script>btn1.onclick = function(){test.scrollByLines(1);}
btn2.onclick = function(){test.scrollByLines(-1);}</script>
登录后复制

scrollByPages(pageCount)

  scrollByPages(pageCount)方法将元素的内容滚动指定的页面高度,具体高度由元素的高度决定

  [注意]该方法只有safari支持

<div id="test" >
    内容</div><button id=&#39;btn1&#39;>向下滚动</button><button id=&#39;btn2&#39;>向上滚动</button><script>btn1.onclick = function(){test.scrollByPages(1);}
btn2.onclick = function(){test.scrollByPages(-1);}</script>
登录后复制

滚动事件

在页面中相应元素发生变化时,scroll事件会在window对象上触发。当然,scroll事件也可以用在有滚动条的元素上

<body ><div id="result" ></div><script>window.onscroll = function(){
    result.innerHTML = '页面的scrollTop:' + (document.documentElement.scrollTop||document.body.scrollTop);
}</script>    </body>
登录后复制

以上是滚动scroll如何理解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

scroll是什么按键 scroll是什么按键 Feb 22, 2023 pm 02:29 PM

scroll是滚动锁定键,是计算机键盘上的功能键。scroll键常用于word和Excel中,在Scroll Lock关闭的状态下,使用翻页键时,单元格选定区域会随之发生移动;但是当按下了Scroll Lock键后,就不会移动选定的单元格。

键盘scroll灯亮什么意思 键盘scroll灯亮什么意思 Feb 20, 2023 pm 01:42 PM

键盘scroll灯亮的意思是指“滚动锁”被启用;Scroll Lock键在win系统中不用,但是部分软件会使用到这个功能键,按下此键后,在Excel上、下键滚动时,会锁定光标而滚动页面;如果放开此键,则按上、下键时会滚动光标而不滚动页面。

滚动scroll如何理解 滚动scroll如何理解 May 23, 2023 pm 01:40 PM

滚动宽高scrollHeight  scrollHeight表示元素的总高度,包括由于溢出而无法展示在网页的不可见部分scrollWidth  scrollWidth表示元素的总宽度,包括由于溢出而无法展示在网页的不可见部分  [注意]IE7-浏览器返回值是不准确的  【1】没有滚动条时,scrollHeight与clientHeight属性结果相等,scrollWidth与clientWidth属性结果相等//120120console.log(test.scrollHeight,test.s

Vue中如何使用v-on:scroll监听滚动事件 Vue中如何使用v-on:scroll监听滚动事件 Jun 11, 2023 pm 12:14 PM

Vue是目前比较流行的前端框架之一,除了常见的事件监听外,Vue还提供了一种用于监听滚动事件的指令,即v-on:scroll。本文将详细介绍如何在Vue中使用v-on:scroll监听滚动事件。一、v-on:scroll指令基本用法v-on:scroll指令用于监听DOM元素的滚动事件,其基本用法如下:

css 怎么隐藏scroll css 怎么隐藏scroll Jan 28, 2023 pm 02:02 PM

css隐藏scroll的方法:1、在Firefox中,可以通过“scrollbar-width: none; /* Firefox */”属性实现隐藏滚动条;2、在IE浏览器中,可以使用“-ms-prefix”属性定义滚动条样式;3、在Chrome和Safari中,可以用CSS滚动条选择器,然后通过“display:none”隐藏即可。

什么是以太坊scroll?以太坊scroll怎么操作? 什么是以太坊scroll?以太坊scroll怎么操作? Feb 15, 2025 pm 10:33 PM

以太坊 Scroll 是一种第 2 层扩展解决方案,旨在通过分片和 ZK-Rollup 技术提升以太坊网络的可扩展性。它结合了这两项技术,将交易并行处理并高效验证,从而大幅提高网络吞吐量并降低交易费用。Scroll 旨在成为以太坊虚拟机 (EVM) 的兼容扩展层,允许用户快速且经济地处理交易。

快速发展的零知识二层网络 Scroll 确认将于 10 月 19 日推出空投 快速发展的零知识二层网络 Scroll 确认将于 10 月 19 日推出空投 Oct 12, 2024 am 12:14 AM

这次回落的部分原因是更广泛的加密市场表现不佳,恐惧和贪婪指数一直低于 45。比特币也未能突破 65,000 美元的阻力点。

Scroll (SCR) 代币发行:迈向去中心化的一步 Scroll (SCR) 代币发行:迈向去中心化的一步 Oct 11, 2024 pm 10:18 PM

此次代币的推出正值 Scroll 旨在加强其治理并巩固其作为以太坊生态系统关键参与者的角色。

See all articles