JavaScript仿淘宝实现固定右侧侧边栏

 更新时间:2022年03月08日 10:13:33   作者:一夕ξ  
这篇文章主要为大家详细介绍了如何利用JavaScript实现仿淘宝固定右侧侧边栏效果,文中示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下

<!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>
        .rightlan {
            position: absolute;
            top: 300px;
            right: 0px
        }
        
        .box {
            position: relative;
            overflow-y: scroll;
            height: 800px;
        }
        
        .toll {
            width: 60px;
            height: 400px;
        }
        
        .toll a {
            /* 后面单独设置a里面的个例的时候要注意级别 */
            display: inline-block;
            width: 40px;
            height: 60px;
            text-align: center;
            margin: 5px;
            text-decoration: none;
            color: black
        }
        
        .toll .top {
            display: none;
        }
        
        .neir {
            width: 2000px;
            height: 1000px;
            position: absolute;
            top: 10px;
            right: 100px;
        }
    </style>
</head>
 
<body>
    <div class="box">
        <div class="neir"> 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div>
 
        <div class="rightlan">
            <div class="toll">
                <a href="">品质好货</a>
                <a href="">猜你喜欢</a>
                <a href="" class=" rel="external nofollow" top">顶部</a>
                <a href="">反馈</a>
                <a href="">暴恐举报</a>
            </div>
        </div>
 
    </div>
    <script>
        //当box滚动的时候,滚动到一定的距离后。top就显示出来
        var box = document.querySelector('.box')
        var top = document.querySelector('.top')
        var neir = document.querySelector('.neir')
        var toll = document.querySelector('.toll')
        var rightlan = document.querySelector('.rightlan')
        console.log(box)
        box.addEventListener('scroll', function() {
 
            if (box.scrollTop >= 100) { //侧边栏固定
                rightlan.style.top = 100 + box.scrollTop + 'px'
                toll.children[2].style.display = 'block' //z注意级别index。
            } else {
                toll.children[2].style.display = 'none'
            }
        })
    </script>
</body>
 
</html>

1、原先的侧边栏是绝对定位

2、当页面滚动到一定位置后,侧边栏为固定定位

3、页面继续滚动,会上返回顶部显示出来

问题:滚动一定位置,包含内容的盒子.scrollWidth;但要求是浏览器的滚动条

1、需要用到页面滚动事件scroll,因为是页面滚动,所以事件源是document

当滚到到banner时,盒子就变为固定定位

2、页面被卷去的头部:可以通过window.pageYOffset来获得,如果是被卷曲的左侧window.pageXOffset          (原来问题出在了这里)

3、注意:元素被卷去的头部是element.scrollTop,如果是页面被卷去的头部则是window.pageYOffset

妙啊,对原来的程序做出修改:

    <script>
        //当box滚动的时候,滚动到一定的距离后。top就显示出来
        var box = document.querySelector('.box')
        var top = document.querySelector('.top')
        var neir = document.querySelector('.neir')
        var toll = document.querySelector('.toll')
        var rightlan = document.querySelector('.rightlan')
 
        document.addEventListener('scroll', function() {
 
            if (window.pageYOffset >= 100) { //侧边栏固定
                rightlan.style.top = 100 + box.scrollTop + 'px'
                toll.children[2].style.display = 'block' //z注意级别index。
            } else {
                toll.children[2].style.display = 'none'
            }
        })
    </script>

就可以实现了。只是忘记了盒子改为固定定位 

            if (window.pageYOffset >= 100) { //侧边栏固定
                rightlan.style.position = 'fixed'
                rightlan.style.top = '100px'
                rightlan.style.right = '0px'
                toll.children[2].style.display = 'block' //z注意级别index。
            } else {
                toll.children[2].style.display = 'none'
            }
        })

<!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>
        span {
            display: none;
            position: absolute;
            bottom: 0px
        }
        
        .slider-bar {
            width: 40px;
            height: 100px;
            background-color: grey;
            position: absolute;
            top: 360px;
        }
        
        .header,
        .banner,
        .main {
            width: 700px;
            height: 200px;
            margin-top: 30px;
            margin-left: 80px
        }
        
        .header {
            background-color: red;
        }
        
        .banner {
            background-color: blue;
        }
        
        .main {
            background-color: skyblue;
            height: 1900px
        }
    </style>
</head>
 
