Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to understand scrolling scroll

2025-01-18 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Network Security >

Share

Shulou(Shulou.com)05/31 Report--

这篇文章给大家介绍滚动scroll如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

滚动宽高

scrollHeight

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

scrollWidth

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

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

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

//120 120console.log(test.scrollHeight,test.scrollWidth);//120 120console.log(test.clientHeight,test.clientWidth);

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

内容

内容

//103(120-17) 103(120-17)console.log(test.scrollHeight,test.scrollWidth);//103(120-17) 103(120-17)console.log(test.clientHeight,test.clientWidth);

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

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

内容//chrome/safari:220(200+10+10)//firefox/IE:210(200+10)console.log(test.scrollHeight);//103(120-17)console.log(test.clientHeight);页面尺寸

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返回元素内容大小

//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)

兼容

因此要取得文档实际高度时,要取得元素的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 内容点击btn1.onclick = function(){ result[xss_clean] = 'scrollTop:' + test.scrollTop+';clientHeight:' + test.clientHeight + ';scrollHeight:' + test.scrollHeight}

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

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

内容向下滚动向上滚动btn1.onclick = function(){test.scrollTop += 10;}btn2.onclick = function(){test.scrollTop -= 10;}页面滚动

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

点击btn1.onclick = function(){ result[xss_clean] = 'html的scrollTop:' + document.documentElement.scrollTop +';body的scrollTop:' + document.body.scrollTop;}

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

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; }}回到顶部function scrollTop(){ if((document.body.scrollTop || document.documentElement.scrollTop) != 0){ document.body.scrollTop = document.documentElement.scrollTop = 0; }}btn.onclick = scrollTop;

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

pageXOffset

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

pageYOffset

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

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

点击btn1.onclick = function(){ result[xss_clean] = 'pageYOffset:' + window.pageYOffset;} 滚动方法

scrollTo(x,y)

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

滚动btn.onclick = function(){scrollTo(0,0);}

scrollBy(x,y)

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

向下滚动向上滚动btn1.onclick = function(){scrollBy(0,100);}btn2.onclick = function(){scrollBy(0,-100);}

【小应用】

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

开始滚动停止滚动var timer = 0;btn1.onclick = function(){ timer = setInterval(function(){ scrollBy(0,10); },100)}btn2.onclick = function(){ clearInterval(timer); timer = 0;}

scrollIntoView()

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

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

滚动到页面开头滚动到页面结尾btn1.onclick = function(){ test.scrollIntoView();};btn2.onclick = function(){ test.scrollIntoView(false);}

scrollIntoViewIfNeeded()

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

如果将可选的alignCenter参数设置为true,则表示尽量将元素显示在视口中部(垂直方向)

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

滚动到页面中间btn.onclick = function(){ test.scrollIntoViewIfNeeded(true)};

scrollByLines(lineCount)

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

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

内容向下滚动向上滚动btn1.onclick = function(){test.scrollByLines(1);}btn2.onclick = function(){test.scrollByLines(-1);}

scrollByPages(pageCount)

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

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

内容向下滚动向上滚动btn1.onclick = function(){test.scrollByPages(1);}btn2.onclick = function(){test.scrollByPages(-1);}滚动事件

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

_window.onscroll = function(){ result[xss_clean] = '页面的scrollTop:' + (document.documentElement.scrollTop||document.body.scrollTop);} 关于滚动scroll如何理解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Network Security

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report