css - 如何在单击时将 CSS 类添加到仅被单击的按钮
问题描述
我想知道如何在使用 Angular 单击时仅向一个按钮添加一个 CSS 类。现在,当我单击任何按钮时,该类将添加到所有按钮中。
我想将 css 类添加到每个单击的按钮。
我可以通过为每个按钮创建几个不同的 css 类来做到这一点,然后当单击一个按钮时,它只会为该按钮添加特定的类,但是有没有更好的方法来做到这一点?
任何帮助将不胜感激,谢谢。
//btns.component.html
<div class="btn-container">
<div class="btn-col1">
<button class="stepOne-btns" (click)="wasClicked()" [ngClass]="btnStatus ? 'active' : 'inactive'"><img
src="../../assets/images/button-icons/home-icon.png" alt=""><strong>Home</strong></button>
<button class="stepOne-btns" (click)="wasClicked()" [ngClass]="btnStatus ? 'active' : 'inactive'"><img
src="../../assets/images/button-icons/life-icon.png" alt=""><strong>Life</strong></button>
<button class="stepOne-btns" (click)="wasClicked()"[ngClass]="btnStatus ? 'active' : 'inactive'"><img src="../../assets/images/button-icons/car-icon.png"
alt=""><strong>Auto</strong></button>
</div>
<div class="btn-col2">
<button class="stepOne-btns" (click)="wasClicked()" [ngClass]="btnStatus ? 'active' : 'inactive'"><img
src="../../assets/images/button-icons/condo-icon.png" alt=""><strong>Condo</strong></button>
<button class="stepOne-btns" (click)="wasClicked()" [ngClass]="btnStatus ? 'active' : 'inactive'"><img
src="../../assets/images/button-icons/flood-icon.png" alt=""><strong>Flood</strong></button>
<button class="stepOne-btns" (click)="wasClicked()" [ngClass]="btnStatus ? 'active' : 'inactive'"><img
src="../../assets/images/button-icons/umbrella-icon.png" alt=""><strong>Umbrella</strong></button>
</div>
</div>
//btns.component.ts
btnStatus: boolean = false;
wasClicked() {
this.btnStatus = !this.btnStatus;
console.log(this.btnStatus);
}
//btns.component.css
.active {
border: 4px solid $primary-color;
}
.inactive{
border: none;
}
解决方案
假设您想要 app.component.html 上的 3 个按钮,并且想要在单击任何一个按钮时更改按钮 css。
app.component.html
<app-btn [url]="item.url" *ngFor="let item in [{url:'assets/images/button-icons/home-icon.png'},{url:'/assets/images/button-icons/life-icon.png'},{url:'assets/images/button-icons/car-icon.png'}]"></app-btn>
[1,2,3] 用于 3 个按钮,可以根据需要为任意长度(写这个是为了简化事情)。您可以将您的 URL 作为输入传递,如上所示
创建一个新组件说 btn
btn.component.html
<button [src]="url" (click)="clicked()" [ngClass]="btnStatus ? 'active' : 'inactive'"></button>
btn.component.ts
@Input() url;
clicked() {
this.btnStatus = this.!btnStatus
}
希望这会有所帮助,它们可能是一些小的语法错误。
推荐阅读
- java - 使用 LocalDate 值查询 Spring JPA LocalDateTime
- python - 尝试使用 python 抓取 www.zath.co.uk 页面上的链接
- java - Spring Boot REST API 以格式显示响应结果
- java - 如何在自定义 maven 插件中读取 Mojo 名称?
- javascript - 如何使用 document.getElementById() 作为函数的一部分,目标 id 作为参数传递
- excel - 使用 VBA 从网站收集压缩文件,打开它们,提取 Excel 文件并将它们复制到 Excel 中
- r - 使用 paste() 后如何保留/更改类
- c# - 从 HttpClient 实例访问 HttpClientHandler?
- typescript - 使用 Mongoose.disconnect() 的问题
- python - 如何使用 boost/python numpy 库进行编译?make 找不到库文件