仅滑出式菜单 css

Posted

技术标签:

【中文标题】仅滑出式菜单 css【英文标题】:Slide-out menu css only 【发布时间】:2013-10-02 21:08:20 【问题描述】:

我正在尝试制作一个仅 css 的滑出菜单,它可以滑出和滑出,请参阅我的小提琴 http://jsfiddle.net/EZ8SK/1/ 此处。现在我想将处理程序合二为一。 我尝试使用收音机或复选框这样做,但我无法让它工作,我想我忽略了一些东西。

CSS

#wrapper                   width: 100%; height: 100%; 
#header-wrapper            width: 100%; height: 56px; position: relative 
#header                    width: 100%; height: 56px; background: #111; position: absolute; 

        #content-wrapper   width: 100%; background: #333; 
            #left-nav      width: 200px; height: 100%; background: #555; float: left; 
            #right-nav     width: 300px; height: 100%; background: #555; float: right; 

    #left-nav              margin-top: -392px; transition-duration: .4s 
    #left-nav:target       margin-top: -56px 
    #nav-menu > .menu-item > .menu-item-link  display: block; padding: 20px; width: calc(200px - (2*20px));       
    #right-menu > .menu-item > .menu-item-link  display: block; padding: 20px; width: calc(300px - (2*20px));       
    .menu-item-link:hover  background: #222 

    #menu-slideout         position: absolute; top: 0; left: 0; color: #fff; 
    #last-item             cursor: pointer; display: block; 
    #last-item:hover       background: #222; cursor: pointer 
    #last-item-back:hover  background: #222; cursor: pointer 

HTML

    <div id="header-wrapper">
        <div id="header">
            <div id="menu-slideout">
                <div id="left-nav">
                    <div class="menu">
                        <ul id="nav-menu">
                            <li class="menu-item"><a href="" class="menu-item-link">Menüpunkt</a></li>
                            <li class="menu-item"><a href="" class="menu-item-link">Menüpunkt</a></li>
                            <li class="menu-item"><a href="" class="menu-item-link">Menüpunkt</a></li>
                            <li class="menu-item"><a href="" class="menu-item-link">Menüpunkt</a></li>
                            <li class="menu-item"><a href="" class="menu-item-link">Menüpunkt</a></li>
                            <li class="menu-item"><a href="" class="menu-item-link">Menüpunkt</a></li>
                            <li class="menu-item"><a href="" class="menu-item-link">Menüpunkt</a></li>
                            <li class="menu-item"><a href="#left-nav" class="menu-item-link" id="last-item">Einblenden</a></li>
                            <li class="menu-item"><a href="#" class="menu-item-link" id="last-item-back">Ausblenden</a></li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>

【问题讨论】:

【参考方案1】:

只需一点 javascript 就可以轻松实现,只需在最后一个 li 元素周围添加类似 &lt;a onclick="togglePos(this)"&gt; 的内容并使用

function togglePos(obj)  
    obj.style.webkitTransform = (obj.style.webkitTransform == "translateY(-392px)") ?
        "translateY(0px)" : "translateY(-392px)";
    obj.style.transform = (obj.style.transform == "translateY(-392px)") ?
        "translateY(0px)" : "translateY(-392px)";

但我忍住了所有这些感觉,并努力想出这个技巧:

/* CSS */
ul 
    background:red;
    -webkit-transform:translateY(-90px);
    transform:translateY(-90px);
    transition: 1s;

ul li 
    transition: 1s;

input[type=checkbox] 
    position: absolute;
    top: -999px;
    left: -999px;

input[type=checkbox]:checked ~ ul 
    -webkit-transform:translateY(0px);
    transform:translateY(0px);

label 
    display:block;
    width:100%;
    height:20px;

<!-- html (for demo) -->
<input type="checkbox" id="toggler">
<ul id='dropDown'>
    <li>Content</li>
    <li>Content</li>
    <li>Content</li>
    <li>Second to last one</li>
    <label for="toggler"><li>Last one</li></label>
</ul>
<div>Other content</div>

Demo here

如果您知道发生了什么,结果会非常简单。您可以将input 放在要影响的对象前面,然后将带有for="toggler" 的标签放在要用于切换translateY 的元素周围。使用转换比使用margintop 更高效。

很抱歉没有将它特别应用于您的情况,我不确定您想要保留什么。

【讨论】:

非常感谢!那是我错过的。

以上是关于仅滑出式菜单 css的主要内容,如果未能解决你的问题,请参考以下文章

滑出菜单侧边栏

滑出式菜单不显示网页第 2 部分中的导航链接

Android开发笔记(一百零一)滑出式菜单

如何以编程方式在 ios 的滑出式侧边栏菜单中添加按钮

通过点击带有协议的滑出菜单过滤 UITableView 提要

快速滑出菜单而不滑动导航栏(以编程方式)