• 原生js实现随着滚动条滚动,导航会自动切换的效果


    最近学习前端,把前面用原生js写的一段有关tab切换效果的代码贴上,实现的效果比较简陋,请大家见谅

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>随着滚动条滚动的Tab切换</title>
    <style>
    *{
        list-style:none;
        margin:0;
        padding:0;
        text-decoration:none;
        font-family:'Microsoft YaHei';
     
    }
    li{
        width:100px;
        height:50px;
        line-height:50px;
        float:left;
        border-right:2px solid #eee;
        text-align:center;
        cursor:pointer;
    }
    ul{
        width:1200px;   
        margin:0 auto;
    }
    .nav{
        height:52px;
        width:100%;
        background:#f5f5f5;
    }
    .nav .cur{
        background:#fff;
        border-top:2px solid #1a92cf;
        color:#1a92cf;
    }
    .fixed{
        position:fixed;
        top:0;
        left:0;
    }
    a{
        color:#505050;
    }
    </style>
    </head>
    <body>
    <br/><br/><br/><br/><br/><br/><br/>
    <div class="nav" id="nav-container">
        <ul id="nav-box">`
            <li class="cur">text1-nav</li>
            <li>text2-nav</li>
            <li>text3-nav</li>
        </ul>
    </div>
    <div id="text">
        <div style="100%;height:500px;background:green;text-align:center;">text1</div>
        <div style="100%;height:500px;background:yellow;text-align:center;">text2</div>
        <div style="100%;height:500px;background:blue;text-align:center;">text3</div> 
    </div>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
     
    <script>
    var navContainer = document.getElementById("nav-container");
    var navBox = document.getElementById("nav-box");
    var text = document.getElementById("text");
    var navBoxChild = navBox.children;
    var textChild = text.children;
    var num = navContainer.offsetTop;
    var a = navContainer.offsetHeight;
    window.onscroll = function(){
        var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
        if(scrollTop >= num){
            navContainer.className = "nav fixed";
            text.style.paddingTop = a +"px";
        }else{
            navContainer.className = "nav";
            text.style.paddingTop = "";
        }
        //当导航与相应文档接触的时候自动切换
        //method1
        for(var i=0;i<navBoxChild.length;i++){
            if( scrollTop + a >= textChild[i].offsetTop){
                for(var j=0;j<navBoxChild.length;j++){
                    navBoxChild[j].className = "";
                }
                navBoxChild[i].className = "cur";
           }
        }
    };
    for(var i=0;i<navBoxChild.length;i++){
        var interval;
        navBoxChild[i].index = i;
        navBoxChild[i].onclick = function(){
            var self = this;
            clearInterval(interval);
            interval = setInterval(function(){
                if(document.body.scrollTop + a<=textChild[self.index].offsetTop){
                    document.body.scrollTop += 40;
                    if(document.body.scrollTop + a>=textChild[self.index].offsetTop){
                        document.body.scrollTop = textChild[self.index].offsetTop-a;
                        clearInterval(interval);
                    }
                }else{
                    document.body.scrollTop /= 1.1;
                    if(document.body.scrollTop + a<=textChild[self.index].offsetTop){
                        document.body.scrollTop = textChild[self.index].offsetTop-a;
                        clearInterval(interval);
                    }
                }
            },40);
        };
    }
    </script>  
    </body>
    </html>

    大家有兴趣的可以复制下看下效果,谢谢大家浏览!
    原文链接:https://blog.csdn.net/wl7175/article/details/52068112/

  • 相关阅读:
    【二分匹配】【匈牙利算法即由增广路求最大匹配模板】
    【字符串入门专题1】【hdu4763】【未ac题】【扩展kmp exkmp】
    【字符串入门专题1】hdu3613 【一个悲伤的exkmp】
    【如何用XAMPP搭建Wordpress建站环境】
    面向过程要素
    当前阶段--可确定--完善版--学习结构--2016.09.10
    什么时候用工厂模式-----转载
    《EffectiveJava中文版》
    《ARM LINUX内核源码解析》
    《深入分析javaweb技术内幕》
  • 原文地址:https://www.cnblogs.com/sevene/p/12132519.html
Copyright © 2020-2023  润新知