javascript - 展开/折叠所有手风琴
问题描述
我正在尝试创建一个手风琴,您可以在其中单击每个手风琴,但我还希望有另一个按钮,单击可展开或折叠所有手风琴。
所以现在我有这个.ts
组件:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-faq',
templateUrl: './faq.component.html',
styleUrls: ['./faq.component.scss'],
})
export class FaqComponent implements OnInit {
accordion1: boolean;
accordion2: boolean;
accordion3: boolean;
accordionAll: boolean;
constructor() { }
ngOnInit() {
}
}
现在,每个手风琴只是一些 CSS,然后我可以通过以下方式激活每个手风琴:
<div class="accordion-header" (click)="accordion1 = !accordion1" [ngClass]="accordion1 ? 'is-active' : ''">Accordion 1</div>
然后我可以给它一些样式并激活一些具有特定accordion1
状态的手风琴内容。
对于展开/折叠,我目前有这样的东西:
<div *ngIf="!accordionAll" (click)="accordion1 = true; accordion2 = true; accordion3 = true; accordionAll = true"></div>
<div *ngIf="accordionAll" (click)="accordion1 = false; accordion2 = false; accordion3 = false; accordionAll = false"></div>
现在,从某种意义上说,这是可行的。但如果我突然有 20 部不同的手风琴,这将是可怕的。另外,我不喜欢我需要有两个 div,因为某种动画(例如图标)以这种方式不能很好地工作。
所以我的问题是:我如何以“正确”的方式做到这一点,它不会与许多手风琴混在一起,并且我实际上可以只用一个按钮进行展开/折叠?
解决方案
我认为这样的事情会奏效。
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-faq',
templateUrl: './faq.component.html',
styleUrls: ['./faq.component.scss'],
})
export class FaqComponent implements OnInit {
accordion1: boolean;
accordion2: boolean;
accordion3: boolean;
accordionAll: boolean;
constructor() { }
ngOnInit() {
}
toogleAll() {
this.accordion1 = this.accordionAll;
this.accordion2 = this.accordionAll;
this.accordion3 = this.accordionAll;
this.accordionAll = !this.accordionAll;
}
}
<div *ngIf="!accordionAll" (click)="toogleAll()"></div>
<div *ngIf="accordionAll" (click)="toogleAll()"></div>
推荐阅读
- javascript - 从用户上传的 svg 获取路径标签的最简单方法?
- mysql - 如何在mysql的where子句中设置随机连接项?
- mysql - 替换 SQL 中 STRING 列的最后一个字符
- mysql - 在 Flutter 中将 SQFLite 数据库与 MySQL 同步?
- json - scala BigDecimal Gson json 格式
- php - 错误:在 rpmdb 中找不到包元组('php-pecl-jsonc'、'x86_64'、'0'、'1.3.7'、'1.el6.remi.5.6')
- awk - 使用 AWK 或 SED 将单引号添加到文件中的每一行
- html - 如何在框中放置正确大小的文本,垂直键入?
- javascript - 如何在未标记为“值”的 JSON 中使用 Highmaps 数据
- selenium-webdriver - 如何使用 chrome v 74.0.3729.131 和 chromedriver 74.0.3729.6 解决“无法连接到渲染器”