zoukankan      html  css  js  c++  java
  • 妙味课堂--导航手风琴效果(转)

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <style>
            *{
                box-sizing: border-box;
            }
            .P800 {
                -webkit-perspective: 800px;
                -moz-perspective: 800px;
                -ms-perspective: 800px;
                perspective: 800px;
            }
            .T3D {
                -webkit-transform-style: preserve-3d;
                -moz-transform-style: preserve-3d;
                -ms-transform-style: preserve-3d;
                transform-style: preserve-3d;
            }
            body{
                background: #fff url(http://www.miaov.com/2013/css/bg/bg1.jpg) no-repeat top right;
            }
            #fold_box {
                position: absolute;
                right: 100px;
                top: 0;
                width: 146px;
                height: 54px;
            }
    
            #fold h2 {
                margin: 0;
                width: 146px;
                height: 54px;
                padding-top: 18px;
                line-height: 36px;
                text-indent: 50px;
                font-size: 16px;
                color: #fff;
                background: url(http://www.miaov.com/2013/img/topMenu/topMenu.png) no-repeat;
                position: relative;
                z-index: 2;
                font-family: arial;
                -ms-transform: translateZ(1px);
                -moz-transform: translateZ(1px);
                -webkit-transform: translateZ(1px);
                -o-transform: translateZ(1px);
                transform: translateZ(1px);
            }
    
    
            #fold_list {
                list-style: none;
                margin: 0;
                padding: 0;
            }
    
            .fold_pager {
                width: 146px;
                height: 30px;
                transform-origin: center top;
            }
    
            #fold_list a {
                display: inline-block;
                background-color: rgb(223, 223, 223);
                width: 146px;
                height: 29px;
                margin-bottom: 1px;
                line-height: 29px;
                color: #d16c6c;
                text-indent: 16px;
                font-size: 13px;
                text-decoration: none;
                z-index: 3;
                font-family: arial;
                -ms-transition: 0.6s;
                -moz-transition: 0.6s;
                -webkit-transition: 0.6s;
                -o-transition: 0.6s;
                transition: 0.6s;
            }
    
            #fold_list a:hover {
                background-color: #f69 !important;
                color: #fff;
                text-indent: 20px;
                font-size: 14px;
                box-shadow: 1px 1px 3px 2px #dfdfdf;
            }
        </style>
        <script type="text/javascript" class="library" src="js/jquery-1.11.3.min.js"></script>
        <script>
            //添加缓动扩展
            jQuery.extend(jQuery.easing,{
                easeOutBack: function (x, t, b, c, d, s) {
                    if (s == undefined) s = 1.70158;
                    return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
                }
            })
    
            var pageArr;
    
            function rotateDown(index) {
                if (index < 0 || index >= pageArr.length) {
                    return;
                }
                var ele = pageArr.eq(index);
                ele.children("a").css("background-color", "#fff");
                var obj = ele.data("obj");
                if (!obj) {
                    ele.data("obj", { r: getNumByEle(ele) });
                    obj = ele.data("obj");
                }
                else obj.r = getNumByEle(ele);
                $(obj).animate({ r: 0 }, {
                    duration: 1000,
                    easing: "easeOutBack",
                    step: function () {
                        ele.css({
                            "-moz-transform": "rotateX(" + this.r + "deg)",
                            "-webkit-transform": "rotateX(" + this.r + "deg)",
                            "-0-transform": "rotateX(" + this.r + "deg)",
                            "-ms-transform": "rotateX(" + this.r + "deg)",
                            "transform": "rotateX(" + this.r + "deg)"
                        });
    
                        //根据偏移量判断是否展开下一个
                        if (ele.data("opening")) return;  //已经开始折叠下一个了
                        var rotateOff = getNumByEle(ele);
                        if (rotateOff > -120) {
                            ele.data("opening", true);
                            rotateDown(index + 1);
                        }
                    },
                    complete: function () {
                        ele.css({
                            "-moz-transform": "rotateX(0deg)",
                            "-webkit-transform": "rotateX(0deg)",
                            "-0-transform": "rotateX(0deg)",
                            "-ms-transform": "rotateX(0deg)",
                            "transform": "rotateX(0deg)"
                        });
                    }
                });
            }
    
            function rotateUp(index) {
                if (index < 0 || index >= pageArr.length) {
                    return;
                }
                var ele = pageArr.eq(index);
                ele.children("a").css("background-color", "rgb(223,223,223)");
                var obj = ele.data("obj");
                if (!obj) {
                    ele.data("obj", { r: getNumByEle(ele) });
                    obj = ele.data("obj");
                }
                else obj.r = getNumByEle(ele);
                $(obj).animate({ r: -180 }, {
                    duration: 600,
                    easing: "linear",
                    step: function () {
                        ele.css({
                            "-moz-transform": "rotateX(" + this.r + "deg)",
                            "-webkit-transform": "rotateX(" + this.r + "deg)",
                            "-0-transform": "rotateX(" + this.r + "deg)",
                            "-ms-transform": "rotateX(" + this.r + "deg)",
                            "transform": "rotateX(" + this.r + "deg)"
                        });
    
                        //根据偏移量判断是否折叠上一个
                        if (ele.data("closing")) return;  //已经开始折叠上一个了
                        var rotateOff = getNumByEle(ele);
                        if (rotateOff < -60) {
                            ele.data("closing", true);
                            rotateUp(index - 1);
                        }
                    },
                    complete: function () {
                        ele.css({
                            "-moz-transform": "rotateX(-180deg)",
                            "-webkit-transform": "rotateX(-180deg)",
                            "-0-transform": "rotateX(-180deg)",
                            "-ms-transform": "rotateX(-180deg)",
                            "transform": "rotateX(-180deg)"
                        });
                    }
                });
            }
    
            function getNumByEle(ele) {
                var rotateStyle = ele.attr("style");
                return rotateStyle.match(/rotateX(([-]?d+)/)[1];
            }
    
            function stopAll() {
                for (var i = 0; i < pageArr.length; i++) {
                    var ele = pageArr.eq(i);
                    ele.data("opening", false);
                    ele.data("closing", false);
                    var obj = ele.data("obj");
                    if (obj && $(obj).stop) {
                        $(obj).stop(true, false);
                    }
                }
            }
    
            $(function(){
                pageArr = $("#fold .fold_pager");
                $("#fold").mousemove(function (e) {  //Y轴旋转
                    var el = e.clientX - $(this).offset().left;
                    var off = 60 * el / $(this).width() - 30;
                    //this.style.transform = "rotateY(" + off + "deg)";
                    $(this).css({
                        "-webkit-transform":"rotateY(" + off + "deg)",
                        "-moz-transform":"rotateY(" + off + "deg)",
                        "-ms-transform":"rotateY(" + off + "deg)",
                        "-o-transform":"rotateY(" + off + "deg)",
                        "transform":"rotateY(" + off + "deg)"
                    });
                }).mouseenter(function () {  //展开
                    stopAll();
                    rotateDown(0);
                }).mouseleave(function () {    //折叠
                    stopAll();
                    rotateUp(pageArr.length - 1);
                });
            });
        </script>
    </head>
    <body>
    <div id="fold_box" class="P800">
        <div id="fold" class="T3D fold_pager">
            <h2>3D下拉菜单</h2>
            <div id="fold_list" class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                <a href="#">基于 - jquery+缓动</a>
                <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                    <a href="#">基于 - jquery+缓动</a>
                    <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                        <a href="#">基于 - jquery+缓动</a>
                        <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                            <a href="#">基于 - jquery+缓动</a>
                            <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                                <a href="#">基于 - jquery+缓动</a>
                                <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                                    <a href="#">基于 - jquery+缓动</a>
                                    <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                                        <a href="#">基于 - jquery+缓动</a>
                                        <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                                            <a href="#">基于 - jquery+缓动</a>
                                            <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                                                <a href="#">基于 - jquery+缓动</a>
                                                <div class="T3D fold_pager" style="transform: rotateX(-180deg); -webkit-transform: rotateX(-180deg);">
                                                    <a href="#">基于 - jquery+缓动</a>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    </body>
    </html>
    View Code
  • 相关阅读:
    利用python设计PDF报告,jinja2,whtmltopdf,matplotlib,pandas
    RPC服务不可用总结
    每次打开VS都报错:我们无法自动填充你的 Visual Studio Team Services 帐户
    每天一个linux命令(28):tar命令
    每天一个linux命令(23):Linux 目录结构
    每天一个linux命令(13):less 命令
    jquery对cookie进行读取、写入和删除
    vscode常用快捷键总结
    浏览器报Mixed Content错误的解决
    React.Children的使用
  • 原文地址:https://www.cnblogs.com/dongxiaolei/p/5949507.html
Copyright © 2011-2022 走看看