<body>
    <div class="slider-bar"><span class="goback">返回顶部</span></div>
    <div class="header">头部区域</div>
    <div class="banner">banner区域</div>
    <div class="main">主体部分</div>
    <script>
        var slider = document.querySelector('.slider-bar')
        var banner = document.querySelector('.banner')
        slider.style.left = banner.offsetLeft + banner.offsetWidth + 'px'
        var a = banner.offsetTop //一定要写在滚动的前面,不然就不准确
        var goback = document.querySelector('.goback')
            //当侧边栏固定定位之后应该变化的值
        var b = slider.offsetTop - banner.offsetTop
        var main = document.querySelector('.main')
            //主体部分相对于页面的高度
        var c = main.offsetTop
            //页面滚动事件
        document.addEventListener('scroll', function() {
            console.log(window.pageYOffset)
                //当页面被卷去的头部大于等于262,侧边栏就改为固定定位
            if (window.pageYOffset >= a) {
 
                slider.style.position = 'fixed' //效果会跳一下  这是因为改为固定定位后,top值还是360px不变
                slider.style.top = b + 'px'
            }
            //小于的时候,就改为绝对定位
            else {
                slider.style.position = 'absolute' //效果会跳一下  这是因为改为绝对定位后,还保留了固定定位时候的top值
                    //修改top值
                slider.style.top = 360 + 'px'
            }
            //页面滚动到主体部分时候,goback显示出
 
            if (window.pageYOffset >= c) {
                goback.style.display = 'block'
            }
            //否则就不显示
            else {
                goback.style.display = 'none'
            }
        })
    </script>
</body>
 
</html>

fixed:固定定位:元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。

使用粘性定位,对slider进行处理,这样就不需要判断滚动距离,来对slider的定位进行修改。而是页面一滚动就设置slider的position属性为粘性定位,当他到达距离页面顶部一定距离后,就固定在页面的某个位置。可以达到相同的效果

    <script>
        var slider = document.querySelector('.slider-bar')
        var banner = document.querySelector('.banner')
        slider.style.left = banner.offsetLeft + banner.offsetWidth + 'px'
        var a = banner.offsetTop //一定要写在滚动的前面,不然就不准确
        var goback = document.querySelector('.goback')
            //当侧边栏固定定位之后应该变化的值
        var b = slider.offsetTop - banner.offsetTop
        var main = document.querySelector('.main')
            //主体部分相对于页面的高度
        var c = main.offsetTop
            //页面滚动事件
        document.addEventListener('scroll', function() {
            console.log(window.pageYOffset)
                //当页面被卷去的头部大于等于262,侧边栏就改为固定定位
                // if (window.pageYOffset >= a) { //banner开始出现,设置为粘性定位。
 
            // slider.style.position = 'fixed' //效果会跳一下  这是因为改为固定定位后,top值还是360px不变
            // slider.style.top = b + 'px'
            // }
            slider.style.position = 'fixed'
            slider.style.top = banner.offsetHeight - slider.offsetHeight + 'px'
                //小于的时候,就改为绝对定位
            if (window.pageYOffset < a) {
                slider.style.position = 'absolute' //效果会跳一下  这是因为改为绝对定位后,还保留了固定定位时候的top值
                    //修改top值
                slider.style.top = 360 + 'px'
            }
            //页面滚动到主体部分时候,goback显示出
 
            if (window.pageYOffset >= c) {
                goback.style.display = 'block'
            }
            //否则就不显示
            else {
                goback.style.display = 'none'
            }
        })
    </script>

sticky:粘性定位。元素在跨越特定阈值前为相对定位,之后为固定定位

#one { position: sticky; top: 10px; }

在 viewport 视口滚动到元素 top 距离小于 10px 之前,元素为相对定位。之后,元素将固定在与顶部距离 10px 的位置,直到 viewport 视口回滚到阈值以下。

缺点就是兼容性差,当时课上说了解,就没怎么使用。确实比用JS写要方便很多

使用粘性定位实现。但是不知道第一种是怎么实现的。两个dt间隔一定距离后,上面那个dt就取消粘性定位

