我在这个JSFIDDLE中有一个面包屑的工作演示
下面是代码
.HTML
<div id="crumbs">
<ul>
<li><a href="#1">One</a></li>
<li><a href="#2">Two</a></li>
</ul>
</div>
.CSS
#crumbs ul li {
display: inline;
}
#crumbs ul li a {
display: block;
float: left;
height: 50px;
background: #3498db;
text-align: center;
padding: 30px 40px 0;
position: relative;
margin: 0 10px 0 0;
font-size: 20px;
text-decoration: none;
color: #fff;
padding: 30px 40px 0 80px;
}
#crumbs ul li a:after {
content: "";
border-top: 40px solid rgba(0,0,0,0);
border-bottom: 40px solid rgba(0,0,0,0);
border-left: 40px solid #3498DB;
position: absolute;
right: -40px;
top: 0;
z-index: 1;
}
#crumbs ul li a:before {
content: "";
border-top: 40px solid rgba(0,0,0,0);
border-bottom: 40px solid rgba(0,0,0,0);
border-left: 40px solid #fff;
position: absolute;
left: 0;
top: 0;
}
#crumbs ul li a:hover {
background: #fa5ba5;
}
#crumbs ul li a:hover:after {
border-left-color: #fa5ba5;
}
Css 具有用于鼠标悬停的粉红色,但我真正想做的是在单击面包屑上的任何项目后保留该颜色,即:单击后应保留粉红色,这可以作为向用户发出的信号,因为面包屑中的哪个选项卡当前处于活动状态。
我尝试在 css 中使用 :active,但它在单击后不会保留面包屑上的颜色。
有什么帮助吗?
使用:visited
选择器。这样的东西会很好用:
#crumbs ul li a:visited {
background-color: #fa5ba5;
}
#crumbs ul li a:visited:after {
border-left-color: #fa5ba5;
}
和JS小提琴:演示
编辑(完整的JS方法):
你可以在这里找到JSFiddle中的完整JS演示。onclick
事件中,有一个循环从以前的活动链接中删除类.onclick
。
提供的代码必须改进,这只是为了向您展示它可以工作。
我强烈建议您使用像jQuery这样的库,因为本机JS代码中的DOM操作非常无聊。
为了向您展示差异,使用jQuery,您必须这样做:
网页代码 :
<div id="crumbs">
<ul>
<li><a class="link" href="#1">One</a></li>
<li><a class="link" href="#2">Two</a></li>
</ul>
</div>
JS代码:
$('.link').on('click', function() {
$('.onclick').removeClass('onclick'); // Remove class from previous active link
$(this).addClass('onclick'); // Add class to new active link
});