0

我希望在单击 div 后保持背景颜色。

此 div 链接到另一个 div。

<a href="#aboutbody"><div class="barbutton">ABOUT</div></a>

这是我点击的 div 的 CSS

.barbutton:hover {
    background-color: #7BDFBE;
}

所以我希望背景颜色在点击时保持不变。

4

2 回答 2

0

为了保持你想要的状态,我建议使用一些 javascript/jQuery。

Javascript:

<a href="#aboutbody"><div id="barbuttonid" class="barbutton">ABOUT</div></a>

<script type="text/javascript">
    document.getElementById("barbuttonid").onclick = function() {
            document.getElementById("barbuttonid").className += " clicked";
        };
</script>

jQuery:

<a href="#aboutbody"><div class="barbutton">ABOUT</div></a>

<script type="text/javascript">
    jQuery('.barbutton').click(function() { jQuery(this).addClass('clicked'); });
</script>

CSS:

/* anchor tags are inline and cannot contain blocks elements like divs */
#aboutbody {
    display: inline-block;
}

.barbutton:hover {
    background-color: #7BDFBE;
}

.barbutton.clicked {
    background-color: #7BDFBE;
}

现在单击它时,将添加额外的类,并且 CSS 样式可以使背景为您保留。

编辑/注意:

Ravi 的答案更好,因为它不使用 javascript。如果您保持 HTML 布局不变,则 CSS 声明必须是:

a:hover .barbutton {...}
a:vistied .barbutton {...}

此外,只要浏览器记住链接已被访问,这种方式就会使样式保持不变(用户在 3 天后回来,背景颜色可能仍然保持不变)。一旦用户刷新或离开页面,我上面的方式就不会保留背景。我想这取决于你要做什么。

于 2013-04-29T19:04:05.203 回答
0

我认为您要实现的是正常的链接行为,即它会改变颜色并保持这种状态以表明它已经被访问过。如果是,那么您在 CSS 中以错误的方式处理问题。

不是将 CSS 放在<a>标签内的新 DIV 上,而是将 CSS 放在链接本身上。

<a class="barbutton" href="#aboutbody">ABOUT</a>


然后使用 CSS 中的链接状态,如下所示:

a.barbutton:visited {
    background-color: #7BDFBE;
}

a.barbutton:hover {
    background-color: #7BDFBE;
}

同样,添加您需要的其他链接状态。

于 2013-04-29T18:38:15.150 回答