只用css3实现菜单的toggle效果

一、原理:

使用label与input来实现,label和复选框是有关联的,label的for属性对应的是input的id,所以点击label时,它就会勾选或取消复选框。

如果我们需要让菜单默认显示,只需要将input的checked属性设为true即可。

因为用到了css3的:checked属性,因此只适用于IE9+浏览器。

label可以设置为display:block,从而可以实现在里面实现换行等块级元素的需求。

二、代码:

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>只用css3实现menu的toggle效果</title>
    <style>
        .wrap{
            width:400px;
            margin:50px auto 0;
        }
        label {
            cursor: pointer;
            font-size: 14px;
            padding:10px;
            border:1px solid #00A000;
        }
        #menu-toggle {
            display: none; /* hide the checkbox */
        }
        #menu {
            display: none;
            list-style: none;
            width:200px;
            border:1px solid #00a0e9;
        }
        #menu li{
            margin: 10px 0;
        }
        #menu li a{
            text-decoration: none;
        }
        #menu li a:active{
            color:#00a5e0;
        }
        /*这句最关键*/
        #menu-toggle:checked + #menu {
            display: block;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <label for="menu-toggle">
            点击显示隐藏菜单
        </label>
        <input type="checkbox" />
        <ul >
            <li><a href="http://www.baidu.com">First link</a></li>
            <li><a href="#">Second link</a></li>
            <li><a href="#">Third link</a></li>
        </ul>
    </div>
    <p>适用于Chrome,FF,IE9+浏览器</p>
</body>
</html>

本文参考http://www.outofscope.com/css-only-menu-toggle-no-javascript-required/