• scrollTop、scrollHeight与clientHeight


    MDN上概念

    scrollTop:获取或设置一个元素的内容垂直滚动的像素数。

    scrollHeight:一个元素内容高度的度量,包括由于溢出导致的视图中不可见内容。

    clientHeight:元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距。

    只看概念,似懂非懂,还是要自己测试一遍才知道,做个记录,以下为谷歌浏览器测试。

    css

    .box {
            height: 500px;
             300px;
            overflow: scroll;
            color: #fff;
        }
    

    html

    <div class="box">
        <div>鸟语花香</div>
        <div>鸟语花香</div>
        ...
        <div>鸟语花香</div>
    </div>
    

    来看看scrollTop、scrollHeight与clientHeight都是多少

    console.log("scrollTop:"+div.scrollTop)//页面内容的滚动距离
    console.log("scrollHeight:"+div.scrollHeight)//滚动内容的总大小
    console.log("clientHeight:"+div.clientHeight)//滚动容器的高
    

    与magin的关系?css加上margin: 30px;
    结果如下:

    结论:没关系

    与padding的关系?css加上padding: 10px;
    结果如下:

    结论:有关系

    scrollHeight=高度height(滚动内容)+上下padding

    clientHeight=高度height(滚动容器)+上下padding

    与border的关系?css加上border: 14px;
    结果如下:

    结论:没关系

    执行oncroll:

    var div = document.querySelector(".box")
    var istan = true  //加个开关,否则会append好多p标签
    div.onscroll = function () {
        //距离底部300时执行
        if (div.scrollHeight - div.scrollTop < div.clientHeight + 300) {
            if (istan) {
                var p = document.createElement("p")
                p.style.color = "#f40"
                p.innerText = '快到底了'
                div.appendChild(p)
                istan = false
            }
        }
        var hue = 360 - 360 * (div.scrollTop + div.clientHeight) / div.scrollHeight
        //改变背景颜色
        div.style.backgroundColor = 'hsl(' + hue + ',60%,70%)'
    

    如下图:

    判断是否滚动到底

    element.scrollHeight等于element.scrollTop+element.clientHeight的时候说明滚动到底了

    element.scrollHeight - element.scrollTop === element.clientHeight
    

    注:快滑到最后的时候scrollHeight多了53,是添加的p标签的高度(height+margin)

    CSS hsl() 函数

    hsl(hue, saturation, lightness)

    hue 色相 0 (或 360) 为红色, 120 为绿色, 240 为蓝色

    saturation 饱和度 色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值

    lightness 亮度 取0-100%,增加亮度,颜色会向白色变化;减少亮度,颜色会向黑色变化。

    实现效果

    jq操作scroll

    scrollLeft()

    设置或返回匹配元素相对滚动条左侧的偏移。

    scrollTop()

    设置或返回匹配元素相对滚动条顶部的偏移。

  • 相关阅读:
    Android平台架构及特性
    MySQL 数据库性能优化之索引优化
    排序自己总结
    存储过程中“ 警告: 聚合或其他 SET 操作消除了 Null 值” 导致错误的解决
    存储过程的output及return的区别
    如果ssh端口转发时候g没有效果解决方案
    sql语句显示复选内容, indication 为复选框的累计value(整数),显示所有的
    kprfakesu.c Linux su密码欺骗 源码
    Unix/Linux上的后门技术和防范
    iis7应用程序池经常自动停止如何解决?
  • 原文地址:https://www.cnblogs.com/kerin/p/14106999.html
Copyright © 2020-2023  润新知