颜色过渡不适用于 setTimeout。元素应该看起来很流畅
Color transition not working with setTimeout. Element should appear smoothy
颜色过渡有效,如果我不隐藏元素然后让它出现。
const name = document.querySelector(".name");
setTimeout(() => {
name.classList.remove("hide");
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000)
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s;
color: transparent;
}
.color-blue { color: blue; }
.hide { display: none }
<div class="name hide">
Lebron James
</div>
如果我不使用 class 隐藏并且我以后也没有将其删除,则过渡有效。通过隐藏它,它不起作用。
不知道发生了什么
感谢您的帮助
使用opacity
设置opacity:0
隐藏元素。
了解 opacity
:https://www.w3schools.com/css/css_image_transparency.asp
const name = document.querySelector(".name");
setTimeout(() => {
name.classList.remove("hide");
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000)
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s;
color: transparent;
}
.color-blue { color: blue; }
.hide { opacity:0; }
<div class="name hide">
Lebron James
</div>
这是工作代码
const name = document.querySelector(".name");
setTimeout(() => {
name.classList.remove("hide");
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000)
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s;
color: transparent;
}
.color-blue { color: blue; }
.hide { opacity: 0 }
<div class="name hide">
Lebron James
</div>
http://jsfiddle.net/Aravi/39pdLarn/2/
显示在动画方面有限制,但您可以使用可见性和不透明度进行过渡。
那是因为你使用的是display: none;
.
如果将 display
设置为 none
,CSS 将无法显示动画。您可以使用 opacity: 0
来隐藏元素,但请记住将其添加到 transition
中,否则它不会显示任何颜色过渡。
const name = document.querySelector(".name");
setTimeout(() => {
name.classList.add("hide");
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000);
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s, opacity 10s;
color: transparent;
}
.color-blue {
color: blue;
}
.hide {
opacity: 0;
}
<div class="name">
Lebron James
</div>
或者,如果您想使用 display: none
(即从 DOM 中删除元素),那么您可以按如下方式更新您的 JS 代码:
const name = document.querySelector(".name");
setTimeout(() => {
setTimeout(() => {
name.classList.add("hide");
}, 10000);
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000)
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s;
color: transparent;
}
.color-blue {
color: blue;
}
.hide {
display: none
}
<div class="name">
Lebron James
</div>
颜色过渡有效,如果我不隐藏元素然后让它出现。
const name = document.querySelector(".name");
setTimeout(() => {
name.classList.remove("hide");
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000)
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s;
color: transparent;
}
.color-blue { color: blue; }
.hide { display: none }
<div class="name hide">
Lebron James
</div>
如果我不使用 class 隐藏并且我以后也没有将其删除,则过渡有效。通过隐藏它,它不起作用。
不知道发生了什么
感谢您的帮助
使用opacity
设置opacity:0
隐藏元素。
了解 opacity
:https://www.w3schools.com/css/css_image_transparency.asp
const name = document.querySelector(".name");
setTimeout(() => {
name.classList.remove("hide");
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000)
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s;
color: transparent;
}
.color-blue { color: blue; }
.hide { opacity:0; }
<div class="name hide">
Lebron James
</div>
这是工作代码
const name = document.querySelector(".name");
setTimeout(() => {
name.classList.remove("hide");
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000)
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s;
color: transparent;
}
.color-blue { color: blue; }
.hide { opacity: 0 }
<div class="name hide">
Lebron James
</div>
http://jsfiddle.net/Aravi/39pdLarn/2/
显示在动画方面有限制,但您可以使用可见性和不透明度进行过渡。
那是因为你使用的是display: none;
.
display
设置为 none
,CSS 将无法显示动画。您可以使用 opacity: 0
来隐藏元素,但请记住将其添加到 transition
中,否则它不会显示任何颜色过渡。
const name = document.querySelector(".name");
setTimeout(() => {
name.classList.add("hide");
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000);
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s, opacity 10s;
color: transparent;
}
.color-blue {
color: blue;
}
.hide {
opacity: 0;
}
<div class="name">
Lebron James
</div>
或者,如果您想使用 display: none
(即从 DOM 中删除元素),那么您可以按如下方式更新您的 JS 代码:
const name = document.querySelector(".name");
setTimeout(() => {
setTimeout(() => {
name.classList.add("hide");
}, 10000);
name.classList.add("color-blue")
// name.style.color = "blue";
}, 2000)
.name {
background-color: orange;
display: inline-block;
padding: 5px;
transition: color 10s;
color: transparent;
}
.color-blue {
color: blue;
}
.hide {
display: none
}
<div class="name">
Lebron James
</div>