• JS宣传页项目-综合实战


    按照国际惯例先放图

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
        <!-- 基本样式 -->
        <link rel="stylesheet" href="style.css">
        <!-- 动画效果 -->
        <link rel="stylesheet" href="animate.css">
    </head>
    <body>
        <!-- 导航 -->
        <header class="header">
            <div class="header_wrap">
                <div class="header_logo">XX手机</div>
                <nav class="header_nav">
                    <a href="javascript:;" class="header_nav_item header_nav_item_active">首页</a>
                    <a href="javascript:;" class="header_nav_item">外观</a>
                    <a href="javascript:;" class="header_nav_item">配置</a>
                    <a href="javascript:;" class="header_nav_item">型号</a>
                    <a href="javascript:;" class="header_nav_item">说明</a>
                    <a href="javascript:;" class="header_nav_item header_nav_item_btn">立即购买</a>
                    <div class="header_nav_tip"></div>
                </nav>
            </div>
        </header>
        <!-- 第一屏 -->
        <div class="screen_1">
            <h2 class="screen_1_heading screen_1_heading_animate_init"><b>XX手机</b> 让你的生活更精彩</h2>
            <div class="screen_1_phone screen_1_phone_animate_init"></div>
            <div class="screen_1_shadow screen_1_shadow_animate_init"></div>
        </div>
        <!-- 第二屏 -->
        <div class="screen_2">
            <h2 class="screen_2_title">优美的设计,更令人着迷</h2>
            <h3 class="screen_2_subtitle">采用受欢迎的设计,让它更加出色。<br>款式小巧、轻便手感更舒适。绚丽高清的显示屏,整个外观显得格外精致。</h3>
            <div class="screen_2_phone">
                <div class="screen_2_phone_point screen_2_phone_point1">高清摄像</div>
                <div class="screen_2_phone_point screen_2_phone_point2">超薄机身</div>
                <div class="screen_2_phone_point screen_2_phone_point3">大屏显示</div>
            </div>
        </div>
        <!-- 第三屏 -->
        <div class="screen_3">
            <div class="screen_3_wrap">
                <h2 class="screen_3_title">外形小巧,功能强大的手机</h2>
                <h3 class="screen_3_subtitle">采用受欢迎的设计,让它更加出色。<br> 款式小巧、轻便手感更舒适。绚丽高清的显示屏,整个外观显得格外精致。</h3>
                <div class="screen_3_phone"></div>
                <div class="screen_3_feature">
                    <div class="screen_3_feature_item">
                        <div class="screen_3_feature_item_big">5.7</div>
                        <div class="screen_3_feature_item_small">英寸大屏</div>
                    </div>
                    <div class="screen_3_feature_item">
                        <div class="screen_3_feature_item_big">1200</div>
                        <div class="screen_3_feature_item_small">万像素</div>
                    </div>
                    <div class="screen_3_feature_item">
                        <div class="screen_3_feature_item_big">3D</div>
                        <div class="screen_3_feature_item_small">touch</div>
                    </div>
                    <div class="screen_3_feature_item">
                        <div class="screen_3_feature_item_big">A9</div>
                        <div class="screen_3_feature_item_small">处理器</div>
                    </div>
                </div>
            </div>
        </div>
        <!-- 第四屏 -->
        <div class="screen_4">
            <div class="screen_4_wrap">
                <h2 class="screen_4_heading">丰富的手机型号</h2>
                <h3 class="screen_4_subheading">找到适合你的手机</h3>
                <div class="screen_4_type">
                    <div class="screen_4_type_item screen_4_type_item_i_1">
                        <div class="screen_4_type_item_color">慕课红</div>
                        <div class="screen_4_type_item_storage">16G/32G/64G</div>
                    </div>
                    <div class="screen_4_type_item screen_4_type_item_i_2">
                        <div class="screen_4_type_item_color">土豪金</div>
                        <div class="screen_4_type_item_storage">16G/32G/64G</div>
                    </div>
                    <div class="screen_4_type_item screen_4_type_item_i_3">
                        <div class="screen_4_type_item_color">太空灰</div>
                        <div class="screen_4_type_item_storage">16G/32G/64G</div>
                    </div>
                    <div class="screen_4_type_item screen_4_type_item_i_4">
                        <div class="screen_4_type_item_color">绅士黑</div>
                        <div class="screen_4_type_item_storage">16G/32G/64G</div>
                    </div>
                </div>
            </div>
        </div>
        <!-- 第五屏 -->
        <div class="screen_5">
            <h2 class="screen_5_heading">游戏、学习、拍照、有这一部就够了</h2>
            <h3 class="screen_5_subheading">看视频、拍摄高清视频与照片、视频聊天、一机多功能,让您生活更丰富精彩。</h3>
            <div class="screen_5_bg"></div>
        </div>
        <!-- 底部 -->
        <div class="screen_buy">
            <a class="screen_buy_btn" href="javascript:;">立即购买</a>
        </div>
        <footer class="footer">
            © 2019 test.com 京ICP备xxxxxxxx号
        </footer>
        <!-- 侧导航 -->
        <div class="outline">
            <a href="javascript:;" class="outline_item outline_item_active">首页</a>
            <a href="javascript:;" class="outline_item">外观</a>
            <a href="javascript:;" class="outline_item">配置</a>
            <a href="javascript:;" class="outline_item">型号</a>
            <a href="javascript:;" class="outline_item">说明</a>
        </div>
        <script src="script.js"></script>
    </body>
    </html>

    style.css

    *{
        margin: 0;
        padding: 0;
    }
    body{
        background-color: #fff; 
        font-size: 12px;
        font-family: "Microsoft Yahei","微软雅黑"
    }
    a{
        text-decoration: none;
    }
    /*导航*/
    header{
        background-color: #f7f7f7;
    }
    .header_wrap{
        height:80px;
        width:1200px;
        margin:0 auto;
        position: relative;
    }
    .header_logo{
        background:url(img/logo.png) no-repeat;
        width:150px;
        height:40px;
        line-height: 40px;
        text-indent:50px;
        position: absolute;
        top:50%;
        margin-top:-20px;
        font-size:20px;
    }
    .header_nav{
        position: absolute;
        right:25px;
        height:40px;
        line-height: 40px;
        top:50%;
        margin-top:-20px;
    }
    .header_nav_item{
        display: block;
        float: left;
        padding-left:48px;
        color:#292f35;
        font-size:14px;
        width:30px;
        text-align: center;
        position: relative;
    }
    .header_nav_item_active{
        color:#f01400;
    }
    /*.header_nav_item_active::after{
        content:' ';
        position: absolute;
        31px;
        height:2px;
        background-color: #f01400;
        top:35px;
        left:-1px;
    }*/
    .header_nav_item_btn{
        width:90px;
        background:#07111b;
        color:white;
        border-radius:5px;
        padding:0 5px;
        margin-left:48px;
    }
    /*第一屏*/
    .screen_1{
        height: 800px;
        background-color: #e7e7e7;
        position: relative;
        overflow: hidden;
        background:url(img/bg-screen-1.png) no-repeat center;
        background-size: cover;
    }
    .screen_1_heading{
        font-weight: normal;
        margin: 0;
        padding: 0;
        font-size:46px;
        color: #4d555d;
        text-align: center;
        padding-top: 152px;
    }
    .screen_1_heading b{
        color: #f01400;
        font-weight: normal;
    }
    .screen_1_phone{
        width: 1375px;
        height: 305px;
        background:url(img/screen-1-phone.png) no-repeat center;
        position: absolute;
        left: 50%;
        margin-left: -687px;
        bottom: 180px;
        z-index: 2;
    }
    .screen_1_shadow{
        width: 1233px;
        height: 411px;
        background:url(img/screen-1-shadow.png) no-repeat center;
        position: absolute;
        left: 50%;
        margin-left: -616px;
        bottom: 30px;
        z-index: 1;
        opacity: .8;
    }
    /*第二屏*/
    .screen_2{
        text-align: center;
        padding-top:56px;
        background:#fafafa;
    }
    .screen_2_title{
        color:#f01414;
        font-size:48px;
        font-weight:normal;
    }
    .screen_2_subtitle{
        color:#07111b;
        font-size:16px;
        font-weight:normal;
        margin-top:15px;
        line-height:2em;
        margin-bottom:40px;
    }
    .screen_2_phone{
        width:1200px;
        margin:0 auto;
        background:url(img/screen-2-phone.png) top center no-repeat;
        height:579px;
        overflow:hidden;
        position: relative;
    }
    .screen_2_phone_point{
        position: absolute;
        width: 230px;
        height: 48px;
        padding-right: 20px;
        line-height: 48px;
        background: url(img/icon-point-right.png) right no-repeat;
    }
    .screen_2_phone_point1{
        top: 146px;
        left: -56px;
    }
    .screen_2_phone_point2{
        background: url(img/icon-point-left.png) left no-repeat;
        top: 25px;
        right: 235px;
    }
    .screen_2_phone_point3{
        background: url(img/icon-point-left.png) left no-repeat;
        top: 319px;
        right: 135px;
    }
    /*第三屏*/
    .screen_3{
        height:803px;
        background:url(img/bg-screen-3.png) no-repeat;
        overflow:hidden;
    }
    .screen_3_wrap{
        width:1200px;
        margin:0 auto;
        color:#fff;
        position: relative;
    }
    .screen_3_title{
        font-size:48px;
        padding-top:84px;
        font-weight:normal;
    }
    .screen_3_subtitle{
        font-size:16px;
        font-weight:normal;
        margin-top:34px;
        line-height:30px;
    }
    .screen_3_phone{
        width: 800px;
        background: url(img/screen-3-phone.png) top right no-repeat;
        height: 657px;
        position: absolute;
        right: 0;
        top: 200px;
        background-size: 90%;
    }
    .screen_3_feature{
        width:400px;
        position:absolute; 
        top:380px;
        left:0;
    }
    .screen_3_feature_item{
        width:176px;
        height:125px;
        border:1px solid #fff;
        border-radius:5px;
        text-align: center;
        padding-top:30px;
        margin-right:22px;
        float: left;
        margin-bottom:25px;
    }
    .screen_3_feature_item_big{
        font-size:48px;
    }
    .screen_3_feature_item_small{
        font-size:16px;
    }
    /*第四屏*/
    .screen_4{
        background-color: #ffffff;
        height: 800px;
        position: relative;
        overflow: hidden;
    }
    .screen_4_wrap{
        width: 1200px;
        height: auto;
        margin: 0 auto;
        position: relative;
    }
    .screen_4_heading{
        font-size:48px;
        line-height: 48px;
        color: #f01400;
        text-align: center;
        padding-top: 135px;
        font-weight:normal;
    }
    .screen_4_subheading{
        font-size:16px;
        color: #464a4f;
        text-align: center;
        padding-top: 29px;
        line-height: 28px;
        font-weight:normal;
    }
    .screen_4_type{
        width: 1260px;
        height: 270px;
        position: absolute;
        top: 304px;
        margin-left: 30px;
    }
    .screen_4_type_item{
        width: 220px;
        margin-right: 90px;
        height: 270px;
        float: left;
        position: relative;
        text-align: center;
        background-size: cover;
    }
    .screen_4_type_item_color{
        width: 100%;
        height: 14px;
        line-height: 14px;
        font: 14px;
        color: #2c3238;
        position: absolute;    
        bottom: -44px;
    }
    .screen_4_type_item_i_1{
        background: url('img/phone-1.png') no-repeat left top;
    }
    .screen_4_type_item_i_2{
        background: url('img/phone-2.png') no-repeat left top;
    }
    .screen_4_type_item_i_3{
        background: url('img/phone-3.png') no-repeat left top;
    }
    .screen_4_type_item_i_4{
        background: url('img/phone-4.png') no-repeat left top;
    }
    .screen_4_type_item_storage{
        width: 100%;
        height: 12px;
        line-height: 12px;
        font: 12px;
        color: #a4a9ae;
        position: absolute;    
        bottom: -66px;
    }
    /*第五屏*/
    .screen_5{
        height: 800px;
        position: relative;
        overflow: hidden;
        background-color: #d9dde1;
    }
    .screen_5_heading{
        font-size:48px;
        line-height: 48px;
        color: #f01400;
        text-align: center;
        padding-top: 130px;
        font-weight:normal;
    }
    .screen_5_subheading{
        font-size:16px;
        color: #2c3137;
        text-align: center;
        padding-top: 25px;
        line-height: 28px;
        font-weight:normal;
    }
    .screen_5_bg{
        width: 1920px;
        height: 433px;
        background:url(img/bg-screen-5.png)  no-repeat center;    
        background-size: contain;
        position: absolute;
        left: 50%;
        margin-left: -960px;
        bottom: -100px;
    }
    /*底部*/
    .screen_buy{
        height: 80px;
        padding: 120px 0;
        position: relative;
        overflow: hidden;
        background: #2b333b url('img/bg-screen-buy.png') center no-repeat;
        text-align: center;
    }
    .screen_buy_btn{
        height: 80px;
        width: 240px;
        text-align: center;
        line-height: 80px;
        font-size: 24px;
        color: #fff;
        background-color: #f01414;
        display: inline-block;
        border-radius: 3px;
        transition: all .5s;
    }
    .screen_buy_btn:hover{
        box-shadow: 0px 0px 10px rgba(0,0,0,.5);
    }
    .footer{
        height: 80px;
        line-height: 80px;
        text-align: center;
        color: #fff;
        font-size: 14px;
        background-color: #07111b;
    }
    /*侧导航*/
    .outline{
        width:66px;
        position: fixed;
        right:0;
        top:50%;
        margin-top:-98px;
        background-color: #fff;
        box-shadow: 0 0 5px rgba(0,0,0,.1);
    }
    .outline_item{
        display: block;
        color:#93999f;
        font-size:12px;
        text-align: center;
        height:45px;
        line-height:45px;
        border-bottom:1px solid #c3c6c9;
        margin:0 20px;
    }
    .outline_item:last-child{
        border:none;
    }
    .outline_item_active{
        color:#f01400;
    }
    /*导航滑动门特效*/
    .header_nav_tip{
        position: absolute;
        width:30px;
        height:2px;
        background-color:#f01400;
        bottom:0;
        left:0;
        margin-left:47px;
        transition:all 1s;
    }

    animate.css

    /*第一屏*/
        /*screen_1_heading*/
        .screen_1_heading{
            transition: all 1s;
        }
        .screen_1_heading_animate_init{
            opacity: 0;
            transform:translate(0,100%);
        }
        .screen_1_heading_animate_done{
            opacity: 1;
            transform:translate(0,0);
        }
        /*screen_1_phone*/
        .screen_1_phone{
            transition: all 1s;
        }
        .screen_1_phone_animate_init{
            opacity: 0;
            transform:translate(0,-100%);
        }
        .screen_1_phone_animate_done{
            opacity: 1;
            transform:translate(0,0);
        }
        /*screen_1_shadow*/
        .screen_1_shadow{
            transition: all 1s;
        }
        .screen_1_shadow_animate_init{
            opacity: 0;
            transform:translate(0,-100%);
        }
        .screen_1_shadow_animate_done{
            opacity: 1;
            transform:translate(0,0);
        }
    
    /*第二屏*/
        /*screen_2_title*/
        .screen_2_title{
            transition: all 1s;
        }
        .screen_2_title_animate_init{
            opacity: 0;
            transform: translate(0,-100%);
        }
        .screen_2_title_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_2_subtitle*/
        .screen_2_subtitle{
            transition: all 1s;
        }
        .screen_2_subtitle_animate_init{
            opacity: 0;
            transform: translate(0,100%);
        }
        .screen_2_subtitle_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_2_phone*/
        .screen_2_phone{
            transition: all 1s;
        }
        .screen_2_phone_animate_init{
            opacity: 0;
            transform: translate(0,50%);
        }
        .screen_2_phone_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_2_phone_point*/
        .screen_2_phone_point{
            transition: all 1s 1s;
        }
        .screen_2_phone_point1_animate_init{
            opacity: 0;
            transform: translate(-100%,0);
        }
        .screen_2_phone_point2_animate_init,
        .screen_2_phone_point3_animate_init{
            opacity: 0;
            transform: translate(100%,0);
        }
        .screen_2_phone_point_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
    
    /*第三屏*/
        /*screen_3_title*/
        .screen_3_title{
            transition: all 1s;
        }
        .screen_3_title_animate_init{
            opacity: 0;
            transform: translate(0,-100%);
        }
        .screen_3_title_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_3_subtitle*/
        .screen_3_subtitle{
            transition: all 1s;
        }
        .screen_3_subtitle_animate_init{
            opacity: 0;
            transform: translate(0,100%);
        }
        .screen_3_subtitle_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_3_phone*/
        .screen_3_phone{
            transition: all 1s;
        }
        .screen_3_phone_animate_init{
            opacity: 0;
            transform: translate(0,100%);
        }
        .screen_3_phone_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_3_feature*/
        .screen_3_feature{
            transition: all 1s;
        }
        .screen_3_feature_animate_init{
            opacity: 0;
            transform: scale(.5);
        }
        .screen_3_feature_animate_done{
            opacity: 1;
            transform: scale(1);
        }
        /*screen_3_feature_item*/
        .screen_3_feature_item{
            transition: all .5s;
            cursor: pointer;
        }
        .screen_3_feature_item:hover{
            transform: scale(1.1);
            border-color: #fff;
        }
    
    /*第四屏*/
        /*screen_4_heading*/
        .screen_4_heading{
            transition: all 1s;
        }
        .screen_4_heading_animate_init{
            opacity: 0;
            transform: translate(0,-100%);
        }
        .screen_4_heading_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_4_subheading*/
        .screen_4_subheading{
            transition: all 1s;
        }
        .screen_4_subheading_animate_init{
            opacity: 0;
            transform: translate(0,100%);
        }
        .screen_4_subheading_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_4_type_item_i_1*/
        .screen_4_type_item_i_1{
            transition: all 1s .5s;
        }
        .screen_4_type_item_i_1_animate_init{
            opacity: 0;
        }
        .screen_4_type_item_i_1_animate_done{
            opacity: 1;
        }
        /*screen_4_type_item_i_2*/
        .screen_4_type_item_i_2{
            transition: all 1s 1s;
        }
        .screen_4_type_item_i_2_animate_init{
            opacity: 0;
        }
        .screen_4_type_item_i_2_animate_done{
            opacity: 1;
        }
        /*screen_4_type_item_i_3*/
        .screen_4_type_item_i_3{
            transition: all 1s 1.5s;
        }
        .screen_4_type_item_i_3_animate_init{
            opacity: 0;
        }
        .screen_4_type_item_i_3_animate_done{
            opacity: 1;
        }
        /*screen_4_type_item_i_4*/
        .screen_4_type_item_i_4{
            transition: all 1s 2s;
        }
        .screen_4_type_item_i_4_animate_init{
            opacity: 0;
        }
        .screen_4_type_item_i_4_animate_done{
            opacity: 1;
        }
    
    /*第五屏*/
        /*screen_5_heading*/
        .screen_5_heading{
            transition: all 1s;
        }
        .screen_5_heading_animate_init{
            opacity: 0;
            transform: translate(0,-100%);
        }
        .screen_5_heading_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_5_subheading*/
        .screen_5_subheading{
            transition: all 1s;
        }
        .screen_5_subheading_animate_init{
            opacity: 0;
            transform: translate(0,100%);
        }
        .screen_5_subheading_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
        /*screen_5_bg*/
        .screen_5_bg{
            transition: all 1s;
        }
        .screen_5_bg_animate_init{
            opacity: 0;
            transform: translate(0,100%);
        }
        .screen_5_bg_animate_done{
            opacity: 1;
            transform: translate(0,0);
        }
    
    /*帧动画*/
    @-webkit-keyframes bounce{
        0%,100%{
            transform:scale(0);
        }
        50%{
            transform:scale(1);
        }
    }
    /*第二屏小圆点呼吸效果*/
        .screen_2_phone_point:before,
        .screen_2_phone_point:after{
            display: block;
            width:20px;
            height:20px;
            content:' ';
            background-color: rgba(255,0,0,.4);
            top:15px;
            position: absolute;
            -webkit-animation:bounce 2s infinite;
            border-radius: 50%;
        }
        .screen_2_phone_point:before{
            -webkit-animation:bounce 2s infinite 1s;
        }
        .screen_2_phone_point1:before,
        .screen_2_phone_point1:after{
            left:229px;
        }
    
    /*导航条动画样式*/
        .header{
            transition: all 1s;
        }
        .header_status_black{
            background: rgba(0,0,0,.5);
            position: fixed;
            top: 0px;
            left: 0px;
            right: 0px;
            z-index: 3;
        }
        .header_status_black .header_nav_item,
        .header_status_black .header_logo{
            color: #fff;
        }
        .header_status_black .header_nav_item_active{
            color:#f01400;
        }
        .header_status_black .header_nav_item:hover{
            transition: all 1s;
            color: red;
        }
    
    /*侧导航动画效果*/
        .outline{
            transform: translate(100%,0);
            transition: all 1s;
        }
        .outline_status_in{
            transform: translate(0,0);    
        }
        .outline_item{
            transition: all 1s;
        }

    script.js

    // 基本函数封装
        // 获取元素
        var getElem = function( selector ){
          return document.querySelector(selector);
        }
        var getAllElem = function( selector ){
          return document.querySelectorAll(selector);
        }
        // 获取元素的样式
        var getCls = function ( element ) {
          return element.getAttribute('class');
        }
        // 设置元素的样式
        var setCls = function( element ,cls){
          return element.setAttribute('class',cls);
        }
        // 为元素添加样式
        var addCls = function( element , cls ){
          var baseCls  = getCls(element);
          if( baseCls.indexOf(cls) === -1){
              setCls(element,baseCls+' '+cls); // 注意空格
          }
          return ;
        }
        // 为元素删减样式
        var delCls = function( element , cls){
          var baseCls  = getCls(element);
          if( baseCls.indexOf(cls) > -1){ // 更精确的需要用正则表达式 ,因为这里只用于切换 _animate_in 所以没事
              setCls( element,baseCls.split(cls).join(' ').replace(/s+/g,' ') );
          }
          return ;
        }
    
    // 定义哪些元素拥有动画
        var animateEles={
            '.screen_1':[
                '.screen_1_heading',
                '.screen_1_phone',
                '.screen_1_shadow'
            ],
            '.screen_2':[
                '.screen_2_title',
                '.screen_2_subtitle',
                '.screen_2_phone',
                '.screen_2_phone_point1',
                '.screen_2_phone_point2',
                '.screen_2_phone_point3'
            ],
            '.screen_3':[
                '.screen_3_title',
                '.screen_3_subtitle',
                '.screen_3_phone',
                '.screen_3_feature'
            ],
            '.screen_4':[
                '.screen_4_heading',
                '.screen_4_subheading',
                '.screen_4_type_item_i_1',
                '.screen_4_type_item_i_2',
                '.screen_4_type_item_i_3',
                '.screen_4_type_item_i_4'
            ],
            '.screen_5':[
                '.screen_5_heading',
                '.screen_5_subheading',
                '.screen_5_bg'
            ]
        };
    
    //给当前屏元素添加初始化样式
        function setInit(screenEle){
            var screen=document.querySelector(screenEle);//获取当前屏
            var animateEle=animateEles[screenEle]; // 获取需要添加动画的元素
    
            for(var i=0;i<animateEle.length;i++){
                var ele=document.querySelector(animateEle[i]);
                var baseCls=ele.getAttribute('class');
                var newCls=baseCls+' '+animateEle[i].substr(1)+'_animate_init';
                ele.setAttribute('class',newCls);
            }
        }
    
    //设置所有元素开始动画
        function startAnimate(screenEle){
            var screen=document.querySelector(screenEle);//获取当前屏
            var animateEle=animateEles[screenEle]; // 获取需要添加动画的元素
    
            for(var i=0;i<animateEle.length;i++){
                var ele=document.querySelector(animateEle[i]);
                var baseCls=ele.getAttribute('class');
                var newCls=baseCls.replace('_animate_init','_animate_done');
                ele.setAttribute('class',newCls);
            }
        }
    
    //第一步,页面所有元素初始化
        window.onload = function () {
            for(k in animateEles){
                if(k=='.screen_1'){
                    continue;
                }
                  setInit(k);
            }
        }
    
    //第二步,滚动到哪里就播放哪里
        var navs=getAllElem('.header_nav_item');
        var outlines=getAllElem('.outline_item');
        var navTip=getElem('.header_nav_tip');
    
        //切换主导航对应样式
        var switchActive=function(idx){
            for(var i=0;i<navs.length;i++){
                delCls(navs[i],'header_nav_item_active');
                navTip.style.left=0+'px';
            }
            addCls(navs[idx],'header_nav_item_active'); 
            navTip.style.left=(idx*78)+'px';
    
            for(var i=0;i<outlines.length;i++){
                delCls(outlines[i],'outline_item_active');
            }
            addCls(outlines[idx],'outline_item_active');
        }
        //默认导航0高亮
        switchActive(0);
    
        window.onscroll=function(){
            var top=document.body.scrollTop||document.documentElement.scrollTop;
            console.log(top);
    
            //导航条样式变动
            if( top > 100 ){
                addCls( getElem('.header'),'header_status_black' );
                addCls( getElem('.outline'),'outline_status_in' );
            }else{
                delCls( getElem('.header'),'header_status_black' );
                delCls( getElem('.outline'),'outline_status_in' );
                switchActive(0);
            }
    
            if(top>1){
                startAnimate('.screen_1');
            }
            if(top>800*1-200){
                startAnimate('.screen_2');
                switchActive(1);
            }
            if(top>800*2-200){
                startAnimate('.screen_3');
                switchActive(2);
            }
            if(top>800*3-200){
                startAnimate('.screen_4');
                switchActive(3);
            }
            if(top>800*4-200){
                startAnimate('.screen_5');
                switchActive(4);
            }
        }
    
    // 第三步,双向绑定
        // 封装导航跳转函数
        var setJump=function(i,lib){
            lib[i].onclick=function(){
                document.body.scrollTop=i*800;
                document.documentElement.scrollTop=i*800;
            }
        }
    
        // 绑定主导航
        for(var i=0;i<navs.length;i++){
            setJump(i,navs);
        }
        // 绑定侧导航
        for(var i=0;i<outlines.length;i++){
            setJump(i,outlines);
        }
    
    //第四步,滑动门特效
        
        var setTip=function(i,lib){
            //鼠标移入
            lib[i].onmouseover=function(){
                navTip.style.left=(i*78)+'px';
            }
            var activeIdx=0;
            //鼠标移出
            lib[i].onmouseout=function(){
                for(var i=0;i<navs.length;i++){
                    if(getCls(lib[i]).indexOf('header_nav_item_active')>-1){
                        activeIdx=i;
                        break;
                    }
                }
                navTip.style.left=(activeIdx*78)+'px';
            }
        }
    
        for(var i=0;i<navs.length-1;i++){
            setTip(i,navs);
        }
    
    setTimeout(function(){
        startAnimate('.screen_1');
    },200);

    其余杂碎知识点补充:

    前端切图

    透明背景图处理:

    选择指定图层(ctrl+enter)

    拖拽到一个新建文件的透明图层中(ctrl+c   ctrl+n   ctrl+v)

    点击图像-裁切(基于透明像素)


    多个图层的,可以先ctrl+e合并图层,再按照以上方法拖拽出来处理

    非透明背景图可以直接裁剪完另存为


    同类型图片可以做成雪碧图


    BEM设计模式

    模块(没有前缀,多个单词用-分割)

    元素(在模块之后,多个层级以_连接)


    css实现动画的两种方式:

    1、  transition:all 1s;

    2、  animation:move 2s indinite ease-in-out .5s;

    @keyframes move{

              0%{transform:rotate(0deg)}

              50%{transform:rotate(2deg)}

              100%{transform:rotate(0deg)}

    }


    获取滚动高度的兼容性写法

    var top=document.body.scrollTop||document.documentElement.scrollTop;

  • 相关阅读:
    ubuntu的apt
    sudo命令
    MySQL导出数据到csv文件
    MySQL导出数据到文件报错
    git_backup.py gitlab项目备份
    java中图像与数组转换
    mongodb转elasticsearch
    impyla-0.14.2.2安装注意事项
    python3.7.3升级 with-openssl openssl-1.0.2a
    hadoop自带性能测试
  • 原文地址:https://www.cnblogs.com/chenyingying0/p/12141706.html
Copyright © 2020-2023  润新知