【发布时间】:2021-02-10 06:40:46
【问题描述】:
我有三个可以通过导航栏上的标签访问的 html 页面 因此,没有共享相同导航栏的主布局。每个页面都有自己的 HTML5,但它们共享相同的 CSS 文件
当某个页面被访问时,它在导航栏上的页面有一个“活动”类(见下文)
index.html 处的导航栏
<nav>
<a href="index.html" class = "active">Home</a>
<a href="teams.html">Teams</a>
<a href="history.html">History</a>
<a href="http://......" target="_blank">USA Ultimate</a>
</nav>
team.html 上的导航栏
<nav>
<a href="index.html">Home</a>
<a href="team.html" class = "active">Teams</a>
<a href="history.html">History</a>
<a href="http:...." target="_blank">USA Ultimate</a>
</nav>
历史页面等等
每个标签都有 CSS 规则,可以像按钮一样显示。 (不使用引导程序)
我尝试做的是,每当我在某个页面上时,我都希望标签具有白色背景色。为了让访问者知道当前打开了哪个页面。
最后我用下面的 CSS 规则配置了它
解决方案
.active{
background-color: #FFFFFF;
}
最初我尝试使用伪类来做到这一点
1)
nav a:active{
background-color: #FFFFFF;
}
2)
nav a:active:before{
background-color: #FFFFFF;
}
3)
nav a:active:after{
background-color: #FFFFFF;
}
也用了:target伪类但是没用。
对于那些标记为 1、2、3 并且不起作用的人,我在阅读文档并在 fiddle 上看到了建议的解决方案时尝试了它。
有人能告诉我有效的解决方案与我尝试使用 :target 的其他解决方案之间有什么区别吗?
【问题讨论】:
-
不同之处在于 .active 类有效,但 :active 伪类无效。
-
是的,我正在努力理解为什么
-
该元素具有活动类,因此您必须使用它。当用户单击它时,活动伪与 dom 中对象的状态有关,因此您可以设置它的样式,但不能设置其未单击状态:developer.mozilla.org/en-US/docs/Web/CSS/:active
-
是的,我读过它,这就是为什么关于对象的状态我尝试使用
:target,但它再次不起作用 -
您的样式设置错误,无论元素的伪或状态如何,类都会获取样式。
标签: html css css-selectors pseudo-class