gpt4 book ai didi

javascript - 过渡事件在高度过渡时触发得太早

转载 作者:行者123 更新时间:2023-11-28 01:06:43 24 4
gpt4 key购买 nike

我有一个如下所示的 JavaScript 文件:

function hideIt(body_id, icon_id) {
var x = document.getElementById(body_id);
var y = document.getElementById(icon_id);
if (x.style.height==="0px") {
x.style.height= x.scrollHeight + 'px';
x.addEventListener("webkitTransitionBegin", fullStyle(body_id));
y.src = "<%= asset_path('show_icon.png') %>";
} else {
x.style.height= '0px';
x.addEventListener("webkitTransitionEnd", noStyle(body_id));
y.src = "<%= asset_path('hide_icon.png') %>";
}
}

function noStyle(body_id) {
console.log("noStyle");
var x = document.getElementById(body_id);
x.style.padding = '0px';
x.style.margin = '0px';
x.style.border = 'none';
}

function fullStyle(body_id) {
console.log("fullStyle");
var x = document.getElementById(body_id);
x.style.padding = '10px';
x.style.marginBottom = '5px';
x.style.marginTop = '5px';
x.style.border = '1px solid #eaeaea';
}

我处理的元素的 CSS 如下所示:

.post-body-preview{
color: $black;
height: 0px;
overflow: hidden;
transition: height 1000ms;
}

现在的问题是,只要我点击带有 icon_id 的图标,就会触发 noStyle,这会触发 hideIt 脚本来隐藏 body 。元素 x 立即去除其边距、填充和边框,因此 webkitTransitionEnd 在我按下按钮时立即触发

有人可以指出我在这里做错了什么吗?

最佳答案

问题是我这样做了:

x.addEventListener("webkitTransitionBegin", fullStyle(body_id));

代替这个:

x.addEventListener("webkitTransitionBegin", function(){ fullStyle(body_id); });

所以它总是触发函数。

关于javascript - 过渡事件在高度过渡时触发得太早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52321892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com