【发布时间】:2021-01-20 04:42:01
【问题描述】:
我认为这会很好而且很简单;但是,我似乎无法让它工作。 我试图让一个 DIV 元素淡入和淡出,具体取决于是否选中了复选框,而不是瞬间出现和消失。
这是我的代码:
HTML -
<div id="logPad" name="logPad" class="buttonZ logPad" onclick="remfunc2();"></div>
<div class="logSlider">
<input type="checkbox" name="logSlider" class="logSlider-checkbox"
id="logSlider" tabindex="0" onclick="sliderJS();" />
<label class="logSlider-label" for="logSlider">
<span class="logSlider-inner"></span>
<span class="logSlider-switch"></span>
</label>
</div>
'logPad' 的 CSS-
.logPad {
min-width: 225px;
display: none;
max-height: 200px;
min-height: 15px;
transition: 10s;
}
现在我不确定应该在哪里应用过渡,我最有可能通过 JavaScript 进行思考,所以我尝试了一些东西,但我仍在学习 JS,但并不擅长它。
这是我的 JS,用于在“复选框”切换上隐藏和显示 logPad div,切换已转换为滑块而不是复选框,这是通过 CSS 完成的,但我不确定这与我的相关性确保滑块的 CSS 不在 logPad div 的过渡位置。
function sliderJS() {
var checkBox = document.getElementById("logSlider");
if (checkBox.checked == true) {
document.getElementById('logPad').style.display = "block";
} else {
document.getElementById('logPad').style.display = "none";
}
}
请有人解释一下这将在哪里应用?类中的当前转换没有效果。
【问题讨论】:
-
将
display设置为none会移除元素;如果你想让它过渡,你需要一个像opacity这样的属性从1变为0。这不会删除元素,只是让它不可见,所以如果你希望它在淡出后完全消失,你需要删除它在 setTimeout 回调中。 -
感谢@ChrisG,我已经改用 Opacity,现在效果很好。
-
关于你在下面的评论,我在上面的评论中告诉你如何解决这个问题:)
-
@ChrisG 我完全错过了!谢谢,我以前从未使用过 setTimeout,所以学习起来会很有趣,我知道它会在功能激活之前设置一个计时器,所以我试试看。
-
@ChrisG 在显示元素之前如何让显示再次设置为“阻止”?当然它不会淡入,因为 setTimeout 回调将显示设置为 none?
标签: javascript html css