html - 如何更改数据过滤器的 li:active 属性的颜色?
问题描述
如何更改数据过滤器的 li:active 属性的颜色?
我希望有源过滤器在选择时为红色。我的代码不起作用,请提供有效的解决方案。这是我的 HTML 和 CSS:
.portfolio-filter li {
display: inline-block;
font-size: 14px;
color: #212121;
font-weight: 500;
margin-right: 46px;
text-transform: uppercase;
cursor: pointer;
}
.portfolio-filter li:hover {
color: red;
}
.portfolio-filter li:active {
color: red;
}
.portfolio-filter li:last-child {
margin-right: 0;
}
<div class="portfolio-section">
<ul class="portfolio-filter controls text-center">
<li class="control" data-filter="all">All</li>
<li class="control" data-filter=".aerial">Aerial</li>
<li class="control" data-filter=".corporate">Corporate</li>
<li class="control" data-filter=".events">Events</li>
<li class="control" data-filter=".outdoor">Outdoor</li>
<li class="control" data-filter=".portraits">Portraits</li>
<li class="control" data-filter=".studio">Studio</li>
</ul>
</div>
解决方案
那是你需要的吗?
const portfolioFilter = document.querySelector('.portfolio-filter');
const controls = document.querySelectorAll('.control');
portfolioFilter.addEventListener('click', (e) => {
const control = e.target.closest('.control');
if (!control) return;
controls.forEach((currentControl) => currentControl.classList.remove('active'));
control.classList.add('active');
});
.portfolio-section {
padding-top: 120px;
}
.portfolio-filter {
list-style: none;
margin-bottom: 46px;
padding: 0 15px;
}
.portfolio-filter li {
display: inline-block;
font-size: 14px;
color: #212121;
font-weight: 500;
margin-right: 46px;
text-transform: uppercase;
cursor: pointer;
}
.portfolio-filter li:hover {
color: red;
}
.portfolio-filter li:active {
color: red;
}
.portfolio-filter li:current {
color: red;
}
.portfolio-filter li:last-child {
margin-right: 0;
}
.portfolio-filter li.active {
color: red;
}
<div class="portfolio-section">
<ul class="portfolio-filter controls text-center">
<li class="control" data-filter="all">All</li>
<li class="control" data-filter=".aerial">Aerial</li>
<li class="control" data-filter=".corporate">Corporate</li>
<li class="control" data-filter=".events">Events</li>
<li class="control" data-filter=".outdoor">Outdoor</li>
<li class="control" data-filter=".portraits">Portraits</li>
<li class="control" data-filter=".studio">Studio</li>
</ul>
</div>
推荐阅读
- android - 制作浮点数的多维数组列表的副本
- node.js - 当都安装在 kubernetes 中时,如何在节点 js 中使用用户 jaeger?
- php - 无法通过 ssl 将 Laravel 应用程序连接到托管在 Azzure 上的数据库
- mysql - 十月CMS | 在 Models/Model_Name/fields.yaml 中,当我选择的列为空时,如何使用 select: 连接但删除字符
- android - 为什么小米红米 Note 6 Pro 不支持 ARCore?
- java - 我如何按顺序简化方向数组 {"south", "east"} 等?
- sql - 如何对多行的列值求和?
- asp.net-mvc - AspNet 在请求查询时按用户名对消息进行分类
- database - 如何管理微服务上的多个数据库?
- css - 使用 CSS 使标题变粘并滚动正文