Javascript-Scroll系列

Javascript-Scroll系列

scroll系列属性作用
element.scrollTop返回被卷去的上侧距离,返回数值不带单位
element.scrollLeft返回被卷去的左侧距离,返回数值不带单位
element.scrollWidth返回自身的实际宽度,不含边框,返回数值不带单位
element.scrollHeight返回自身的实际高度,不含边框,返回数值不带单位

区分

  • 页面被卷去的头部,可以通过 window.pageYOffset获得,如果是被卷去的左侧 window.pageXOffset
  • 元素被卷去的头部是 element.scrollTop,如果是页面被卷去的头部则是 window.pageYOffset

三大系列总结

三大系列大小对比作用
element.offsetWidth返回自身包括padding边框、内容区的宽度、返回数值不带单位
element.clientWidth返回自身包括padding 内容区的宽度,不包含边框,返回数值不带单位
element.scrollWidth返回自身实际的宽度、不包含边框,返回数值不带单位

主要用法

  1. offset 系列经常用于获得元素的位置 offsetLeft offsetTop
  2. client 经常用于获取元素大小clientWidth clientHeight
  3. scroll 经常用于获取滚动距离 scrollTop scrollLeft
  4. 注意页面的滚动距离通过 window.pageXOffset 获得

模块演示

  • 效果演示

    scroll
  • css源码

     * {
                margin: 0;
                padding: 0;
            }
    
            .box {
                width: 900px;
                margin: 0 auto;
            }
    
            .box div {
                font-size: 30px;
                text-align: center;
                color: #fff;
                font-weight: 700;
                width: 900px;
                height: 800px;
            }
    
            .box div:nth-child(1) {
                background-color: green;
            }
    
            .box div:nth-child(2) {
                background-color: blue;
            }
    
            .box div:nth-child(3) {
                background-color: purple;
            }
    
            .slider-bar {
                display: none;
                position: fixed;
                right: 20px;
                top: 100px;
                width: 150px;
                height: 100px;
    
                background-color: red;
            }
    
            .slider-bar span {
                position: absolute;
                left: 50%;
                top: 50%;
                transform: translate(-50%, -50%);
                text-align: center;
                display: block;
                width: 150px;
                height: 35px;
                color: yellow;
                line-height: 35px;
                cursor: pointer;
            }
    
            .slider-bar span:hover {
                color: #fff;
            }
    
  • html结构

    <div class="slider-bar">
            <span> 返回顶部</span>
        </div>
        <div class="box">
            <div>1</div>
            <div>2</div>
            <div>3</div>
        </div>
    
  • JS原理分析

      var _box = document.querySelector('.box');
            // console.log(_divs); nodeList = 3
            var _divs = _box.querySelectorAll('div');
            // 侧边栏 
            var _sliderBar = document.querySelector('.slider-bar');
            // console.log(_divs[1]);
            // 当页面滚动到 .box下第二个 div 显示 slider-bar 
            var _offsetTop = _divs[1].offsetTop;
    
            document.addEventListener('scroll', function () {
                // 获取第二个 div 的高度 包含边框 
                if (window.pageYOffset >= _offsetTop) {
                    _sliderBar.style.display = 'block';
                } else {
                    _sliderBar.style.display = 'none';
                }
            });
    
    
            // 兼容性处理
            function getScroll() {
                return {
                    left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
                    top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
                };
            }
            getScroll().top;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值