滚动scroll如何理解

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

成都创新互联公司拥有十余年成都网站建设工作经验,为各大企业提供成都网站设计、网站制作服务,对于网页设计、PC网站建设(电脑版网站建设)、app开发定制、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、申请域名等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。

滚动宽高

scrollHeight

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

scrollWidth

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

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

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

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


    内容
内容

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

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


    内容

页面尺寸

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

兼容

因此要取得文档实际高度时,要取得元素的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

    内容
点击

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

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


    内容向下滚动向上滚动

页面滚动

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

点击    

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

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;
    }
}

回到顶部

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

pageXOffset

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

pageYOffset

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

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

点击    

滚动方法

scrollTo(x,y)

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

滚动

scrollBy(x,y)

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

向下滚动向上滚动

【小应用】

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

开始滚动停止滚动

scrollIntoView()

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

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

滚动到页面开头滚动到页面结尾

scrollIntoViewIfNeeded()

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

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

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

滚动到页面中间

scrollByLines(lineCount)

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

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


    内容向下滚动向上滚动

scrollByPages(pageCount)

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

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


    内容向下滚动向上滚动

滚动事件

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

    

关于滚动scroll如何理解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享文章:滚动scroll如何理解
分享URL:http://ybzwz.com/article/ijpjdc.html