首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >添加类时,应用样式时不需要平滑转换。

添加类时,应用样式时不需要平滑转换。
EN

Stack Overflow用户
提问于 2019-08-09 15:57:51
回答 2查看 51关注 0票数 2

我想要一个元素在2秒后以平滑的方式应用一些样式。我尝试了setTimeout,在两秒钟后添加类,但是尽管声明了transition: all 1s到绝对的所有东西,当类(包含新样式)被添加时,我看不到任何“转换”,新样式只是在没有平滑性的情况下被应用。

我怎么才能修好它?

代码语言:javascript
运行
复制
var s2 = document.querySelector("#section2");
setTimeout(() => {
  s2.classList.add("up");
}, 2000);
代码语言:javascript
运行
复制
html * {
  transition: 1s all;
}

body {
  overflow: hidden;
}

#section1 {
  background: steelblue;
}

#section2 {
  background: indigo;
  position: absolute;
}

section {
  width: 100%;
  height: 100vh;
}

.up {
  top: 0px;
}
代码语言:javascript
运行
复制
<section id="section1"></section>
<section id="section2"></section>

我想要实现的是,在第一个下面的div开始向上移动,直到它到达窗口的顶部,就像一个“滑动向上”的效果。为什么在添加包含此新样式的类后忽略"transition“属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-09 16:39:50

您需要为top规则应用一个初始值,以允许转换生效。

代码语言:javascript
运行
复制
var s2 = document.querySelector("#section2");
setTimeout(() => {
  s2.classList.add("up");
}, 2000);
代码语言:javascript
运行
复制
html * {
  transition: 1s all;
}

body {
  overflow: hidden;
  position: relative; /** ensure section#section2 is positioned relative to the body **/
}

#section1 {
  background: steelblue;
}

#section2 {
  background: indigo;
  position: absolute;
  top: 100vh; /** initial value **/
}

section {
  width: 100%;
  height: 100vh;
}

/** #section2.up is more specific **/
#section2.up {
  top: 0;
}
代码语言:javascript
运行
复制
<section id="section1"></section>
<section id="section2"></section>

票数 2
EN

Stack Overflow用户

发布于 2019-08-09 16:23:05

您还可以使用外部库(如jQuery)动画:

代码语言:javascript
运行
复制
$("#section2").animate({
  top: 0,
  duration: 2000
});
代码语言:javascript
运行
复制
html * {
  transition: 1s all;
}

body {
  overflow: hidden;
}

#section1 {
  background: steelblue;
}

#section2 {
  background: indigo;
  position: absolute;
}

section {
  width: 100%;
  height: 100vh;
}
代码语言:javascript
运行
复制
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>

<section id="section1"></section>
<section id="section2"></section>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57433615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档