BOM ------ scroll 系列

简介: BOM ------ scroll 系列

scroll 系列

element.scrollTop: 返回被卷去的上册距离,返回数值不带单位

element.scrollLeft: 返回被卷去的左侧距离, 返回数值不带单位

element.scrollHeight: 返回自身实际的高度, 不含边框, 返回数值不带单位

element.scrollWidth: 返回自身实际的宽度, 不含边框, 返回数值不带单位


实例17fc52c272884471834deab07706f421.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>scroll系列</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: lightblue;
            border: 10px solid red;
            padding: 10px;
            overflow: auto;
        }
    </style>
</head>
<body>
    <div>
        我是内容 内容很多 内容很多 内容很多 内容很多 内容很多 内容很多 内容很多 内容很多 内容很多 内容很多 内容很多 内容很多 内容很多
    </div>
    <script>
        // scroll 系列
        var div = document.querySelector('div')
        console.log(div.scrollHeight);
        console.log(div.clientHeight);
        // scroll滚动事件 当我们滚动条发生变化会触发的事件
        div.addEventListener('scroll', function(){
            console.log(div.scrollTop);
        })
    </script>
</body>
</html>

仿淘宝固定右侧侧边栏

f3582bf6bc0a4e7aba9941021d00c249.png

54caa9124d8a4642b0a3fc6c576b09cc.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>固定侧边栏</title>
    <style>
        .slider-bar {
            position: absolute;
            left: 50%;
            top: 300px;
            margin-left: 600px;
            width: 45px;
            height: 130px;
            background-color: pink;
        }
        .w {
            width: 1200px;
            margin: 10px auto;
        }
        .header {
            height: 150px;
            background-color: purple;
        }
        .banner {
            height: 250px;
            background-color: skyblue;
        }
        .main {
            height: 1000px;
            background-color: yellowgreen;
        }
        span {
            display: none;
            position: absolute;
            bottom: 0;
        }
    </style>
</head>
<body>
    <div class="slider-bar">
        <span class="goBack">返回顶部</span>
    </div>
    <div class="header w">头部区域</div>
    <div class="banner w">banner区域</div>
    <div class="main w">主体部分</div>
    <script>
        //1.获取元素
        var sliderbar = document.querySelector('.slider-bar')
        var banner = document.querySelector('.banner')
        console.log(banner.offsetTop);
        // banner.offsetTop 就是被卷去头部的大小
        var bannerTop = banner.offsetTop
        // 当我们侧边栏固定定位之后应该变化的数值
        var sliderbarTop = sliderbar.offsetTop - bannerTop
        //获取main 主体元素
        var main = document.querySelector('.main')
        var goBack = document.querySelector('.goBack')
        var mainTop = main.offsetTop
        //2.页面滚动事件 scroll
        document.addEventListener('scroll', function(){
            // window.pageYOffset页面被卷去的头部
            // console.log(window.pageYOffset);
            //3.我们页面被卷去的头部大于等于 172 此时侧边定位改为固定定位
            if(window.pageYOffset >= bannerTop ){
                sliderbar.style.position = 'fixed'    
                sliderbar.style.top = sliderbarTop + 'px' 
            }else{
                sliderbar.style.position = 'absolute'
                sliderbar.style.top = '300px'
            }
            //4.当页面滚动到main盒子 就显示 goBack模块
            if(window.pageYOffset >= mainTop ){
                goBack.style.display = 'block'    
            }else{
                goBack.style.display = 'none'
            }
        })
    </script>
</body>
</html>

三大系列总结

element.offsetWidth 返回自身包括padding 边框 内容区的宽度 返回数值不带单位


element.clientWidth 返回自身包括padding 内容区的宽度 不含边框 返回数值不带单位


element.scrollWidth 返回自身实际的宽度 不含边框 返回数值不带单位


offset系列 常用于获取元素位置 offsetLeft offsetTop


client系列 常用于获取元素大小 clientWidth clientHeight


scroll系列 常用于获取滚动距离 scrollTop scrollLeft

注意页面滚动的距离通过window.pageXOffset 获得

不积跬步无以至千里 不积小流无以成江海

相关文章
|
小程序 JavaScript
小程序----事件绑定
小程序----事件绑定
|
JavaScript
BOM ------ 动画实现
BOM ------ 动画实现
|
JavaScript 前端开发 内存技术
BOM ------ Window 常见事件
BOM ------ Window 常见事件
|
JavaScript
BOM ------ mouseenter 和 mouseover 的区别
BOM ------ mouseenter 和 mouseover 的区别
|
JavaScript 算法
BOM ------ 缓动效果
BOM ------ 缓动效果
|
JavaScript
BOM ------ offset 和 style的区别
BOM ------ offset 和 style的区别
|
JavaScript Go
BOM ------ history对象
BOM ------ history对象
|
JavaScript
BOM ------ 立即执行函数
BOM ------ 立即执行函数
|
JavaScript
BOM ------ offset 实例
BOM ------ offset 实例
|
JavaScript
BOM ------ location对象 & navigator对象
BOM ------ location对象 & navigator对象