• 纯css3开发的响应式设计动画菜单(支持ie8)


    这是一个响应式设计的菜单。单击列表图标,当你显示屏大小可以完全水平放下所有菜单项时,菜单水平显示(如图1)。当你的显示屏不能水平放置所有菜单项时,菜单垂直显示(如图2)。 而且显示的时候是以动画的型式显示。效果相当的好。

    点击这里在线预览

    下面贴出实现这功能的源代码,这是一个纯用css3实现的菜单

    html代码:

     <div class="container">
            <!--[if lte IE 8]>
    <style>
    
            .iconicmenu > label{
            border- 7px;
            background: #eee;
            }
            
            .iconicmenu:hover ul{
                left: 8px; /* show menu onmouseover in IE8 and below */
            }
    
    </style>
    <![endif]-->
            <div class="iconicmenu">
                <input type="checkbox" id="togglebox" />
                <ul>
                    <li><a targe="_blank" href="http://www.w2bc.com/Shili/css3%E8%8F%9C%E5%8D%95">Home</a></li>
                    <li><a targe="_blank" href="http://www.w2bc.com/Shili/css3%E8%8F%9C%E5%8D%95">DHTML</a></li>
                    <li><a targe="_blank" href="http://www.w2bc.com/Shili/css3%E8%8F%9C%E5%8D%95">CSS Library</a></li>
                    <li><a targe="_blank" href="http://www.w2bc.com/Shili/css3%E8%8F%9C%E5%8D%95">CSS Gallery</a></li>
                    <li><a targe="_blank" href="http://www.w2bc.com/Shili/css3%E8%8F%9C%E5%8D%95">JavaScript</a></li>
                    <li>
                        <label for="togglebox">
                        </label>
                    </li>
                </ul>
                <label class="toggler" for="togglebox">
                    Menu</label>
            </div>
        </div>

    这里加入了兼容ie8的hack 。

    css代码:

            body
            {
                padding:0; margin:0;
                }
                .container
                {
                     width:600px;  margin:auto;
                    }
                .iconicmenu {
        position: relative;
        height: 45px;
        overflow: hidden;
        }
    
    .iconicmenu, .iconicmenu * {
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        }
    
    .iconicmenu input[type="checkbox"] { /* checkbox used to toggle menu state */
        position: absolute;
        left: 0;
        top: 0;
        opacity: 0;
        }
    
    .iconicmenu > label { /* Main label icon to toggle menu state */
        z-index: 1000;
        display: block;
        position: absolute;
        width: 40px;
        height: 40px;
        float: left;
        top: 0;
        left: 0;
        background: white;
        text-indent: -1000000px;
        border: 6px solid black; /* border color */
        border-width: 6px 0;
        cursor: pointer;
        -moz-transition: all 0.3s ease-in;
        -webkit-transition: all 0.3s ease-in;
        transition: all 0.3s ease-in; /* transition for flipping label */
        }
    
    .iconicmenu > label::after { /* inner stripes inside label */
        content: "";
        display: block;
        position: absolute;
        width: 100%;
        height: 18%;
        top: 19%;
        left: 0;
        border: 6px solid black; /* border color */
        border-width: 6px 0;
        -moz-transition: all 0.3s ease-in;
        -webkit-transition: all 0.3s ease-in;
        transition: all 0.3s ease-in; /* transition for flipping label */
        }
    
    .iconicmenu ul { /* UL menu inside container */
        margin: 0;
        padding: 0;
        position: absolute;
        margin-left: 40px;
        background: #eee;
        left: -100%; /* hide menu intially */
        height: 40px; /* height of menu */
        font: bold 14px Verdana;
        text-align: center;
        list-style: none;
        opacity: 0;
        -moz-border-radius: 0 5px 5px 0;
        -webkit-border-radius: 0 5px 5px 0;
        border-radius: 0 5px 5px 0;
        -moz-perspective: 10000px;
        perspective: 10000px;
        -moz-transition: all 0.5s ease-in;
        -webkit-transition: all 0.5s ease-in;
        transition: all 0.5s ease-in; /* transition for animating UL in and out */
        }
    
    .iconicmenu li {
        display: inline;
        margin: 0;
        padding: 0;
        }
    
    .iconicmenu ul label { /* label button inside UL to close menu */
        cursor: pointer;
        position: relative;
        height: 100%;
        text-align: center;
        }
    
    .iconicmenu ul label::after { /* label button x */
        content: "x";
        display: inline-block;
        line-height: 14px;
        color: white;
        -moz-border-radius: 50px;
        -webkit-border-radius: 50px;
        border-radius: 50px;
        width: 20px;
        height: 20px;
        background: black;
        font-size: 18px;
        margin: 5px;
        margin-top: 10px;
        -moz-transition: all 0.3s ease-in;
        -webkit-transition: all 0.3s ease-in;
        transition: all 0.3s ease-in;
        }
    
    .iconicmenu input[type="checkbox"]:checked ~ label, .iconicmenu ul label:hover::after {
        -moz-transform: rotatey(180deg);
        -ms-transform: rotatey(180deg);
        -webkit-transform: rotatey(180deg);
        transform: rotatey(180deg); /* flip labels vertically onMouseover */
        }
    
    .iconicmenu > label:hover, .iconicmenu > label:hover::after, .iconicmenu input[type="checkbox"]:checked ~ label, .iconicmenu input[type="checkbox"]:checked ~ label::after {
        border-color: darkred; /* highlight color of main menu label onMouseover */
        }
    
    .iconicmenu input[type="checkbox"]:checked ~ ul {
        left: 8px; /* Animate menu into view */
        opacity: 1;
        -moz-box-shadow: 1px 1px 5px gray;
        -webkit-box-shadow: 1px 1px 5px gray;
        box-shadow: 1px 1px 5px gray;
        }
    
    .iconicmenu li a {
        display: block;
        float: left;
        text-align: center;
        text-decoration: none;
        color: black;
        margin: 0;
        padding: 10px;
        padding-right: 15px;
        height: 100%;
        }
    
    .iconicmenu li a:hover {
        background: black;
        color: white;
        }
    
    /* ----------------------------- CSS Media Queries ----------------------------- */
    
    /*
    These rules control which portions of the menu gets shown when the screen size is below a certain width.
    By default 2 stages are defined depending on browser screen width.
    */
    
    @media screen and (max- 580px) { /* Hide toggle icon when menu is already open (increases usable menu space by 40px) */
        .iconicmenu input[type="checkbox"]:checked ~ label {
            display: none;
            }
        .iconicmenu input[type="checkbox"]:checked ~ ul {
            margin-left: 0;
            }
        }
     
    @media screen and (max- 560px) { /* Convert horizontal menu to vertical drop down instead (friendly across all screen sizes) */
        .iconicmenu {
            overflow: visible;
            }
        .iconicmenu ul {
            height: auto;
            }
        .iconicmenu ul li {
            min-width: 200px;;
            display: block;
            }
        .iconicmenu ul li a {
            float: none;;
            text-align: left;
            }
        }

     转载请注明原文地址:

  • 相关阅读:
    水晶苍蝇拍:微薄投资感悟摘录(四) (2012-04-03 14:11:01)
    水晶苍蝇拍:投资感悟(三)(手打,有删减)
    水晶苍蝇拍:投资感悟(二)(2011-12-27 08:17:54)
    leetcode -- String to Integer (atoi)
    leetcode -- Longest Palindromic Substring
    leetcode -- Longest Substring Without Repeating Characters
    leetcode -- Add Two Numbers
    QQ截图工具截取
    LUA学习笔记(第5-6章)
    Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected
  • 原文地址:https://www.cnblogs.com/liaohuolin/p/3925079.html
Copyright © 2020-2023  润新知