css中opacity对transform:translateZ的影响

由于一直在使用框架和ui,基础的东西都忘记
了所以最近复习了一下基础的东西,但是发现了一个非常奇怪的bug


在最近做的一个小demo中发现了一个问题图片描述

图中#square添加了一个opacity,只要他小于1就会出现如图的问题
.top的transform:translateZ 失效;


而如果我将#square的opacity属性设置为1或注释掉则没有问题
图片描述


完整代码如下

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Page Title</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- <link rel="stylesheet" href="./test.css"> -->
  <!-- <script src="./test.js"></script> -->
  <style>
    #box{
  width: 100vw;
  height: 100vh;
  perspective: 1000px;
}
*{
  padding: 0;
  margin: 0;
} 
#square{
  margin: 0 auto;
  height: 20vw;
  width: 20vw;
  background: pink;
  position: relative;
  top:50%;
  transform: translateY(-50%)  rotateX(-15deg) rotateY(80deg);
  opacity: 0.3;
  -webkit-transform-style:preserve-3d;
  transform-style: preserve-3d ;

}
#square div{
  width: 100%;
  height: 100%;
  position: absolute;



}

.top{
  background: #616161;
  /* opacity: 0.3; */
  transform:translateZ(-125px);

}
  </style>
</head>
<body>
  <div id="box">
    <div id="square">
      <div class="top">top</div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </div>
</body>
</html>
阅读 3.3k
1 个回答
✓ 已被采纳新手上路,请多包涵

opacity会让transform:translateZ()失效

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题