jquery - 调整浏览器大小时的菜单按钮

标签 jquery html css

我的网站只有 CSS 和 HTML,请告诉我是否需要 jQuery 或其他...所以,我一直在尝试将标题更改为一个按钮,您可以单击该按钮并使其垂直列表,这里很好example .当浏览器全尺寸时,标题是垂直的,但当它最小化时,标题变成一个按钮(在 example 的右上角。)点击时,变成一个垂直列表。这是我的代码:

(仅 body )

<body>
<div class="mainHeader">

    <div class="container">

        <div class="logo">
            <a href="#"><img src="Images/banner.png" width="300" height="100"></a>
        </div>

        <div class="nav">
            <ul class="nav">
                <li><a href="#">Home</a></li>
                <li><a href="#">Roster</a></li>
                <li><a href="#">Gallery</a></li>
                <li><a href="#">Our Sponsors</a></li>
                <li><a href="#">About Us</a></li>
            </ul>
        </div>

    </div>

</div>

和CSS:

/*============================
======= Imported Fonts======== 
============================*/

@import url(http://fonts.googleapis.com/css?family=Oswald:400,300,700);
@import url(http://fonts.googleapis.com/css?family=Montserrat:400,700);

/*=========================
======= Body style ======== 
=========================*/

 body {
  color: #000305;
  font-size: 110%; /* Base font size: 14px */
  font-family: 'Montserrat', serif;
  line-height: 1.5;
  margin: 0 auto;
  padding: 0;
  left: 50%, margin-left: -(width of element/2);
  width: 100%;
}

/*=====================
======= Header ======== 
=====================*/

.mainHeader {
  background: #02236a;
  width: 100%;
  height: auto;
  top: 0;
  position: fixed;
  margin-left: auto;
  margin-right: auto;
  margin: 0;
}

.container {
  width: 100%;
  margin: 0 auto;
}

.nav {
  float: right;
}

.logo {
  float: left;
}

    /*========================
    ======= Underline ======== 
    ========================*/

    .nav ul li {
      position: relative;
      color: #000;
      text-decoration: none;
      float: left;
      margin-right: 75px;
      margin-left: 55px;
      padding-top: 25px;
    }

    .nav ul li:hover {
      color: #000;
    }

    .nav ul li:before {
      content: "";
      position: absolute;
      width: 100%;
      height: 2px;
      bottom: 0;
      left: 0;
      background-color: #fff;
      visibility: hidden;
      -webkit-transform: scaleX(0);
      transform: scaleX(0);
      -webkit-transition: all 0.3s ease-in-out 0s;
      transition: all 0.3s ease-in-out 0s;
    }

    .nav ul li:hover:before {
      visibility: visible;
      -webkit-transform: scaleX(1);
      transform: scaleX(1);
    }

    .nav ul li a {
      text-decoration: none;
      color: #fff;
    }

/*============================
======= Miscellaneous ======== 
============================*/

a {
    text-decoration: none;
}

li {
    list-style: none;
}

请询问是否需要更多信息,谢谢。

最佳答案

我已经使用下面的代码来添加与您所要求的相同的功能,它可能对您有所帮助。你必须使用带有最新 jquery 的 javascript fisrt 将 id 添加到你的导航 div

 <div class="nav" id="navbar>
        <ul class="nav">
            <li><a href="#">Home</a></li>
            <li><a href="#">Roster</a></li>
            <li><a href="#">Gallery</a></li>
            <li><a href="#">Our Sponsors</a></li>
            <li><a href="#">About Us</a></li>
        </ul>
    </div>

添加CSS

@media all and (max-width: 768px), only screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 1024px), only screen and (min--moz-device-pixel-ratio: 2) and (max-width: 1024px), only screen and (-o-min-device-pixel-ratio: 2/1) and (max-width: 1024px), only screen and (min-device-pixel-ratio: 2) and (max-width: 1024px), only screen and (min-resolution: 192dpi) and (max-width: 1024px), only screen and (min-resolution: 2dppx) and (max-width: 1024px) {
    #nav {
    width: 100%;
}
#nav #menu-button {
    display: block;
    padding: 20px;
    color: #000000;
    cursor: pointer;
    font-size: 12px;
    text-transform: uppercase;
}
#nav #menu-button::after {
    content:'';
    position: absolute;
    top: 20px;
    right: 20px;
    display: block;
    width: 15px;
    height: 2px;
    background: #000000;
}
#nav #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;
}

并添加javascript

(function ($) {

$.fn.menumaker = function (options) {

    var nav = $(this),
        settings = $.extend({
            title: "Menu",
            format: "dropdown",
            sticky: false
        }, options);

    return this.each(function () {
        nav.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();
                }
            }
        });

        nav.find('li ul').parent().addClass('has-sub');

        multiTg = function () {
            nav.find(".has-sub").prepend('<span class="submenu-button"></span>');
            nav.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 nav.addClass('dropdown');

        if (settings.sticky === true) nav.css('position', 'fixed');

        resizeFix = function () {
            if ($(window).width() > 768) {
                nav.find('ul').show();
            }

            if ($(window).width() <= 768) {
                nav.find('ul').hide().removeClass('open');
            }
        };
        resizeFix();
        return $(window).on('resize', resizeFix);

    });
};
})(jQuery);

(function ($) {
$(document).ready(function () {

    $(document).ready(function () {
        $("#nav").menumaker({
            title: "Menu",
            format: "multitoggle"
        });

        $("#nav").prepend("<div id='menu-line'></div>");

        var foundActive = false,
            activeElement, linePosition = 0,
            menuLine = $("#nav #menu-line"),
            lineWidth, defaultPosition, defaultWidth;

        $("#nav > ul > li").each(function () {
            if ($(this).hasClass('active')) {
                activeElement = $(this);
                foundActive = true;
            }
        });

        if (foundActive === false) {
            activeElement = $("#nav > ul > li").first();
        }

        defaultWidth = lineWidth = activeElement.width();

        defaultPosition = linePosition = activeElement.position().left;

        menuLine.css("width", lineWidth);
        menuLine.css("left", linePosition);

        $("#nav > 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);

关于jquery - 调整浏览器大小时的菜单按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29315806/

相关文章:

css - 如何使标题背景图像以与正文背景相同的比例缩放?

javascript - 通过单击图像显示弹出窗口(对于多图像)

javascript - 使用 CSS 的自动索引行未按预期运行

javascript - 将 PHP 值显示到不刷新的页面

javascript - 为什么 setTimeout 激活我的动画?

css - HTML5 隐藏属性与 Bootstrap 不兼容

html - 根据 div 调整大小调整文本大小?

javascript - JQuery 垂直选项卡 - 创建选项卡的附加链接

JAVASCRIPT 检查 iframe 是否加载失败

html - 使用 Bootstrap,在中间插入一条垂直线,将左边的 3 个图标和右边的 3 个图标分开,仍然让它响应