CSS3模拟侧滑菜单

在APP应用上,常见的一种导航方式是侧滑导航,效果类似于这样:

用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模拟侧滑菜单

时间: 2024-10-16 22:26:38

CSS3模拟侧滑菜单的相关文章

CSS3手机端侧滑菜单 4种滑动菜单特效

这是一款基于CSS3的手机端侧滑菜单,一共有4种侧滑动画特效.这款CSS3菜单的特点是鼠标划过时即可以各种动画方式展开和隐藏菜单项,该动画方式由CSS3中的transition-delay属性来完成,具体效果大家可以看演示. 原味地址:http://www.xuecss3.com/htmlcss-8-575-1.html 更多css3特效:http://www.xuecss3.com/list-8-3.html http://www.xuecss3.com/list-10-1.html

5.触摸事件、侧滑菜单

触摸事件 侧滑菜单--- github-SlidingMenu 1.在ViewGroup中,让自己内容移动有以下三个方法个方法: layout(l,t,r,b); offsetTopAndBottom(offset)和offsetLeftAndRight(offset); scrollTo和scrollBy方法; 注意:滚动的并不是viewgroup内容本身,而是它的矩形边框 它是瞬间移动的 2.在自定义ViewGroup中一般不需要去实现onMeasure, 我们去实现系统已有的ViewGro

mui 中侧滑菜单

侧滑导航 mui提供了两种侧滑导航实现:webview模式和div模式,两种模式各有优劣,适用于不同的场景. webview模式 主页面和菜单内容在不同的webview中,两个页面根据内容需求分别组织DOM结构,mui对其DOM结构无特殊要求,故其有如下优点: 菜单内容是单独的webview,故可被多个页面复用: 菜单内容在单独的webview中,菜单区域的滚动不影响主界面,故可使用原生滚动,滚动更为流畅: 另一方面,webview模式也有其缺点: 不支持拖动手势(跟手拖动): 主页面.菜单不同

自定义SwipeLayout实现侧滑菜单

请尊重个人劳动成果,转载注明出处,谢谢! http://blog.csdn.net/amazing7/article/details/51768942 先看 SwipeLayout的效果图 图太多了,我这只上传一张,想看 listview和GridView效果的,和想看源码的 -> GitHub 怎么实现后面说,先说会废话. 最近整理以前的项目,那时有一个这样的需求,要在ExpandableListView的ChildView上实现 编辑和删除的侧滑菜单.我当时并没有用别人的框架,实现出来大概是

Android组件——使用DrawerLayout仿网易新闻v4.4侧滑菜单

转载请注明出处:http://blog.csdn.net/allen315410/article/details/42914501 概述 今天这篇博客将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情,因为DrawerLayout作为Android组件是Google后来在android中添加的,在android.support.v4包下.那么,DrawerLayout是一个怎么的组件呢?我们知道,当我们使用Androi

Android DrawerLayout 高仿QQ5.2双向侧滑菜单

1.概述 之前写了一个Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭 ,恰逢QQ5.2又加了一个右侧菜单,刚好看了下DrawerLayout,一方面官方的东西,我都比较感兴趣:另一方面,这玩意用起来的确方便,于是简单写了个demo,高仿QQ5.2双向侧滑,分享给大家. 首先看看效果图: DrawerLayout用起来真的很方便,下面一起看看用法~ 2.DrawerLayout的使用 直接将DrawerLayout作为根布局,然后其内部第一个View为内容区域,第二个View为左侧

开源中国客户端侧滑菜单效果实现

欢迎关注左上角Android技术分享公众号(小红人). 这篇文章将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情,因为DrawerLayout作为Android组件是Google后来在android中添加的,在android.support.v4包下. 这里用开源中国手机客户端的截图来说明一下,这个DrawerLayout抽屉式布局是什么样子的. 好,大家已经看到了,当我们手指在屏幕左侧向右滑动时候,就会有一个抽屉式

教你10行代码写侧滑菜单

原帖发表于传智播客黑马训程序员论坛,地址:http://bbs.itheima.com/thread-167442-1-1.html 先来看个侧滑菜单效果: 上面分别为:初始状态->滑动中->松开打开菜单 你造吗?看完本文章,写这种侧滑菜单,so easy for you! 你造吗?其实写这个侧滑菜单,只需要10行手写代码就能搞定! 你造吗?看完本文章,当你再听到产品说"我要这个效果"时,再也不会底气不足! 在Android开发中,自定义View效果是属于高级的部分.因为常

Android自定义控件——侧滑菜单

转载请注明出处:http://blog.csdn.net/allen315410/article/details/39397445 当我们打开某些应用的时候,总是会出现"侧滑菜单"这样的效果,至于这种侧滑菜单是谁首先创造出来的,已经不重要,但是侧滑菜单确实功能新颖,用户体验极好,以至于市面上很多很多的应用也纷纷加入侧滑菜单的效果,以下是我从应用市场上下载来的几个应用,随时截图发在这里,看看别人(大型互联网公司)都做这种效果,那么我们自己在没有很好的"创意"下,是不是