这是 plunker - http://plnkr.co/edit/WZ6cqCcXaLuOCXnZdCa6?p=preview
有没有一种 CSS 方式,当我点击One
or时Two
,它变成class="active"
for One
orTwo
并从中删除Home
?
这是 plunker - http://plnkr.co/edit/WZ6cqCcXaLuOCXnZdCa6?p=preview
有没有一种 CSS 方式,当我点击One
or时Two
,它变成class="active"
for One
orTwo
并从中删除Home
?
You can highlight each link with CSS alone, but not by using classes. Rather, use the :target
pseudo class: http://codepen.io/pageaffairs/pen/kqoma
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style media="all">
ul, li, div {margin: 0; padding: 0;}
ul {
list-style: none;
overflow: hidden;
padding: 10px;
}
li {
float: left;
margin: 0 20px 0 0;
}
li a {
display: block;
padding: 10px 20px;
text-decoration: none;
color: #08c;
border-radius: 20px;
}
li a:hover, li a:target {
background: #08c;
color: white;
}
</style>
</head>
<body>
<h1>Hello <code>:target</code>!</h1>
<div class="header">
<ul class="nav nav-pills">
<li class="active">
<a href="#home" id="home">Home</a>
</li>
<li>
<a href="#one" id="one">One</a>
</li>
<li>
<a href="#two" id="two">Two</a>
</li>
</ul>
</div>
</body>
</html>
您可以使用 jQuery 进行此操作,遵循以下格式:
switch (window.location.pathname) {
case '/THE_URL_HERE':
$('.nav-home').addClass('active');
break;
case '//THE_URL_HERE':
$('.nav-one').addClass('active');
break;
case '//THE_URL_HERE':
$('.nav-two').addClass('active');
break;
}
并将类添加到您的 HTML:
<h1>Hello Plunker!</h1>
<div class="header">
<ul class="nav nav-pills">
<li class="nav-home">
<a href="#">Home</a>
</li>
<li class="nav-one"><a href="#">One</a></li>
<li class="nav-two"><a href="#">Two</a></li>
</ul>
</div>
您将需要以某种方式编辑 html,css 无法更改元素类。您可以向 js 编写一个小函数来在单击事件上执行此操作,并从旧菜单项中删除该类并将其添加到新选择的菜单项中。
不专门使用 CSS。DOM 的链接和修改等行为特性超出了 CSS 的范围。
但是,您可以构建链接来修改 URL 的查询字符串(例如 ?item=one),并使用生成的 GET 值来设置导航类。
或者使用javascript。
使用 :target 如果要在没有 javascript 的情况下制作菜单,它会更灵活