javascript - 只有五分之一的 div 转换正确

标签 javascript html css transition

点击按钮后,元素应该移动到它们的第二个位置。它似乎只适用于我不想使用的 !important 的最后一个元素。这是我的代码:

let ruch = document.querySelectorAll('.menu');
let myArray = Array.from(ruch);

let btn = document.getElementById('btn');
btn.addEventListener('click', function () {
  myArray.forEach(function (item) {
    if (item == myArray[0]) {
      item.classList.add('run1');
    } else if (item == myArray [4]) {
      item.classList.add('run2');
    } else {
      item.classList.add('run');
    }
  });
});
body {
  background-color: #302e2e;
  font-size:22px;
}
#btn{
  position: absolute;
  left: 914px;
  top: 180px;
}
.wrapper{
  position: relative;
  width:600px;
  margin: 0 auto;
}
.container{
  position:absolute;
  top:250px;
  width:0px;
}
.menu{
  padding:5px;
  border:1px solid #323232;
  width:100px;
  height:100px;
  background:#46f4a0;
  border-radius:20px;
  position: absolute;
  box-sizing: border-box;
}
.menu:nth-child(2){
  left:105px;
}
.menu:nth-child(3){
  left:210px;
}
.menu:nth-child(4){
  left:315px;
}
.menu:nth-child(5){
  left:420px;
}
.run{
  opacity: 0;
  transition:3s ease-in-out;
  z-index: -1;
  top:110px;
}
.run1{
  opacity: 0;
  transition:3s ease-in-out;
  z-index: -1;
  left:-110px;
}
.run2{
  opacity: 0;
  transition:3s ease-in-out;
  z-index: -1;
  left:530px!important;
}
<button id="btn">
    Kliknij
  </button>
  <div class="wrapper">
    <div class="container ">
      <div class="menu ">About</div>
      <div class="menu ">My Projets</div>
      <div class="menu ">Some stuff</div>
      <div class="menu ">Werid shits</div>
      <div class="menu ">Contact</div>
    </div>
  </div>

谢谢你的帮助

最佳答案

像这样? ( complementary CodePen )

let menuItems = Array.from(document.querySelectorAll(".menu"));

document.getElementById("btn").addEventListener("click", function() {
  menuItems[0].classList.add("run1");
  menuItems[4].classList.add("run2");
  menuItems.slice(1, 4).forEach(function(item) {
      item.classList.add("run");
  });
});
body {
  background-color: #302e2e;
  font-size: 22px;
}
#btn {
  position: absolute;
  left: 914px;
  top: 180px;
}
.wrapper {
  position: relative;
  width: 600px;
  margin: 0 auto;
}
.container {
  position: absolute;
  top: 250px;
  width: 0px;
}
.menu {
  padding: 5px;
  border: 1px solid #323232;
  width: 100px;
  height: 100px;
  background: #46f4a0;
  border-radius: 20px;
  position: absolute;
  box-sizing: border-box;
}
.menu:nth-child(2) {
  left: 105px;
}
.menu:nth-child(3) {
  left: 210px;
}
.menu:nth-child(4) {
  left: 315px;
}
.menu:nth-child(5) {
  left: 420px;
}
.menu.run {
  opacity: 0;
  transition: 3s ease-in-out;
  transform: translateY(110px);
}
.menu.run1 {
  opacity: 0;
  transition: 3s ease-in-out;
  transform: translateX(-110px);
}
.menu.run2 {
  opacity: 0;
  transition: 3s ease-in-out;
  transform: translateX(110px);
}
<button id="btn">Kliknij</button>
<div class="wrapper">
  <div class="container">
    <div class="menu">About</div>
    <div class="menu">My Projets</div>
    <div class="menu">Some stuff</div>
    <div class="menu">Werid shits</div>
    <div class="menu">Contact</div>
  </div>
</div>

请再次查看您的 CSS。您应该避免只使用绝对定位和像素值,因为它在每个设备上看起来都不一样。

关于javascript - 只有五分之一的 div 转换正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51109709/

相关文章:

javascript - 如何平滑地垂直移动/动画 DIV 背景图像?

javascript - Firefox 不在打印弹出窗口中显示表格标题

javascript - 对 Bootstrap 主题和像 Angular 2 这样的框架之间的关系感到困惑吗?

html - 是否可以从输入类型 : color and apply to form values that get outputted onto a table once submitted? 中获取十六进制值

html - 如何制作这个棱 Angular 分明的边框(如图所示)?

html - 如何突出显示文本并更改 css 中的高度和位置?

javascript - 在 Aurelia 计算中,设置依赖项时,如何声明对对象属性的依赖项

javascript - 使用 jQuery 的可折叠列表 - 如何更新展开/折叠所有按钮

python - 在 Beautifulsoup 中的某个点后删除 html

javascript - 从 JSON 属性加载 HTML img 元素的图像,而 URL 不能直接访问