css - (Angular 6)动态地将样式添加到单击的元素中。旋转人字形
问题描述
单击按钮时,我想旋转 V 形。所以我的问题是 - 怎么做?我应该添加整个 Angular 动画组件并在那里执行还是可以仅将旋转添加到雪佛龙?
<a href="#" (click)="transformArrow()">Show
<span>
<label class="m-0">this</label>
<span class="glyphicons glyphicons-chevron-down" id="myElement"></span>
</span>
</a>
然后我尝试添加一些功能
transformArrow(){
let ele = document.getElementById('myElement');
ele.style.transform //And I stuck here as I need to actually access ":before" of this element and rotate it.
}
非常感谢 trichetriche 和 malbarmawi 的替代方案,我唯一需要改变的是“之后”到“之前”:)
我的想法是:
transformArrow(e) {
let ele = document.getElementById('myElement');
ele.classList.toggle('btn-change');
}
.glyphicons-chevron-down
{
transition: $trans-1;
&.btn-change
{
&:before
{
position: relative;
display: block;
transform: rotate(180deg);
}
}
}
我真的很喜欢 ngClass 的想法,但我喜欢将大部分操作保留在 component.ts 中,所以我想保留功能。是不是更好,或者像马尔巴马维那样做更好的做法?
解决方案
为什么不通过 CSS 和自定义属性来实现呢?
ele.setAttribute('data-rotate', 'true')
span#myElement[data-rotate="true"]:after {
transform: rotate(90deg);
}
推荐阅读
- angular - NX - 共享可构建库不会构建
- android - 错误状态:flutter 2.5 上的 DocumentSnapshotPlatform 中不存在字段
- arangodb - ArangoDB AQL 深度数组扫描
- python - 如何在熊猫中垂直组合两个数据集?
- html - 访问新页面时 Safari 滚动背景更改颜色
- c - C中指针的字节宽度
- javascript - 如何在 React 中实现 RBAC?
- amazon-web-services - 使用 s3 源数据创建 Athena 表
- if-statement - 在 QUERY 中应用 IF 逻辑
- c++ - 如何根据在 Visual Studio 中选择的配置运行 cmakelist.txt 文件中的 add_custom_command