使用 JavaScript 更改元素的类时,CSS 类中定义的转换属性不会生效

问题描述 投票:0回答:1

我有一个网站,当用户加载页面时,我希望标题一从左侧滑入,并将其不透明度更改为 1。对于标题二,我只想更改不透明度。但由于某种原因,它会立即执行,而不是超过 2 秒。

这是我在这里发表的第一篇文章,我觉得我很愚蠢,但我们将不胜感激所有帮助。 如果您需要任何其他信息,请告诉我。

这是我复制问题的基本代码:

document.addEventListener("DOMContentLoaded", function() {
  setTimeout(function() {
    var headingOne = document.querySelector(".header-one-hiding");
    var headingTwo = document.querySelector(".header-two-hiding");

    headingOne.classList.remove("header-one-hiding");
    headingOne.classList.add("header-one-show");

    headingTwo.classList.remove("header-two-hiding");
    headingTwo.classList.add("header-two-show");
  }, 1000);
});
.header-one-hiding {
  opacity: 0;
  left: -1000px;
  position: relative;
  transition: opacity 2s ease, left 2s ease;
}

.header-one-show {
  opacity: 1;
  left: 0px;
}

.header-two-hiding {
  opacity: 0;
  transition: opacity 2s ease;
}

.header-two-show {
  opacity: 1;
}
<!DOCTYPE html>
<html>

<head></head>

<body>
  <div class="header-one-hiding">Header One</div>
  <div class="header-two-hiding">Header Two</div>

</body>

</html>

javascript html css transition domcontentloaded
1个回答
0
投票

您将从元素中删除

-hiding
类,因此
transition
属性也会随之被删除。这意味着,当您希望它们转换时,使其转换的部分不再使用。向两个 isn't 删除的标头添加另一个类,以便该属性在显示时不会被删除。

document.addEventListener("DOMContentLoaded", function() {
  setTimeout(function() {
    var headingOne = document.querySelector(".header-one-hiding");
    var headingTwo = document.querySelector(".header-two-hiding");

    headingOne.classList.remove("header-one-hiding");
    headingOne.classList.add("header-one-show");

    headingTwo.classList.remove("header-two-hiding");
    headingTwo.classList.add("header-two-show");
  }, 1000);
});
.header-one {
  position: relative;
  transition: opacity 2s ease, left 2s ease;
}

.header-two {
  transition: opacity 2s ease;
}

.header-one-hiding {
  opacity: 0;
  left: -1000px;
}

.header-one-show {
  opacity: 1;
  left: 0px;
}

.header-two-hiding {
  opacity: 0;
}

.header-two-show {
  opacity: 1;
}
<!DOCTYPE html>
<html>

<head></head>

<body>
  page loaded (for debugging)
  <div class="header-one header-one-hiding">Header One</div>
  <div class="header-two header-two-hiding">Header Two</div>

</body>

</html>

© www.soinside.com 2019 - 2024. All rights reserved.