zoukankan      html  css  js  c++  java
  • css+js实现的一个导航栏

    <!doctype html>
    <html lang=''>
    <head>
       <meta charset='gb2312'>
       <meta http-equiv="X-UA-Compatible" content="IE=edge">
       <meta name="viewport" content="width=device-width, initial-scale=1">
       <link rel="stylesheet" href="css/jq22.css">
       <script src="js/jquery-latest.min.js" type="text/javascript"></script>
       <script src="js/jq22.js"></script>
       <title>jQuery响应式多级下拉导航菜单特效</title>
    </head>
    <body>
    
    <div id='cssmenu'>
    <ul>
       <li><a href='#'>首页</a></li>
       <li class='active has-sub'><a href='#'>网页特效</a>
          <ul>
             <li class='has-sub'><a href='#'>jQuery特效</a>
                <ul>
                   <li><a href='#'>HTML5</a></li>
                   <li><a href='#'>CSS3</a></li>
                   <li><a href='#'>CSS3</a></li>
                   <li><a href='#'>CSS3</a></li>
                </ul>
             </li>
             <li class='has-sub'><a href='#'>JS代码</a>
                <ul>
                   <li><a href='#'>Nav2</a></li>
                   <li><a href='#'>Nav3</a></li>
                </ul>
             </li>
             <li class='has-sub'><a href='#'>jQuery特效</a></li>
             <li class='has-sub'><a href='#'>jQuery特效</a></li>
          </ul>
       </li>
       <li><a href='#'>jQuery</a></li>
       <li><a href='#'>flash动画</a></li>
    </ul>
    </div>
    
    </body>
    <html>
    #cssmenu,
    #cssmenu ul,
    #cssmenu ul li,
    #cssmenu ul li a,
    #cssmenu #menu-button {
      margin: 0;
      padding: 0;
      border: 0;
      list-style: none;
      line-height: 1;
      display: block;
      position: relative;
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
    #cssmenu:after,
    #cssmenu > ul:after {
      content: ".";
      display: block;
      clear: both;
      visibility: hidden;
      line-height: 0;
      height: 0;
    }
    #cssmenu #menu-button {
      display: none;
    }
    #cssmenu {
      width: auto;
      font-family: 'Open Sans', sans-serif;
      line-height: 1;
      background: #ffffff;
    }
    #menu-line {
      position: absolute;
      top: 0;
      left: 0;
      height: 3px;
      background: #009ae1;
      -webkit-transition: all 0.25s ease-out;
      -moz-transition: all 0.25s ease-out;
      -ms-transition: all 0.25s ease-out;
      -o-transition: all 0.25s ease-out;
      transition: all 0.25s ease-out;
    }
    #cssmenu > ul > li {
      float: left;
    }
    #cssmenu.align-center > ul {
      font-size: 0;
      text-align: center;
    }
    #cssmenu.align-center > ul > li {
      display: inline-block;
      float: none;
    }
    #cssmenu.align-center ul ul {
      text-align: left;
    }
    #cssmenu.align-right > ul > li {
      float: right;
    }
    #cssmenu.align-right ul ul {
      text-align: right;
    }
    #cssmenu > ul > li > a {
      padding: 20px;
      font-size: 12px;
      text-decoration: none;
      text-transform: uppercase;
      color: #000000;
      -webkit-transition: color .2s ease;
      -moz-transition: color .2s ease;
      -ms-transition: color .2s ease;
      -o-transition: color .2s ease;
      transition: color .2s ease;
    }
    #cssmenu > ul > li:hover > a,
    #cssmenu > ul > li.active > a {
      color: #009ae1;
    }
    #cssmenu > ul > li.has-sub > a {
      padding-right: 25px;
    }
    #cssmenu > ul > li.has-sub > a::after {
      position: absolute;
      top: 21px;
      right: 10px;
      width: 4px;
      height: 4px;
      border-bottom: 1px solid #000000;
      border-right: 1px solid #000000;
      content: "";
      -webkit-transform: rotate(45deg);
      -moz-transform: rotate(45deg);
      -ms-transform: rotate(45deg);
      -o-transform: rotate(45deg);
      transform: rotate(45deg);
      -webkit-transition: border-color 0.2s ease;
      -moz-transition: border-color 0.2s ease;
      -ms-transition: border-color 0.2s ease;
      -o-transition: border-color 0.2s ease;
      transition: border-color 0.2s ease;
    }
    #cssmenu > ul > li.has-sub:hover > a::after {
      border-color: #009ae1;
    }
    #cssmenu ul ul {
      position: absolute;
      left: -9999px;
    }
    #cssmenu li:hover > ul {
      left: auto;
    }
    #cssmenu.align-right li:hover > ul {
      right: 0;
    }
    #cssmenu ul ul ul {
      margin-left: 100%;
      top: 0;
    }
    #cssmenu.align-right ul ul ul {
      margin-left: 0;
      margin-right: 100%;
    }
    #cssmenu ul ul li {
      height: 0;
      -webkit-transition: height .2s ease;
      -moz-transition: height .2s ease;
      -ms-transition: height .2s ease;
      -o-transition: height .2s ease;
      transition: height .2s ease;
    }
    #cssmenu ul li:hover > ul > li {
      height: 32px;
    }
    #cssmenu ul ul li a {
      padding: 10px 20px;
      width: 160px;
      font-size: 12px;
      background: #333333;
      text-decoration: none;
      color: #dddddd;
      -webkit-transition: color .2s ease;
      -moz-transition: color .2s ease;
      -ms-transition: color .2s ease;
      -o-transition: color .2s ease;
      transition: color .2s ease;
    }
    #cssmenu ul ul li:hover > a,
    #cssmenu ul ul li a:hover {
      color: #ffffff;
    }
    #cssmenu ul ul li.has-sub > a::after {
      position: absolute;
      top: 13px;
      right: 10px;
      width: 4px;
      height: 4px;
      border-bottom: 1px solid #dddddd;
      border-right: 1px solid #dddddd;
      content: "";
      -webkit-transform: rotate(-45deg);
      -moz-transform: rotate(-45deg);
      -ms-transform: rotate(-45deg);
      -o-transform: rotate(-45deg);
      transform: rotate(-45deg);
      -webkit-transition: border-color 0.2s ease;
      -moz-transition: border-color 0.2s ease;
      -ms-transition: border-color 0.2s ease;
      -o-transition: border-color 0.2s ease;
      transition: border-color 0.2s ease;
    }
    #cssmenu.align-right ul ul li.has-sub > a::after {
      right: auto;
      left: 10px;
      border-bottom: 0;
      border-right: 0;
      border-top: 1px solid #dddddd;
      border-left: 1px solid #dddddd;
    }
    #cssmenu ul ul li.has-sub:hover > a::after {
      border-color: #ffffff;
    }
    @media all and (max- 768px), only screen and (-webkit-min-device-pixel-ratio: 2) and (max- 1024px), only screen and (min--moz-device-pixel-ratio: 2) and (max- 1024px), only screen and (-o-min-device-pixel-ratio: 2/1) and (max- 1024px), only screen and (min-device-pixel-ratio: 2) and (max- 1024px), only screen and (min-resolution: 192dpi) and (max- 1024px), only screen and (min-resolution: 2dppx) and (max- 1024px) {
      #cssmenu {
        width: 100%;
      }
      #cssmenu ul {
        width: 100%;
        display: none;
      }
      #cssmenu.align-center > ul,
      #cssmenu.align-right ul ul {
        text-align: left;
      }
      #cssmenu ul li,
      #cssmenu ul ul li,
      #cssmenu ul li:hover > ul > li {
        width: 100%;
        height: auto;
        border-top: 1px solid rgba(120, 120, 120, 0.15);
      }
      #cssmenu ul li a,
      #cssmenu ul ul li a {
        width: 100%;
      }
      #cssmenu > ul > li,
      #cssmenu.align-center > ul > li,
      #cssmenu.align-right > ul > li {
        float: none;
        display: block;
      }
      #cssmenu ul ul li a {
        padding: 20px 20px 20px 30px;
        font-size: 12px;
        color: #000000;
        background: none;
      }
      #cssmenu ul ul li:hover > a,
      #cssmenu ul ul li a:hover {
        color: #000000;
      }
      #cssmenu ul ul ul li a {
        padding-left: 40px;
      }
      #cssmenu ul ul,
      #cssmenu ul ul ul {
        position: relative;
        left: 0;
        right: auto;
        width: 100%;
        margin: 0;
      }
      #cssmenu > ul > li.has-sub > a::after,
      #cssmenu ul ul li.has-sub > a::after {
        display: none;
      }
      #menu-line {
        display: none;
      }
      #cssmenu #menu-button {
        display: block;
        padding: 20px;
        color: #000000;
        cursor: pointer;
        font-size: 12px;
        text-transform: uppercase;
      }
      #cssmenu #menu-button::after {
        content: '';
        position: absolute;
        top: 20px;
        right: 20px;
        display: block;
        width: 15px;
        height: 2px;
        background: #000000;
      }
      #cssmenu #menu-button::before {
        content: '';
        position: absolute;
        top: 25px;
        right: 20px;
        display: block;
        width: 15px;
        height: 3px;
        border-top: 2px solid #000000;
        border-bottom: 2px solid #000000;
      }
      #cssmenu .submenu-button {
        position: absolute;
        z-index: 10;
        right: 0;
        top: 0;
        display: block;
        border-left: 1px solid rgba(120, 120, 120, 0.15);
        height: 52px;
        width: 52px;
        cursor: pointer;
      }
      #cssmenu .submenu-button::after {
        content: '';
        position: absolute;
        top: 21px;
        left: 26px;
        display: block;
        width: 1px;
        height: 11px;
        background: #000000;
        z-index: 99;
      }
      #cssmenu .submenu-button::before {
        content: '';
        position: absolute;
        left: 21px;
        top: 26px;
        display: block;
        width: 11px;
        height: 1px;
        background: #000000;
        z-index: 99;
      }
      #cssmenu .submenu-button.submenu-opened:after {
        display: none;
      }
    }
    (function($) {
    
      $.fn.menumaker = function(options) {
          var cssmenu = $(this),
              settings = $.extend({title: "Menu",
                                   format: "dropdown",
                                   sticky: false}, options);
          return this.each(function() {
            cssmenu.prepend('<div id="menu-button">' + settings.title + '</div>');
            $(this).find("#menu-button").on('click', function(){
              $(this).toggleClass('menu-opened');
              var mainmenu = $(this).next('ul');
              if (mainmenu.hasClass('open')) { 
                mainmenu.hide().removeClass('open');
              }
              else {
                mainmenu.show().addClass('open');
                if (settings.format === "dropdown") {
                  mainmenu.find('ul').show();
                }
              }
            });
    
            cssmenu.find('li ul').parent().addClass('has-sub');
    
            multiTg = function() {
              cssmenu.find(".has-sub").prepend('<span class="submenu-button"></span>');
              cssmenu.find('.submenu-button').on('click', function() {
                $(this).toggleClass('submenu-opened');
                if ($(this).siblings('ul').hasClass('open')) {
                  $(this).siblings('ul').removeClass('open').hide();
                }
                else {
                  $(this).siblings('ul').addClass('open').show();
                }
              });
            };
    
            if (settings.format === 'multitoggle') multiTg();
            else cssmenu.addClass('dropdown');
    
            if (settings.sticky === true) cssmenu.css('position', 'fixed');
    
            resizeFix = function() {
              if ($( window ).width() > 768) {
                cssmenu.find('ul').show();
              }
    
              if ($(window).width() <= 768) {
                cssmenu.find('ul').hide().removeClass('open');
              }
            };
            resizeFix();
            return $(window).on('resize', resizeFix);
    
          });
      };
    })(jQuery);
    
    (function($){
    $(document).ready(function(){
    
    $(document).ready(function() {
      $("#cssmenu").menumaker({
        title: "Menu",
        format: "multitoggle"
      });
    
      $("#cssmenu").prepend("<div id='menu-line'></div>");
    
    var foundActive = false, activeElement, linePosition = 0, menuLine = $("#cssmenu #menu-line"), lineWidth, defaultPosition, defaultWidth;
    
    $("#cssmenu > ul > li").each(function() {
      if ($(this).hasClass('active')) {
        activeElement = $(this);
        foundActive = true;
      }
    });
    
    if (foundActive === false) {
      activeElement = $("#cssmenu > ul > li").first();
    }
    
    defaultWidth = lineWidth = activeElement.width();
    
    defaultPosition = linePosition = activeElement.position().left;
    
    menuLine.css("width", lineWidth);
    menuLine.css("left", linePosition);
    
    $("#cssmenu > ul > li").hover(function() {
      activeElement = $(this);
      lineWidth = activeElement.width();
      linePosition = activeElement.position().left;
      menuLine.css("width", lineWidth);
      menuLine.css("left", linePosition);
    }, 
    function() {
      menuLine.css("left", defaultPosition);
      menuLine.css("width", defaultWidth);
    });
    
    });
    
    
    });
    })(jQuery);
  • 相关阅读:
    在Asp.Net头部动态加载css和js文件的方法
    关于Ajax开发中Response的ContentType的一些问题
    C#获取存储过程的返回值
    在填写表单中输入全角数字的解决方案
    Eclipse3.7中搭建Android开发环境
    THinkPHP 获取客户端IP 与IP地址查询
    php 操作数组 (合并,拆分,追加,查找,删除等)
    HTML5 LocalStorage 本地存储
    [javascript] IE与火狐下window.event对象的区别
    今天有人问是否可以使用vs2005开发,回答了一下,记录下来
  • 原文地址:https://www.cnblogs.com/WayToJs/p/6555123.html
Copyright © 2011-2022 走看看