CSS3模拟侧滑菜单

在APP应用上,常见的一种导航方式是侧滑导航,效果类似于这样:
CSS3模拟侧滑菜单_第1张图片

用CSS3可以对其进行模拟,代码如下:
HTML:

<nav>
        <div id="toggleMenu">
            <span id="hide"></span>
            <span id="show"></span>
        </div>
        <ul id="list">
            <li>
                <a href="#">首页</a>
            </li>
            <li>
                <a href="#">问题</a>
            </li>
            <li>
                <a href="#">文章</a>
            </li>
            <li>
                <a href="#">关注</a>
            </li>
            <li>
                <a href="#">发现</a>
            </li>
        </ul>
    </nav>

CSS:

nav{ width: 100%; height: 50px; background-color: rgba(26,188, 156, 0.75); position: relative; }
        div{ position: absolute; height: 100%; width: 50px; left: 20px; cursor: pointer; -webkit-transition: transform 1s; -moz-transition: transform 1s; -ms-transition: transform 1s; -o-transition: transform 1s; transition: transform 1s; }
        #hide,#show{ display: block; height: 3px; background-color: #FFF; position: absolute; top: 50%; -webkit-transition: opacity .5s; -moz-transition: opacity .5s; -ms-transition: opacity .5s; -o-transition: opacity .5s; transition: opacity .5s; }
        #show{ width: 20px; left: 15px; opacity: 0; }
        #hide{ width: 30px; left: 10px; margin-top: -1.5px; }
        #hide::before,#hide::after,#show::before,#show::after{ content: ""; display: block; height: 3px; background-color: #FFF; position: absolute; }
        #hide::before,#hide::after{ width: 30px; }
        #show::before,#show::after{ width: 25px; }
        #hide::before,#show::before{ top: -10px; }
        #hide::after,#show::after{ top: 10px; }
        #show::before{ -webkit-transform: rotate(35deg) translateX(5px); -moz-transform: rotate(35deg) translateX(5px); -ms-transform: rotate(35deg) translateX(5px); -o-transform: rotate(35deg) translateX(5px); transform: rotate(35deg) translateX(5px); }
        #show::after{ -webkit-transform: rotate(-35deg) translateX(5px); -moz-transform: rotate(-35deg) translateX(5px); -ms-transform: rotate(-35deg) translateX(5px); -o-transform: rotate(-35deg) translateX(5px); transform: rotate(-35deg) translateX(5px); }
        ul{ list-style: none; background-color: #455552; position: absolute; top: 34px; left: -200px; width: 74px; -webkit-transition: all .5s ease-in-out; -moz-transition: all .5s ease-in-out; -ms-transition: all .5s ease-in-out; -o-transition: all .5s ease-in-out; transition: all .5s ease-in-out; }
        li{ margin: 0; padding: 0; position: relative; left: -40px; text-align: center; width: 112px; }
        a{ text-decoration: none; color:#FFF; display: inline-block; height: 40px; line-height: 40px; }
        li:hover{ background-color: rgba(26,188, 156, 0.75); }

JavaScript控制一下事件:

var toggle = document.getElementById("toggleMenu");
        var list = document.getElementById("list");
        var hide = document.getElementById("hide");
        var show = document.getElementById("show");
        var isHidden = true;

        window.onload = function() {
            toggle.onclick=function(){
                if(isHidden){
                    list.style.left="0px";
                    isHidden = false;
                    hide.style.opacity=0;
                    this.style.mozTransform = "rotate(180deg)";
                    this.style.msTransform = "rotate(180deg)";
                    this.style.oTransform = "rotate(180deg)";
                    this.style.webkitTransform = "rotate(180deg)";
                    this.style.transform = "rotate(180deg)";
                    show.style.opacity=1;
                }else{
                    list.style.left="-200px";
                    isHidden = true;
                    hide.style.opacity=1;
                    this.style.mozTransform = "rotate(0deg)";
                    this.style.msTransform = "rotate(0deg)";
                    this.style.oTransform = "rotate(0deg)";
                    this.style.webkitTransform = "rotate(0deg)";
                    this.style.transform = "rotate(0deg)";
                    show.style.opacity=0;
                }
            }
        }

效果:demo

原文:CSS3模拟侧滑菜单

你可能感兴趣的:(菜单,效果)