35.滚动 scroll

目录

1  返回自身宽度 element.scrollWidth

2  返回自身高度 element.scrollHeight

3  sroll返回自身尺寸与client返回自身尺寸的区别

4  被卷去的上侧距离 element.scrollTop

5  被卷去的左侧距离 element.scrollLeft

6  模仿淘宝侧边栏

7  页面移动到指定位置 window.scroll(x,y)

8  页面被卷去的上侧距离 window.pageYOffset

9  页面被卷去的左侧距离 window.pageXOffset


scroll与滚动条相关,主要有下面几个属性

与其他大小属性的区别如下

1  返回自身宽度 element.scrollWidth

scrollWidth返回的数值中包含padding,但不包含border与margin。scrollWidth返回的结果没有单位

  • 123 = 103 + 10 * 2

2  返回自身高度 element.scrollHeight

scrollHeight返回的数值中包含padding,但不包含border与margin。scrollHeight返回的结果没有单位

  • 186 = 166 + 10 * 2

3  sroll返回自身尺寸与client返回自身尺寸的区别

盒子中的内容超出了盒子本身尺寸的时候,scroll是按照内容走的,client不管内容只按照盒子原来的尺寸走

宽度如果超出和高度一样

4  被卷去的上侧距离 element.scrollTop

下面图的红色框子是div盒子的可视区域

把滚动条搞出来后,搞一个按钮进行监测

没滚动的时候是0

5  被卷去的左侧距离 element.scrollLeft

我们将div中的内容设置为不换行,然后搞个按钮监测

6  模仿淘宝侧边栏

打开之后的侧边栏是这样的

当滚到一定程度后会增加一个会顶部

代码是这样的

<!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>Document</title>
    <style>
        body {
            height:3000px;
            background-color: rgb(232,226,224);
        }

        .alongside {
            position: fixed;
            top: 50%;
            right:0px;
            transform: translate(0,-50%);
            width:80px;
            background-color: white;
            border-radius: 20px 0px 0px 20px;
        }

        div {
            height:60px;
            display:flex;
            flex-direction: column;
            align-items: center;
            font-size: 12px;
            padding:5px;
        }

        .return_top {
            display:none;
        }

    </style>
</head>
<body>
    <section class="alongside">
        <div>
            <img src="images/官方客服.png" alt="">
            <span>官方客服</span>
        </div>
        <div>
            <img src="images/反馈.png" alt="">
            <span>反馈</span>
        </div>
        <div>
            <img src="images/举报.png" alt="">
            <span>举报</span>
        </div>
        <div class="return_top">
            <img src="images/回顶部.png" alt="">
            <span>回顶部</span>
        </div>
    </section>
</body>
<script>
    return_top = document.querySelector('.return_top')
    
    document.body.onscroll = function() {
        console.log(document.documentElement.scrollTop)
        if (document.documentElement.scrollTop > 500) {
            return_top.style.display = 'flex';
        }
        else {
            return_top.style.display = 'none';
        }
    }
</script>
</html>

打开后是这样的

滚动到一定的位置回出现回顶部

再滚到上面,回顶部消失

上面代码中使用了 document.documentElement,scrollTop 来获取页面滚动的上侧距离,除此之外还有另外两种方式

DTD是我们html最开始的这句话

可以搞一个照顾兼容性的函数,不过我觉得基本不会用到

7  页面移动到指定位置 window.scroll(x,y)

x,y是要移动到的页面位置左上角点

我们上面没对回顶部设置任何动作,现在我们对其设置点击一下回到顶部

  • 注意scroll的两个参数不加单位

 打开页面后我们把 回顶部 滚出来

然后点击回顶部,发现可以回到顶部

8  页面被卷去的上侧距离 window.pageYOffset

9  页面被卷去的左侧距离 window.pageXOffset

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值