保留面包屑项目单击时的颜色



我在这个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 
});

最新更新