function dropDown(controller) {
controller.toggle ? controller.content.style = "display: none;" : controller.content.style = "display: grid; grid-template-columns: 1fr;";
controller.toggle = !controller.toggle;
}
对于我正在进行的项目,这是我的一些代码现在的样子,并且使用变量在两个状态之间切换感觉效率低下。我试着想办法使用classList.toggle(" class");但它无法在两种不同的样式之间切换,只需打开和关闭一种样式。
答案 0 :(得分:1)
首先将样式放在CSS
类中:
.hidden {
display: none;
}
.someClass {
display: grid;
grid-template-columns: 1fr;
}
然后将someClass
应用于该元素,并使用toggle
对象中的classList
方法来切换隐藏的类:
controller.classList.toggle('hidden');
参考:https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
如果您可以使用jQuery
,则非常简单:
$(controller).toggleClass("someClass hidden");
答案 1 :(得分:0)
您可以在包含每种样式的css中创建两个类,然后在它们之间切换:
CSS:
.X {
//有一种风格
}
.Y {
//有其他风格 }
<强>的.js 强>
$('#div').toggleClass('X Y');
答案 2 :(得分:0)
最初在您的元素上应用hide
类,然后您可以删除该类并在条件之后添加另一个类。
试试这个:
function dropDown(controller) {
if (controller.content.classList.contains('hide')) {
controller.content.classList.remove('hide');
controller.content.classList.add('showGrid');
} else {
controller.content.classList.add('hide');
controller.content.classList.remove('showGrid');
}
}
.hide {
display: none;
}
.showGrid {
display: grid;
grid-template-columns: 1fr;
}
答案 3 :(得分:0)
使用三元似乎是正确的方法,但它可以简化很多:
const {content, toggle} = controller;
content.style = (toggle = ! toggle) ? "display: grid; grid-template-columns: 1fr;" : "display: none;";