html - 你如何让一个 div 有一个活跃的或访问的风格?
问题描述
当它是活动导航时,我试图让我的导航变大和橙色但是在点击它之后会发生什么设计显示然后回到默认的未点击设计。
这是我的代码:
a.urlCount {
@include circle (20px, $white, inline-block);
margin: 10px;
border: solid 1px;
border-color: $gray;
text-align: center;
color: $gray;
font-size: 12px;
}
a.urlCount:hover{
@include circle (20px, #f56c2f, inline-block);
margin: 10px;
border: solid 1px;
border-color: #f56c2f;
text-align: center;
color: $white;
font-size: 12px;
}
a.urlCount:visited{
@include circle (23px, #f56c2f, inline-block);
margin: 10px;
border: solid 1px;
border-color: #f56c2f;
text-align: center;
color: $white;
font-size: 16px;
}
a.urlCount:active{
@include circle (23px, #f56c2f, inline-block);
margin: 10px;
border: solid 1px;
border-color: #f56c2f;
text-align: center;
color: $white;
font-size: 16px;
}
a.urlCount--active{
@include circle (23px, #f56c2f, inline-block);
margin: 10px;
border: solid 1px;
border-color: #f56c2f;
text-align: center;
color: $white;
font-size: 16px;
}
<div class="urlNavigation">
<span class="navTitle text__bold">SCAN RESULT OF URL</span>
<a class="urlCount text__bold" [routerLinkActive]="'urlCount--active'" (click)="initializeTableData(1)">{{ 1 }}</a>
<a class="urlCount text__bold" (click)="initializeTableData(2)">{{ 2 }}</a>
</div>
解决方案
您可以使用 Javascript 或 jQuery 通过向单击的元素添加一个类并为该类定义所需的 CSS 样式来实现此目的。
Javascript
首先,您必须遍历所有.urlCount
元素以附加事件侦听器(及其处理程序)。
在处理程序中,首先从先前活动的元素中删除该类是很重要的。为了防止在没有元素处于活动状态的情况下出现错误,您需要先检查是否存在这样的活动元素。或者,您可以循环遍历循环.urlCount
中的所有元素for
并从每个元素中删除该类。
if (!!document.querySelector('.active')) {
document.querySelector('.active').classList.remove('active');
}
使用!!
(double negation) 将值转换为布尔值,例如undefined
tofalse
或 (existing) object
totrue
最后,您只需要将.active
类添加到单击的元素:
this.classList.add('active');
工作示例:
let links = document.querySelectorAll('.urlCount');
for (i = 0; i < links.length; i++) {
links[i].addEventListener('click', function() {
if (!!document.querySelector('.active')) {
document.querySelector('.active').classList.remove('active');
}
this.classList.add('active');
});
}
a.urlCount {
@include circle (20px, $white, inline-block);
margin: 10px;
border: solid 1px;
border-color: $gray;
text-align: center;
color: $gray;
font-size: 12px;
}
a.urlCount:hover {
@include circle (20px, #f56c2f, inline-block);
margin: 10px;
border: solid 1px;
border-color: #f56c2f;
text-align: center;
color: $white;
font-size: 12px;
}
a.urlCount.active {
@include circle (23px, #f56c2f, inline-block);
margin: 10px;
border: solid 1px;
border-color: #f56c2f;
text-align: center;
color: $white;
font-size: 16px;
}
<div class="urlNavigation">
<span class="navTitle text__bold">SCAN RESULT OF URL</span>
<a class="urlCount text__bold" [routerLinkActive]="'urlCount--active'" (click)="initializeTableData(1)">{{ 1 }}</a>
<a class="urlCount text__bold" (click)="initializeTableData(2)">{{ 2 }}</a>
</div>
jQuery
如果您使用 jQuery,代码会变得简单得多。for
不再需要循环,因为您可以简单地将事件侦听器添加到所有元素的选择中.urlCount
:
$('.urlCount').on('click', function(){...});
并且您可以省略 if 语句来表示活动元素的存在,因为您可以在一个步骤中简单地.active
从所有元素中删除该类(无需 for 循环):.urlCount
$('.urlCount').removeClass('active');
工作示例:
$('.urlCount').on('click', function(){
$('.urlCount').removeClass('active');
$(this).addClass('active');
});
a.urlCount {
@include circle (20px, $white, inline-block);
margin: 10px;
border: solid 1px;
border-color: $gray;
text-align: center;
color: $gray;
font-size: 12px;
}
a.urlCount:hover {
@include circle (20px, #f56c2f, inline-block);
margin: 10px;
border: solid 1px;
border-color: #f56c2f;
text-align: center;
color: $white;
font-size: 12px;
}
a.urlCount.active {
@include circle (23px, #f56c2f, inline-block);
margin: 10px;
border: solid 1px;
border-color: #f56c2f;
text-align: center;
color: $white;
font-size: 16px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="urlNavigation">
<span class="navTitle text__bold">SCAN RESULT OF URL</span>
<a class="urlCount text__bold" [routerLinkActive]="'urlCount--active'" (click)="initializeTableData(1)">{{ 1 }}</a>
<a class="urlCount text__bold" (click)="initializeTableData(2)">{{ 2 }}</a>
</div>
推荐阅读
- git - git lfs ls-files 的特定提交
- bash - Shell 脚本:如何从大型语料库中复制具有特定字符串的文件
- awk - gawk 中的意外括号错误
- python - 如何在单个声明中创建多个空类?
- python - 具有用户定义字段和外键选择的 ModelForm
- node.js - Nodejs-将数据导出到excel时在单元格中进行TextWrap
- javascript - 从一个数组中删除代表另一个数组的重复数据
- c# - asp:literal 控件上如何避免xss?
- javascript - React JS 中 webpack.config.js 中的这个相对路径有什么问题?
- c# - 在 Word 中模拟从另一个 VSTO 插件单击功能区按钮