bootstrap 更改导航栏 .active 背景颜色
bootstrap change navbar .active background color
我有一个导航栏,在其中我无法真正看到 .active 颜色,因为我使用的是我非常喜欢的第 3 方主题,但是我对该主题有一个问题。我无法正确查看当前处于活动状态的导航栏项目。因此我想为 .active 元素添加背景颜色。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test</title>
<meta charset="utf-8">
<!-- MOBILE FIRST -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- BOOTSTRAP -->
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<!-- THEMES -->
<!-- <link href="css/theme_black.min.css" rel="stylesheet"> -->
<!-- <link href="css/theme_white.min.css" rel="stylesheet"> -->
<!-- HOMEMADE - these files are local -->
<!-- <script src="js/functions.js"></script> -->
<!-- <link href="css/custom_style.css" rel="stylesheet"> -->
</head>
<body>
<header id="header" class="header clearfix no-padding">
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Test</a>
</div>
<div class="collapse navbar-collapse no-padding">
<ul class="nav navbar-nav pull-right" id="navigator">
<li id="home"><a class="border" href="#">Home</a></li>
<li id="about"><a class="border" href="#">About</a></li>
<li id="cv"><a class="border" href="#">CV</a></li>
<li id="contact"><a class="border" href="#">Contact</a></li>
</ul>
</div>
</div>
</nav>
</header>
</body>
我在 javascript 中使用以下代码来更改 .active 项目
functions.js
$('#nav li a').click(function() {
$('#nav li').removeClass();
$($(this).attr('href')).addClass('active');
});
不过,我确实想更改活动项目的背景,并且我在 css 中尝试了几种不同的解决方案,但其中 none 都按预期工作。
custom_style.css
.no-margin {
margin: 0;
}
.no-padding {
padding: 0;
}
//some sort of .active {
// background-color: blue;
//}
编辑:
现在 fiddle: https://jsfiddle.net/819qbftg/2/
要实现您想要的效果,您必须做两件事,确保使用 JavaScript 解决正确的项目并覆盖 Bootstrap CSS 设置的默认样式].
JavaScript (jQuery)
var selector = '.nav li';
$(selector).on('click', function(){
$(selector).removeClass('active');
$(this).addClass('active');
});
您正在寻址 #nav
,但在您的 HTML 中,只有 class 有导航,没有 ID。另外,不要将 class 添加到 href
属性。
此 JS 代码将首先从所有选择器 (.nav li
) 中删除 .active
,然后再在单击的项目上重新设置它。
已添加样式
.navbar-default .navbar-nav>.active> a,
.navbar-default .navbar-nav>.active> a:focus,
.navbar-default .navbar-nav>.active> a:hover {
background: red; /* Anything you want */
}
有关演示,请参阅 this JSFiddle。
覆盖这些样式...
<style>
.navbar-default .navbar-nav>li>a:focus { color: #DD0000; }
.navbar-default .navbar-brand:focus { color: #DD0000; }
</style>
我拿了你上面的文件,把这个样式标签放在 <head>
的底部。似乎按照你的要求去做。对于最后包含在您的 CSS 链接中的站点,我通常会在单独的 CSS 中执行此操作。
我有一个导航栏,在其中我无法真正看到 .active 颜色,因为我使用的是我非常喜欢的第 3 方主题,但是我对该主题有一个问题。我无法正确查看当前处于活动状态的导航栏项目。因此我想为 .active 元素添加背景颜色。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test</title>
<meta charset="utf-8">
<!-- MOBILE FIRST -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- BOOTSTRAP -->
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<!-- THEMES -->
<!-- <link href="css/theme_black.min.css" rel="stylesheet"> -->
<!-- <link href="css/theme_white.min.css" rel="stylesheet"> -->
<!-- HOMEMADE - these files are local -->
<!-- <script src="js/functions.js"></script> -->
<!-- <link href="css/custom_style.css" rel="stylesheet"> -->
</head>
<body>
<header id="header" class="header clearfix no-padding">
<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Test</a>
</div>
<div class="collapse navbar-collapse no-padding">
<ul class="nav navbar-nav pull-right" id="navigator">
<li id="home"><a class="border" href="#">Home</a></li>
<li id="about"><a class="border" href="#">About</a></li>
<li id="cv"><a class="border" href="#">CV</a></li>
<li id="contact"><a class="border" href="#">Contact</a></li>
</ul>
</div>
</div>
</nav>
</header>
</body>
我在 javascript 中使用以下代码来更改 .active 项目
functions.js
$('#nav li a').click(function() {
$('#nav li').removeClass();
$($(this).attr('href')).addClass('active');
});
不过,我确实想更改活动项目的背景,并且我在 css 中尝试了几种不同的解决方案,但其中 none 都按预期工作。
custom_style.css
.no-margin {
margin: 0;
}
.no-padding {
padding: 0;
}
//some sort of .active {
// background-color: blue;
//}
编辑:
现在 fiddle: https://jsfiddle.net/819qbftg/2/
要实现您想要的效果,您必须做两件事,确保使用 JavaScript 解决正确的项目并覆盖 Bootstrap CSS 设置的默认样式].
JavaScript (jQuery)
var selector = '.nav li';
$(selector).on('click', function(){
$(selector).removeClass('active');
$(this).addClass('active');
});
您正在寻址 #nav
,但在您的 HTML 中,只有 class 有导航,没有 ID。另外,不要将 class 添加到 href
属性。
此 JS 代码将首先从所有选择器 (.nav li
) 中删除 .active
,然后再在单击的项目上重新设置它。
已添加样式
.navbar-default .navbar-nav>.active> a,
.navbar-default .navbar-nav>.active> a:focus,
.navbar-default .navbar-nav>.active> a:hover {
background: red; /* Anything you want */
}
有关演示,请参阅 this JSFiddle。
覆盖这些样式...
<style>
.navbar-default .navbar-nav>li>a:focus { color: #DD0000; }
.navbar-default .navbar-brand:focus { color: #DD0000; }
</style>
我拿了你上面的文件,把这个样式标签放在 <head>
的底部。似乎按照你的要求去做。对于最后包含在您的 CSS 链接中的站点,我通常会在单独的 CSS 中执行此操作。