使用jquery在导航栏引导程序4中单击后无法更改活动类别的链接
我需要在使用jquery在引导程序4的导航栏中单击后更改活动类别的链接。但它不起作用。我在jquery中使用的代码完全适用于其他链接,但不适用于导航栏。有什么问题?使用jquery在导航栏引导程序4中单击后无法更改活动类别的链接
导航栏代码:
<header class="d-flex main-header"> <div class="container header-container">
<nav class="navbar navbar-toggleable-sm navbar-inverse main-navigation fixed-top">
<div class="d-flex align-items-center content-nav-wrapper col-10 offset-1">
<h1 class="mr-auto"><a href="index.html"><img src="images/site_logo.png" alt="logo"></a></h1>
<button class="navbar-toggler navbar-toggler-right offcanvas-toggle menu-button align-self-center" type="button"
data-toggle="offcanvas"
data-target="#js-bootstrap-offcanvas" aria-controls="navbarCollapse" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-offcanvas navbar-offcanvas-touch navbar-offcanvas-right menu"
id="js-bootstrap-offcanvas">
<ul class="navbar-nav ml-md-auto">
<li class="nav-item">
<a class="nav-link" href="#about">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#portfolio">Portfolio</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#team">Team</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#contact">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
</div>
</header>
jQuery的为点击后更改活动类:
$(document).ready(function() { $(".navbar .navbar-nav li a").click(function() {
$(".navbar .navbar-nav li a").removeClass("active-nav-link");
$(this).addClass("active-nav-link");
});
});
我也有点击后的jQuery平滑滚动至型材和它时,链接和背景的变色用户将页面滚动到其中一个部分。也许问题是:
jQuery(window).scroll(function(){ var $sections = $('section');
$sections.each(function(i,el){
var top = $(el).offset().top-100;
var bottom = top +$(el).height();
var scroll = $(window).scrollTop();
var id = $(el).attr('id');
if(scroll > top && scroll < bottom){
$('a.active-section-link').removeClass('active-section-link');
$('a[href="#'+id+'"]').addClass('active-section-link');
}
})
});
$("nav").on("click","a", function (event) {
event.preventDefault();
var id = $(this).attr('href'),
top = $(id).offset().top;
$('body,html').animate({scrollTop: top}, 800);
});
我用无礼的话,我的导航栏和链接代码:
.main-header { .header-container {
width: inherit;
}
.menu {
overflow: hidden;
.nav-link {
color: #ffffff;
font-size: 1.2rem;
&:hover {
color: #2ecc71;
}
}
}
@media (min-width: 768px) {
.menu {
.active-section-link {
color: #2ecc71;
background-color: rgba(255, 255, 255, 0.2);
border-radius: 10px;
}
.active-nav-link {
color: #2ecc71;
}
}
}
回答:
所以我改变了UL的类并添加了一些styles.scss代码。
首先在ul
列表中,我将类navbar-nav
更改为nav
。需要这样做,因为灰色被附加到类navbar-nav
。
而且在风格添加了这个:
.nav { flex-direction: column; //for mobile version
}
@media (min-width: 768px) {
.main-header {
.menu {
.nav {
flex-direction: row;
}
}
}
}
了这一切后,我实现了我需要的东西。
回答:
好了,这是与SCSS一个问题,因为你在@media (min-width: 768px)
查询下定义.active-nav-link
样式。这使得你的风格只在比768px宽的视口上才有效。尝试把这个定义查询之外,像这样:
.main-header { .header-container {
width: inherit;
}
.menu {
overflow: hidden;
.nav-link {
color: #ffffff;
font-size: 1.2rem;
/* new place */
&.active-nav-link {
color: #2ecc71;
}
&:hover {
color: #2ecc71;
}
}
}
@media (min-width: 768px) {
.menu {
.active-section-link {
color: #2ecc71;
background-color: rgba(255, 255, 255, 0.2);
border-radius: 10px;
}
/*.active-nav-link {
color: #2ecc71;
}*/
}
}
}
以上是 使用jquery在导航栏引导程序4中单击后无法更改活动类别的链接 的全部内容, 来源链接: utcz.com/qa/257748.html