javascript - 如何使菜单行响应?

标签 javascript html css

在我的知识范围内,我尝试了大多数方法来使菜单行响应我的导航栏,但它不起作用。以下是相关的 CSS、HTML 和 Javascript 代码。

  (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;
  }
});

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);
#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;
  top: 0px;
  left: 0px;
}
#cssmenu:after,
#cssmenu > ul:after {
  content: ".";
  display: block;
  clear: both;
  visibility: hidden;
  line-height: 0;
  height: 0;
}
#cssmenu #menu-button {
  display: none;
}
#cssmenu {
  width: 100%;
  position: static;
  font-family: "lato", sans-serif;
  font-size: 1.1em;
  font-weight: 700;
  background: #fbfbfb;
  height: 70px;
  top: -8px;
  border-bottom: 1px #e6e6e6 solid;
  display: inline-block;
}
#menu-line {
  position: absolute;
  top: 67px;
  left: 0;
  height: 3px;
  background: #5e9682;
  -webkit-transition: all 0.1s ease-out;
  -moz-transition: all 0.1s ease-out;
  -ms-transition: all 0.1s ease-out;
  -o-transition: all 0.1s ease-out;
  transition: all 0.1s ease-out;
}
#cssmenu > ul > li {
  display: inline-block;
}
#cssmenu.align-center ul ul {
  text-align: center;
}
#cssmenu > ul > li > a {
  padding: 20px;
  top: 8px;
  font-size: 12px;
  text-decoration: none;
  text-transform: uppercase;
  color: #9b9797;
  -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: #5e9682;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>Refine Studios - Subtle Refine</title>


  <link href="css/bootstrap.min.css" rel="stylesheet">
  <link href="css/styles.css" rel="stylesheet">
</head>

<body>


  <div id="cssmenu">

    <ul>
      <li class="active"><a href="#">Home</a>
      </li>
      <li><a href="#">Report</a>
        <li><a href="#">Product</a> 
        </li>
        <li><a href="#">About</a>
        </li>
        <li><a href="#">Contact</a>
        </li>
    </ul>
  </div>


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="js/bootstrap.min.js"></script>
  <script src="js/script.js"></script>
</body>

</html>

最佳答案

你想要这样的东西吗:-

@import url(http://fonts.googleapis.com/css?family=Exo:400,500,700,700italic);
* {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  height: 100%;
}

body {
  margin: 1.25em .75em;
  background: url(http://subtlepatterns.com/patterns/black-Linen.png);
  font: 1.4em 'Exo', sans-serif;
}

nav[role="select"] {
  width: 100%;
  position: relative;
  color: #000;
}
nav[role="select"] > select {
  display: none;
}
nav[role="select"] ul {
  width: 100%;
  list-style: none;
}
nav[role="select"] ul > li {
  float: left;
  padding: .55em .45em;
  width: 19%;
  font-size: 1.2em;
  background-color: rgba(174, 86, 168, 0.5);
  text-align: center;
  transition-duration: .15s;
  transition-timing-function: ease-in-out;
  transition-property: box-shadow, background, color, text-align, padding;
  cursor: pointer;
}
nav[role="select"] ul > li:hover {
  background-color: rgba(174, 86, 168, 0.3);
  color: #fff;
  text-align: left;
  padding-left: .75em;
  box-shadow: 0 0 0 0.25em rgba(0, 0, 0, 0.3), 0 0 0 0.5em rgba(0, 0, 0, 0.3), 0 0 0 0.75em rgba(0, 0, 0, 0.3), inset 0 0 0 0.25em rgba(0, 0, 0, 0.3);
}
nav[role="select"] ul > li > a {
  color: inherit;
  text-decoration: none;
  transition: inherit;
}

/* small screens */
@media screen and (max-width: 44em) {
  body {
    margin: 1em 0;
  }

  nav[role="select"] ul {
    display: none;
  }
  nav[role="select"]:after {
    position: absolute;
    z-index: -1;
    content: "Menu";
    right: 0;
    bottom: -1.75em;
    background: rgba(174, 86, 168, 0.4);
    padding: .15em .55em;
  }
  nav[role="select"] select {
    display: block;
    user-select: none;
    cursor: pointer;
    width: 100%;
    padding: .55em .45em;
    border: none;
    background-color: rgba(174, 86, 168, 0.25);
    font: 1.2em 'Exo', sans-serif;
  }
}
<nav role="select">
    <ul>
        <li><a href="#">Stream</a></li>
        <li><a href="#">Lab</a></li>
        <li><a href="#">Projects</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
    
    <select onchange="if (this.value) window.location.href = this.value;">
        <option value="#">Stream</option>
        <option value="#">Lab</option>
        <option value="#">Projects</option>
        <option value="#">About</option>
        <option value="#">Contact</option>
    </select>
</nav>

关于javascript - 如何使菜单行响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40330984/

相关文章:

javascript - 使用选项卡导航到不同的 html 文件(HTML、JavaScript)

css - 表格中的第一条记录与 IE 中的表格标题重叠

javascript - 我如何更改 Bootstrap 导航栏悬停

javascript - jquery scroll 无法监听脚本文件中的事件

javascript - 为什么我的对象没有构造函数?

javascript - jquery 语法 : where to put "toFixed"

javascript - 使用变量更改 CSS 和 JS

IOS Safari 中的 Javascript 后台进程

css - 子div不会覆盖CSS中的父div

javascript - 具有自动切换功能的 jQuery Tabs