jquery - 响应式站点导航切换无响应
问题描述
我正在为一家教育机构创建一个响应式网页。我使用了一个免费的模板,可归功于设计师。
在移动视图中,当我在 chrome 中向上滚动(地址栏隐藏在快照下方)时,蓝色导航切换(菜单栏)没有响应。
向下滚动后(现在地址栏在下面的快照中可见)导航切换工作正常。
我的js代码
$.fn.dropdownMenu = function(opt) {
return $(this).each(function() {
var el = $(this),
optsDefault = {
menuClass: 'dropdown-menu-list',
breakpoint: 1000,
toggleClass: 'active',
classButtonToggle: 'toggle-menu',
subMenu: {
class: 'sub-menu',
parentClass: 'menu-item-has-children',
toggleClass: 'active'
}
},
options = $.extend({}, optsDefault, opt);
el.on('dropdownMenu', function() {
$('.' + options.classButtonToggle, el).on('click', function(e) {
e.stopPropagation();
$('.' + options.menuClass, el).toggleClass(options.toggleClass);
});
$('.' + options.subMenu.parentClass, el).on('click', '> a', function(e) {
e.preventDefault();
var self = $(this);
self.next('.' + options.subMenu.class).slideToggle(400);
self.parent().toggleClass(options.subMenu.toggleClass);
});
$(document).on('click', function() {
$('.' + options.menuClass, el).removeClass(options.toggleClass);
$('.' + options.subMenu.parentClass, el).removeClass(options.subMenu.toggleClass);
$('.' + options.subMenu.class, el).hide();
});
$('.' + options.menuClass).on('click', function(e) {
e.stopPropagation();
});
});
if (window.innerWidth <= options.breakpoint) {
el.trigger('dropdownMenu');
}
$(window).resize(function() {
if (window.innerWidth <= options.breakpoint) {
el.trigger('dropdownMenu');
} else {
$('.' + options.classButtonToggle, el).off('click');
$('.' + options.subMenu.parentClass, el).off('click', '> a');
$('html, body').off('click');
$('.' + options.menuClass).off('click');
}
});
});
}
我的 HTML 代码
<div class="page-wrap">
<!-- header -->
<header class="header header--fixed">
<div class="container">
<div class="header__inner">
<div class="header__logo">Wisdom Learning<a href="index.html"><!--<img src="assets/img/logo.png" alt=""/>--></a></div>
<div class="header__menu">
<!-- onepage-nav -->
<nav class="onepage-nav">
<!-- onepage-menu -->
<ul class="onepage-menu">
<li class="current-menu-item"><a href="#id-1">Home</a>
</li>
<li><a href="#id-2">About</a>
</li>
<li><a href="#id-3">Products</a>
</li>
<li><a href="#id-4">Press</a>
</li>
<li><a href="#id-5">Contact</a>
</li>
</ul><!-- onepage-menu -->
<div class="navbar-toggle"><span></span><span></span><span></span></div>
</nav><!-- End / onepage-nav -->
</div>
</div>
</div>
</header><!-- End / header -->
<!-- Content-->
<div class="md-content">
<!-- hero -->
<div class="hero" id="id-1" style="background-image: url('assets/img/bg/1.jpg');">
<div class="hero__wrapper">
<div class="container">
<div class="row">
<div class="col-lg-8 ">
<h1 class="hero__title">We make learning<br/>
<!-- typing__module -->
<div class="typing__module" data-options='{"typeSpeed":60}'>
<div class="typed-strings"><span>Interactive</span><span>Easy</span><span>Fun</span>
</div><span class="typed"></span>
</div><!-- End / typing__module -->
</h1>
</div>
</div><span id="back-to-down">Know more</span>
</div>
</div>
</div><!-- End / hero -->
<!-- Section -->
<section class="md-section bg-gray" id="id-2">
<div class="container">
<div class="row">
<div class="col-lg-5 ">
<!-- slide-image -->
<div class="slide-image">
<!-- swiper__module swiper-container -->
<div class="swiper__module swiper-container slide-image__front" data-options='{"slidesPerView":1,"spaceBetween":0}'>
<div class="swiper-wrapper">
<div class="slide-item" style="background-image: url('assets/img/about/1.jpg');"></div>
<div class="slide-item" style="background-image: url('assets/img/about/2.jpg');"></div>
<div class="slide-item" style="background-image: url('assets/img/about/3.jpg');"></div>
</div>
<div class="swiper-pagination-custom"></div>
</div><!-- End / swiper__module swiper-container -->
<!-- swiper-thumbnails__module swiper-container -->
<div class="swiper-thumbnails__module swiper-container slide-image__black" data-options='{"slidesPerView":1,"spaceBetween":0,"delay":10000}'>
<div class="swiper-wrapper">
<div class="slide-item" style="background-image: url('assets/img/about/1b.jpg');"></div>
<div class="slide-item" style="background-image: url('assets/img/about/2b.jpg');"></div>
<div class="slide-item" style="background-image: url('assets/img/about/3b.jpg');"></div>
</div>
</div><!-- End / swiper-thumbnails__module swiper-container -->
</div><!-- End / slide-image -->
</div>
和 CSS 代码
.onepage-nav {
z-index: 999;}
.onepage-nav ul {
list-style: none;
margin: 0;
padding: 0;
font-size: 0;
}
.onepage-nav li {
position: relative;
z-index: 9;
}
.onepage-nav li a {
display: block;
position: relative;
text-decoration: none;
}
@media (min-width: 1201px) {
.onepage-nav {
text-align: center;
}
.onepage-nav li:hover > a {
color: #19c2c9;
}
.onepage-nav .onepage-menu .sub-menu {
opacity: 0;
visibility: hidden;
}
.onepage-nav .onepage-menu li:hover > .sub-menu {
opacity: 1;
visibility: visible;
}
.onepage-nav .onepage-menu a {
padding: 20px 30px;
}
.onepage-nav .onepage-menu .sub-menu {
text-align: left;
padding: 0 2px;
}
.onepage-nav .onepage-menu .sub-menu li {
background-color: #111;
}
.onepage-nav .onepage-menu .sub-menu li:first-child {
padding-top: 18px;
}
.onepage-nav .onepage-menu .sub-menu li:last-child {
padding-bottom: 18px;
}
.onepage-nav .onepage-menu .sub-menu a {
color: #eee;
padding: 2px 25px;
}
.onepage-nav .onepage-menu .sub-menu a:after {
right: 15px;
}
.onepage-nav .onepage-menu > li {
display: inline-block;
}
.onepage-nav .onepage-menu a {
font-size: 16px;
color: #748182;
transition: all 300ms ease;
font-family: "Poppins", sans-serif;
font-weight: 400;
text-transform: capitalize;
padding: 10px 20px;
}
.onepage-nav .onepage-menu .sub-menu {
display: block !important;
}
.onepage-nav .onepage-menu .sub-menu .current-menu-parent > a,
.onepage-nav .onepage-menu .sub-menu .current-menu-item > a {
color: #19c2c9;
}
.onepage-nav .onepage-menu .current-menu-parent > a,
.onepage-nav .onepage-menu .current-menu-item > a {
color: #19c2c9;
}
.onepage-nav .onepage-menu .sub-menu {
width: 200px;
position: absolute;
top: 100%;
z-index: -1;
left: 0;
transition: all 300ms ease;
}
.onepage-nav .onepage-menu .sub-menu .sub-menu {
top: 0;
left: 100%;
}
.onepage-nav .onepage-menu .sub-menu li > a {
font-size: 14px;
transition: all 300ms ease;
}
.onepage-nav .onepage-menu .sub-menu li:hover > a {
color: #4aa8ff;
}
.onepage-nav .onepage-toggle-menu {
display: none;
}
}
@media (max-width: 1200px) {
.onepage-nav .onepage-menu {
position: fixed;
top: 0;
will-change: transform;
}
.onepage-nav .onepage-menu a {
font-size: 14px;
}
.onepage-nav .onepage-menu a:after {
right: 0;
width: 50px;
text-align: center;
}
.onepage-nav .onepage-menu .sub-menu {
display: none;
}
.onepage-nav .onepage-menu {
background-color: #111;
}
.onepage-nav .onepage-menu a {
border-bottom: 1px solid rgba(255, 255, 255, .1);
color: #eee;
}
.onepage-nav .onepage-menu a:after {
border-left: 1px solid rgba(255, 255, 255, .1);
}
.onepage-nav .onepage-menu {
left: 0;
width: 280px;
background-color: #111;
-webkit-transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
.onepage-nav .active.onepage-menu {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
.onepage-nav .onepage-menu {
z-index: 99999;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
text-align: left;
width: 300px;
transition: all 300ms ease;
}
.onepage-nav .onepage-menu li {
position: relative;
}
.onepage-nav .onepage-menu a {
padding: 12px 15px;
font-size: 16px;
text-transform: capitalize;
color: #748182;
}
.onepage-nav .onepage-menu a:hover {
color: #fff;
}
.onepage-nav .onepage-menu .active > a {
color: #fff;
}
.onepage-nav .onepage-menu .current-menu-parent > a,
.onepage-nav .onepage-menu .current-menu-item > a {
color: #fff;
}
.onepage-nav .onepage-menu .sub-menu a {
padding: 12px 15px;
}
.onepage-nav .onepage-menu .sub-menu .menu-item-has-children > a:hover {
color: #4aa8ff;
}
.onepage-nav .onepage-menu .sub-menu .menu-item-has-children.active > a {
color: #4aa8ff;
}
.onepage-nav .onepage-toggle-menu {
display: block;
}
}
.onepage-nav {
display: inline-block;
vertical-align: middle;
}
.onepage-nav li.current a {
color: #19c2c9;
}
.onepage-menu.active ~ .navbar-toggle span:nth-child(1) {
top: 10px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.onepage-menu.active ~ .navbar-toggle span:nth-child(2) {
opacity: 0;
left: -40px;
}
.onepage-menu.active ~ .navbar-toggle span:nth-child(3) {
top: 10px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
我认为它的点击事件和我的导航栏位置之间的链接有一些问题请帮助解决导航切换应该一直工作的解决方案,无论其位置如何。
链接到我的网页:这里
解决方案
推荐阅读
- lua - 在(旧)Lua 中标记字符串
- javascript - 如何将输入到包含在 Bootstrap 模式(表单)中的输入中的值传递给 HTML 表?
- javascript - Inline If 在 Javascript 中操作 CSS 代码
- javascript - 我的 Vue Hello World 示例显示双括号而不是呈现文本
- ios - 用苹果登录到 firebase 无法在 firebase 注册
- python - 如何为 Shell/Bash 脚本设置 PyCharm
- tensorflow - 使用 TF2.0 训练 RNN 的每次迭代逐渐增加内存使用量
- sql - 有没有办法在 SQL 中加入来自同一张表的 2 条记录
- go - 遍历具有嵌入结构的结构
- android - [Android]:使用 Android Gradle 插件 3.4.0 版(Gradle 5.1.1 版)时无法构建签名的 APK