小程序相关文档资料

滚动scroll

2017-12-11  本文已影响0人  小新子666
1、滚动宽高

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

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

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

scrollWidth和clientWidth的宽度等于width+padding(左右)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>倒计时</title>
    <style type="text/css">
        #box{
            width: 100px;
            height: 100px;
            padding: 10px;
            margin: 10px;
            border: 1px solid blac
        }
    </style>
</head>
<body>
    <div id ="box"> </div>      
    <script type="text/javascript">
        var box=document.getElementById("box");
        console.log(box.scrollHeight,box.scrollWidth); //120   120
        console.log(box.clientHeight,box.clientWidth); //120   120
    </script>
</body>
</html>

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

scrollWidth和clientWidth的宽度等于width+padding(左右)-滚动条的宽度。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>倒计时</title>
    <style type="text/css">
        #box{
            width: 100px;
            height: 100px;
            padding: 10px;
            margin: 10px;
            border: 1px solid black;
            overflow: scroll;
        }
    </style>
</head>
<body>
    <div id ="box">
        内容<br>内容<br>
    </div>      
    <script type="text/javascript">
        var box=document.getElementById("box");
        console.log(box.scrollHeight,box.scrollWidth); //103   103
        console.log(box.clientHeight,box.clientWidth); //103   103
    </script>
</body>
</html>

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>倒计时</title>
    <style type="text/css">
        #box{
            width: 100px;
            height: 100px;
            padding: 10px;
            margin: 10px;
            border: 1px solid black;
            overflow: scroll;
            line-height: 200px;
        }
    </style>
</head>
<body>
    <div id ="box">
        内容<br>内容<br>
    </div>      
    <script type="text/javascript">
        var box=document.getElementById("box");
        console.log(box.scrollHeight,box.scrollWidth); //420   103
        console.log(box.clientHeight,box.clientWidth); //103   103
    </script>
</body>
</html>
2、页面尺寸

document.documentElement.clientHeight表示页面的可视区域的尺寸
document.documentElement.scrollHeight表示html元素内容的实际尺寸。

响应式字体大小的设置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        html, body{
            font-size: 50px;
        }

        .box{
            font-size: 1rem;
        }
    </style>
</head>
<body>
    <div class="box">hello</div>
    <script>
        window.onresize = function () {
            var w = document.documentElement.clientWidth;
            document.documentElement.style.fontSize = 50 * w / 1366 + "px";
        }
    </script>
</body>
</html>
3、滚动长度。

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

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

当滚动条到页面底部时,符合:scrollHeight==scrollTop+clientHeight

<div id="test" style="width: 100px;height: 100px;padding: 10px;margin: 10px;border: 1px solid black;overflow:scroll;font-size:20px;line-height:200px;">
    内容</div>
<button id='btn1'>点击</button>
<div id="result"></div>
<script>
btn1.onclick = function(){
    result.innerHTML = 'scrollTop:' + test.scrollTop+';clientHeight:' + test.clientHeight + ';scrollHeight:' + test.scrollHeight
}
</script>
<body>
    <div id="test" style="width: 100px;height: 100px;padding: 10px;margin: 10px;border: 1px solid black;overflow:scroll;font-size:20px;line-height:200px;">
    内容</div>
    <button id='btn1'>向下滚动</button>
    <button id='btn2'>向上滚动</button>
<script>
    btn1.onclick = function(){test.scrollTop += 10;}
    btn2.onclick = function(){test.scrollTop -= 10;}
</script>
</body>

响应式网站导航条滑动一定高度加个背景

<script>
    $(window).scroll(function () {
        var scrollTop = $(this).scrollTop();
        if (scrollTop >= 500) {
            $("nav").addClass("scrollStyle");
        } else {
            $("nav").removeClass("scrollStyle");
        }
    });
</script>
4、页面滚动

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

<body style="height:1000px">
<button id='btn1' style="position:fixed;top:0;">点击</button>
<div id="result" style="position:fixed;top:30px;"></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

回到顶部

<body style="height:1000px">
<button id='btn' style="position:fixed">回到顶部</button>
<script>
function scrollTop(){
    if((document.body.scrollTop || document.documentElement.scrollTop) != 0){
        document.body.scrollTop = document.documentElement.scrollTop = 0;
    }
}
btn.onclick = scrollTop;
</script>
</body>
上一篇下一篇

猜你喜欢

热点阅读