scroll系列

1.scroll(卷页)系列

  1. scrollWidth:元素中内容的实际的宽(包括padding,没有border),如果没有内容就是元素的宽(width+padding)
  2. scrollHeight:元素中内容的实际的高(包括padding,没有border),如果没有内容就是元素的高(height+padding)
  3. scrollLeft:向上卷曲出去的距离
  4. scrollTop:向左卷曲出去的距离

scrollWidth/scrollHeight:

如果元素没有内容,或者内容没有超过元素本身的宽高,那么获取的都是元素本身的宽高

<div id="div1">你好</div>或<div id="div1"></div>:(元素本身的宽高)

<div id="div1">你好你好你好你好你好你好</div>:(元素内容的宽高)

scrollLeft/scrollTop:

2.封装getScroll函数

//获取页面向上或者向左卷曲出去的距离的值
    function getScroll() {
        return {
            //向左
            left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
            //向上
            top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
        };
    }

2.1 固定导航栏案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .main {
            margin: 0 auto;
            margin-top: 10px;
            width: 1000px;
        }

        .fixed {
            position: fixed;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
<div class="top" id="topPart">
    <img src="images/top.png" alt=""/>
</div>
<div class="nav" id="navBar">
    <img src="images/nav.png" alt=""/>
</div>
<div class="main" id="mainPart">
    <img src="images/main.png" alt=""/>
</div>
<script>
    function my$(id) {
        return document.getElementById(id);
    }

    //  function getScroll() {
    //    var obj={};
    //    var top1=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;
    //    var left=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft|| 0;
    //    obj.left=left;
    //    obj.top=top1;
    //    return obj;
    //
    //  }

    //  function getScroll() {
    //    var obj={};
    //    obj.left=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft|| 0;
    //    obj.top=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;
    //    return obj;
    //
    //  }


    //  function getScroll() {
    //    var obj = {
    //      left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft|| 0,
    //      top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
    //  };
    //    return obj;
    //
    //  }

    //获取页面向上或者向左卷曲出去的距离的值
    function getScroll() {
        return {
            //向左
            left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
            //向上
            top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
        };
    }

    //浏览器滚动事件
    window.onscroll = function () {
        //判断向上卷曲出去的距离和id="topPart"的div的高度对比
        if (getScroll().top >= my$("topPart").offsetHeight) {
            my$("navBar").className = "nav fixed";
            //navBar此时脱离了文档流,为了使mainPart还保持在原位
            my$("mainPart").style.marginTop = my$("topPart").offsetHeight + "px";
        } else {
            my$("navBar").className="nav";
            my$("mainPart").style.marginTop="10px";
        }
    };
</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值