在breadcrumb项目上保留颜色单击

时间:2013-09-24 08:37:36

标签: html css breadcrumbs

我在这个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有鼠标悬停的粉红色,但实际上我想要做的是在点击面包屑上的任何项目时保留该颜色即:粉红色应该在点击后保留,这可以作为用户的信号,其中breadcrumb中的tab目前处于活动状态。

我尝试过使用:在css中处于活动状态,但点击后它不会保留面包屑上的颜色。

任何帮助?

1 个答案:

答案 0 :(得分:1)

您必须使用:visited选择器。这样的事情会很好用:

#crumbs ul li a:visited {
  background-color: #fa5ba5;
}

#crumbs ul li a:visited:after {
    border-left-color: #fa5ba5;
}

JS小提琴:Demo

EDIT(完整JS方法):

您可以在JSFiddle here中找到完整的JS演示。 在onclick事件中,有一个循环可以从之前的活动链接中删除类.onclick

提供的代码必须改进,只是为了告诉你它可以工作。

我强烈建议你使用像jQuery这样的库,因为原生JS代码中的DOM操作非常无聊。

为了向您展示差异,使用jQuery,您必须这样做:

HTML代码:

<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 
});