<!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>
        article {
            max-width: 600px;
            margin: 1em auto
        }
        
        article h4,
        article footer {
            position: -webkit-sticky;
            position: sticky;
        }
        
        article h4 {
            margin: 2em 0 0;
            background-color: #333;
            padding: 10px;
            color: #fff;
            top: 0px;
            z-index: 1
        }
        
        article content {
            display: block;
            background-color: #ffffe0;
            position: relative;
            padding: 1px 10px
        }
        
        article footer {
            background-color: #f0f3f9;
            padding: 10px;
            z-index: -1;
            bottom: 50vh
        }
    </style>
</head>
 
<body>
    <article>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>123。</p>
            </content>
            <footer>评论</footer>
        </section>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>2323</p>
            </content>
            <footer>评论</footer>
        </section>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>2323</p>
            </content>
            <footer>评论</footer>
        </section>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>2323</p>
            </content>
            <footer>评论</footer>
        </section>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>2323</p>
            </content>
            <footer>评论</footer>
        </section>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>2323</p>
            </content>
            <footer>评论</footer>
        </section>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>2323</p>
            </content>
            <footer>评论</footer>
        </section>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>2323</p>
            </content>
            <footer>评论</footer>
        </section>
        <section>
            <h4>
                1234
            </h4>
            <content>
                <p>2323</p>
            </content>
            <footer>评论</footer>
        </section>
    </article>
</body>
 
</html>

以上就是JavaScript仿淘宝实现固定右侧侧边栏的详细内容,更多关于JavaScript固定侧边栏的资料请关注脚本之家其它相关文章!

相关文章

  • JavaScript高级程序设计 阅读笔记(十五) 浏览器中的JavaScript

    JavaScript高级程序设计 阅读笔记(十五) 浏览器中的JavaScript

    Window对象对操作浏览器窗口非常有用,开发者可以移动或调整浏览器窗口的大小
    2012-08-08
  • layui点击导航栏刷新tab页的示例代码

    layui点击导航栏刷新tab页的示例代码

    今天小编就为大家分享一篇layui点击导航栏刷新tab页的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • JS ES6多行字符串与连接字符串的表示方法

    JS ES6多行字符串与连接字符串的表示方法

    这篇文章主要介绍了JS ES6多行字符串与连接字符串的表示方法,结合具体实例形式对比分析了ES6中的多行字符串与连接字符串的表示方法与相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • JavaScript获取对象key的几种方法和区别

    JavaScript获取对象key的几种方法和区别

    这篇文章主要介绍了JavaScript获取对象key的几种方法和区别,下面文章更多的相关资料需要的小伙伴可以参考一下,希望对你有所帮助
    2022-03-03
  • 浅谈下拉菜单中的Option对象

    浅谈下拉菜单中的Option对象

    Option 对象代表 HTML 表单中下拉列表中的一个选项。在 HTML 表单中 <option> 标签每出现一次,一个 Option 对象就会被创建。您可通过表单的 elements[] 数组访问一个 Option 对象,或者通过使用 document.getElementById()。
    2015-05-05
  • JS实现自适应高度表单文本框的方法

    JS实现自适应高度表单文本框的方法

    这篇文章主要介绍了JS实现自适应高度表单文本框的方法,实例分析了针对IE内核与非IE内核下的javascript控制文本框样式的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • 通过JS运行机制的角度说说作用域

    通过JS运行机制的角度说说作用域

    这篇文章主要给大家介绍了如何通过JS运行机制的角度说说作用域的相关资料,文中通过图文介绍的非常详细,对大家的学习或者使用JS作用域具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • JavaScript清空数组元素的两种方法简单比较

    JavaScript清空数组元素的两种方法简单比较

    这篇文章主要介绍了JavaScript清空数组元素的两种方法简单比较,罗列了几种常见的情况javascript数组的方法,并且比较了其中的两种常见方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Javascript 浮点运算的问题分析与解决方法

    Javascript 浮点运算的问题分析与解决方法

    JavaScript 只有一种数字类型 Number ,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的。 浮点数的精度问题不是JavaScript特有的,因为有些小数以二进制表示位数是无穷的
    2013-08-08
  • Js数组对象如何根据多个key值进行分类

    Js数组对象如何根据多个key值进行分类

    这篇文章主要介绍了Js数组对象如何根据多个key值进行分类,每周从 npm 下载 lodash.groupBy 的次数在 150 万到 200 万之间,很高兴看到 JavaScript 填补了这些空白,让我们的工作变得更加轻松,需要的朋友可以参考下
    2024-02-02

最新评论