zoukankan      html  css  js  c++  java
  • 横向滑动模式演化

    参考自:携程设计委员会

    容器整体滑动:只滑动外包裹wrap,里面的li相对wrap定位,水平排列即可

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta content="width=device-width,initial-scale=1.0" name="viewport">
        <title>Document</title>
        <style>
        *{
            margin: 0;
            padding: 0;
        }
        header,footer{
            height: 54px;
            line-height: 54px;
            text-align: center;
            color: #fff;
        }
        header{
            position: relative;
            top: 0;
            z-index: 10;
            width: 100%;
            background-color: tan;
        }
        footer{
            position: fixed;
            bottom: 0;
            left: 0;
            width: 100%;
            background-color: black;
        }
        section{
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
    
        .wrap{
            position: relative;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            -webkit-transform: translate3d(0,0,0);/*激活GPU 3D加速*/
            -webkit-backface-visibility: hidden;
    
            -webkit-transition:300ms;
        }
        .wrap li{
            position: absolute;
            top: 0;
            width: 100%;
            height: 100%;
            line-height: 400px;
            font-size: 72px;
            color: #000;
            text-align: center;
        }
        .wrap li:nth-child(1){
            left: 0;
            background-color: rgba(235,214,142,.4);
        }
        .wrap li:nth-child(2){
            left: 100%;
            background-color: rgba(26,141,110,.4);
        }
        .wrap li:nth-child(3){
            background-color: rgba(180,195,81,.4);
            left: 200%;
        }
        </style>
    </head>
    <body>
        <header>header</header>
        <section>
            <ul class="wrap">
                <li><b>A</b></li>
                <li><b>B</b></li>
                <li><b>C</b></li>
            </ul>
        </section>
        <footer>footer</footer>
        <script src="zepto.min.js"></script>
        <script>
        var aB=$("b");
        var oWrap=$(".wrap");
    
        // for(var i=0;i<aB.length;i++){
        //     aB[i].index=i;
        //     aB[i].onclick=function(){
        //         if(this.index==0){
        //             $(".wrap").css("-webkit-transform","translate3d(-100%,0,0)");
        //         }
        //         else if(this.index==1){
        //             $(".wrap").css("-webkit-transform","translate3d(-200%,0,0)");
        //         }
        //         else if(this.index==2){
        //             $(".wrap").css("-webkit-transform","translate3d(0,0,0)");
        //         }
        //     };
        // }
    
        aB.each(function(index,ele){
            //console.log(index,ele);
            $(ele).attr("index",index);
            $(this).on('click',function(){    //$(ele)
                switch(index){
                    case 0:
                        $(".wrap").css("-webkit-transform","translate3d(-100%,0,0)");
                    break;
                    case 1:
                        $(".wrap").css("-webkit-transform","translate3d(-200%,0,0)");
                    break;
                    case 2:
                        $(".wrap").css("-webkit-transform","translate3d(0,0,0)");
                    break;
                }
            });
        });
        </script>
    </body>
    </html>

    单个页面滑动:点击的一刻,隐藏当前,显示下一个li并相对于wrap绝对定位,top:0,left:0,并同时加上运动动画,从wrap的一半开始向左运动,运动完毕后隐藏当前li,并删除运动过来li的绝对定位和动画,为下次动画做准备

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta content="width=device-width,initial-scale=1.0" name="viewport">
        <title>Document</title>
        <style>
        *{
            margin: 0;
            padding: 0;
        }
        header,footer{
            height: 54px;
            line-height: 54px;
            text-align: center;
            color: #fff;
            z-index: 99;
        }
        header{
            position: relative;
            top: 0;
            width: 100%;
            background-color: tan;
        }
        footer{
            position: fixed;
            bottom: 0;
            left: 0;
            width: 100%;
            background-color: black;
        }
        section{
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
    
        .wrap{
            position: relative;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
        }
        li{            /*这里为毛不能用.wrap li 呢*/
            position: relative;
            width: 100%;
            height: 100%;
            display: none;
    
            line-height: 400px;
            font-size: 72px;
            color: #000;
            text-align: center;
        }
        .wrap li:nth-child(1){
            display: block;
            background-color: rgba(235,214,142,.4);
        }
        .wrap li:nth-child(2){
            background-color: rgba(26,141,110,.4);
        }
        .wrap li:nth-child(3){
            background-color: rgba(180,195,81,.4);
        }
    
        .ani{
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 88;
    
            -webkit-transform: translate3d(0,0,0);
            -webkit-backface-visibility:hidden;
        }
        @-webkit-keyframes rightin{
            from{
                -webkit-transform:translateX(50%);
                opacity: 0;
            }
            to{
                -webkit-transform:translateX(0);
                opacity: 1;
            }
        }
        .rightin{
            -webkit-animation: rightin 350ms ease-in-out;
        }
        @-webkit-keyframes rightout{
            from{
                -webkit-transform:translateX(-50%);
                opacity: 0;
            }
            to{
                -webkit-transform:translateX(0);
                opacity: 1;
            }
        }
        .rightout{
            -webkit-animation: rightout 350ms ease-in-out;
        }
        </style>
    </head>
    <body>
        <header>header</header>
        <section>
            <ul class="wrap">
                <li><b>A</b></li>
                <li><b>B</b></li>
                <li><b>C</b></li>
            </ul>
        </section>
        <footer>footer</footer>
        <script src="zepto.min.js"></script>
        <script>
        var aB=$("b");
        var oWrap=$(".wrap");
        aB.each(function(index,ele){
            //console.log(index,ele);
            $(ele).attr("index",index);
            $(this).on('click',function(){    //$(ele)
                switch(index){
    
                    case 0:
                        var _this=$(this);
                        _this.parent().next().show().addClass('ani rightin');
                        setTimeout(function(){
                            _this.parent().hide();
                            _this.parent().next().removeClass('ani rightin');
                        },350);
                    break;
                    case 1:
                        var _this=$(this);
                        _this.parent().next().show().addClass('ani rightin');
                        setTimeout(function(){
                            _this.parent().hide();
                            _this.parent().next().removeClass('ani rightin');
                        },350);
                    break;
                    case 2:
                        var _this=$(this);
                        _this.parent().prev().prev().show().addClass('ani rightin');
                        setTimeout(function(){
                            _this.parent().hide();
                            _this.parent().prev().prev().show().removeClass('ani rightin');
                        },350);
                    break;
                }
            });
        });
            
                        
    
        </script>
    </body>
    </html>

    双页联动动画:点击的一刻,下一个li显示并translate至和第一个li水平,同时运动这两个li,运动完毕后归位

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta content="width=device-width,initial-scale=1.0" name="viewport">
        <title>Document</title>
        <style>
        *{
            margin: 0;
            padding: 0;
        }
        header,footer{
            height: 54px;
            line-height: 54px;
            text-align: center;
            color: #fff;
            z-index: 99;
        }
        header{
            position: fixed;
            top: 0;
            width: 100%;
            background-color: tan;
        }
        footer{
            position: fixed;
            bottom: 0;
            left: 0;
            width: 100%;
            background-color: black;
        }
        html,body{
            height: 100%;
        }
        section{
            position: relative;
            height: 100%;
        }
    
        .wrap{
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }
        li{
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            display: none;
    
            line-height: 400px;
            font-size: 72px;
            color: #000;
            text-align: center;
        }
        .wrap li:nth-child(1){
            display: block;
            background-color: rgba(235,214,142,.4);
        }
        .wrap li:nth-child(2){
            background-color: rgba(26,141,110,.4);
        }
        .wrap li:nth-child(3){
            background-color: rgba(180,195,81,.4);
        }
        </style>
    </head>
    <body>
        <header>header</header>
        <section>
            <ul class="wrap">
                <li><b>A</b></li>
                <li><b>B</b></li>
                <li><b>C</b></li>
            </ul>
        </section>
        <footer>footer</footer>
        <script src="zepto.min.js"></script>
        <script>
        var aB=$("b");
        var oWrap=$(".wrap");
        aB.each(function(index,ele){
            //console.log(index,ele);
            $(ele).attr("index",index);
            $(this).on('click',function(){    //$(ele)
                switch(index){
    
                    case 0:
                        var _this=$(this);
                        _this.parent().next().css({
                            "display":"block",
                            "-webkit-transform":"translateX(100%)"
                        });
                        setTimeout(function(){
                            _this.parent().next().css({
                                "-webkit-transform":"translateX(0)",
                                "-webkit-transition":"-webkit-transform 250ms ease-out 0ms"
                            });
                            _this.parent().css({
                                "-webkit-transform":"translateX(-100%)",
                                "-webkit-transition":"-webkit-transform 250ms ease-out 0ms"
                            });
                        },0);
    
                        setTimeout(function(){
                            _this.parent().next().css({
                                '-webkit-transform':'',
                                '-webkit-transition' : ''
                            });
                              _this.parent().css({
                                  'display':'none',
                                  '-webkit-transform':'',
                                  '-webkit-transition':''
                              });
                        },350);
                    break;
                    case 1:
                        var _this=$(this);
                        _this.parent().next().css({
                            "display":"block",
                            "-webkit-transform":"translateX(100%)"
                        });
                        setTimeout(function(){
                            _this.parent().next().css({
                                "-webkit-transform":"translateX(0)",
                                "-webkit-transition":"-webkit-transform 250ms ease-out 0ms"
                            });
                            _this.parent().css({
                                "-webkit-transform":"translateX(-100%)",
                                "-webkit-transition":"-webkit-transform 250ms ease-out 0ms"
                            });
                        },0);
    
                        setTimeout(function(){
                            _this.parent().next().css({
                                '-webkit-transform':'',
                                '-webkit-transition' : ''
                            });
                              _this.parent().css({
                                  'display':'none',
                                  '-webkit-transform':'',
                                  '-webkit-transition':''
                              });
                        },350);
                    break;
                    case 2:
                        var _this=$(this);
                        _this.parent().prev().prev().css({
                            "display":"block",
                            "-webkit-transform":"translateX(100%)"
                        });
                        setTimeout(function(){
                            _this.parent().prev().prev().css({
                                "-webkit-transform":"translateX(0)",
                                "-webkit-transition":"-webkit-transform 250ms ease-out 0ms"
                            });
                            _this.parent().css({
                                "-webkit-transform":"translateX(-100%)",
                                "-webkit-transition":"-webkit-transform 250ms ease-out 0ms"
                            });
                        },0);
    
                        setTimeout(function(){
                            _this.parent().prev().prev().css({
                                '-webkit-transform':'',
                                '-webkit-transition' : ''
                            });
                              _this.parent().css({
                                  'display':'none',
                                  '-webkit-transform':'',
                                  '-webkit-transition':''
                              });
                        },350);
                    break;
                }
            });
        });
        </script>
    </body>
    </html>
  • 相关阅读:
    日记搬迁
    学生会管理系统(JavaWeb与数据库课程小实践)
    疯狂忙碌边缘
    英语复习二:每单元的翻译篇章
    Don't always upset yourself !
    一文教你读懂并使用GTD高效时间管理法
    Day05-黑马学习篇(二)matplot基本绘图函数集合
    Day04-黑马学习篇(一)matplot画图基本要点
    Day03-基础篇(四)Pandas与数据清洗
    Day02 基础篇(三)用NumPy快速处理数据
  • 原文地址:https://www.cnblogs.com/jiujiaoyangkang/p/4935430.html
Copyright © 2011-2022 走看看