Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使两个重叠的框在单击时相互消失_Javascript_Css_Css Animations - Fatal编程技术网

Javascript 使两个重叠的框在单击时相互消失

Javascript 使两个重叠的框在单击时相互消失,javascript,css,css-animations,Javascript,Css,Css Animations,我一直在尝试创建以下动画: 1我有一个按钮,由一个白色100x100盒子和一个黑色100x100盒子组成 2点击按钮使白框消失在黑框中。 看到结果了吗 3我一直试图做的是在点击时让黑框消失在白框中,但没有成功 因此: 点击白框使其消失在黑框中 点击黑框使其消失在白框中 点击白框使其消失在黑框中 等等 我的想法是通过点击时修改框的z索引来获得效果,使用实用程序类u-on-top和u-at-bottom,例如在白框消失后,黑框被带到顶部,但我得到了一些奇怪的结果。您可以尝试调整一些过渡,诀窍是在z索

我一直在尝试创建以下动画:

1我有一个按钮,由一个白色100x100盒子和一个黑色100x100盒子组成

2点击按钮使白框消失在黑框中。 看到结果了吗

3我一直试图做的是在点击时让黑框消失在白框中,但没有成功

因此:

点击白框使其消失在黑框中

点击黑框使其消失在白框中

点击白框使其消失在黑框中

等等


我的想法是通过点击时修改框的z索引来获得效果,使用实用程序类u-on-top和u-at-bottom,例如在白框消失后,黑框被带到顶部,但我得到了一些奇怪的结果。

您可以尝试调整一些过渡,诀窍是在z索引中添加延迟,以便在缩放效果后更改。我还更改了JS代码并减少了CSS:

var btnW=document.querySelector.white; var btnB=document.querySelector.black; var btnState=false; btnW.addEventListenerclick,=>{ 类列表。删除“隐藏”; 添加'hide'; btnW.classList.删除'u-on-top'; btnB.classList.添加“u-on-top”; } btnB.addEventListenerclick,=>{ 类列表。删除“隐藏”; btnB.classList.add'hide'; btnB.classList.删除“u-on-top”; btnW.classList.添加'u-on-top'; } .按钮{ 宽度:100px; 高度:100px; 利润率:10px; 位置:相对位置; 显示:内联块; 光标:指针; } .按钮>div{ 宽度:100%; 身高:100%; 边框:1px000; 位置:绝对位置; 转换:转换0s,z指数0s 0.5s; z指数:0; } .按钮.白色{ 背景:fff; } .按钮,黑色{ 背景:2000人; } .按钮>分区隐藏{ 变换:scale0; 转变:转变.5s,z指数0s0.5s; } .按钮>顶部u形分区{ z指数:1; }
您知道CSS中的错误吗?在当前编写时,.white规则嵌套在.button.Err的规则中。困惑的是,您链接到的示例在第一次单击时白色消失为黑色,然后在第二次单击时黑色消失为白色。这不回答你的问题吗?还是我错过了什么?@David Thomas,我用了SCSS筑巢。@barny,白色的盒子变小了,消失在黑色的盒子里。但是,点击后框并不会使黑框变小,而是将白框放大到原来的大小。非常感谢!你真棒
// html
<div class="button">
  <div class="white u-on-top"></div>
  <div class="black"></div>
</div>

// css
.button {
  width: 100px;
  height: 100px;
  margin: 10px;
  position: relative;
  display: inline-block;  

 .white {
   width: 100%;
   height: 100%;    
   background: #fff;
   border: 1px solid #000;

   position: absolute;    

   transition: .5s;    
  }
 .black {
   width: 100%;
   height: 100%;
   background: #000;
   border: 1px solid #000;
  }
}

.u-on-top {
  z-index: 1;
}
.u-at-bottom {
  z-index: -1;
}

// javascript
var btn = document.querySelector(".button");
var btnState = false;

btn.addEventListener("click", () => {
  var btnw = btn.querySelector(".white");
  if (!btnState) {
    btnw.style.transform = "scale(0)";
    btnState = true;
  } else {
    btnw.style.transform = "scale(1)";
    btnState = false;
  }
})