使用 javascript实现一个蒙版渐入渐出的效果,为什么改变display没用动画的效果,直接就弹出来了?

请问如何改才能实现蒙版的逐渐显示?

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <title>Title</title>
  <style>
    .mask {
      position: fixed;
      bottom: 0;
      left: 0;
      background: rgba(0, 0, 0, .7);
      height: 80%;
      width: 100%;
      -webkit-transition: -webkit-transform .8s;
      transition: -webkit-transform .8s;
      transition: transform .8s;
      transition: transform .8s,-webkit-transform .8s;
      display: none;
    }
  </style>
</head>
<body>

  <div>
    <div id="t1">
      321
    </div>
    <div class="mask">
      123
    </div>
  </div>

<script>
  document.getElementById('t1').onclick = function () {
    document.getElementsByClassName('mask')[0].style.display = 'block'
  }
</script>

</body>
</html>
阅读 2.3k
2 个回答
  1. display:blockdisplay:none 之间根本没有过渡态,自然就不可能有过渡动画,显/隐切换的过渡动画通常是通过改变 opacity 值来实现的,因为 opacity:0opacity:1之间可以有过渡态。
  2. transition 属性的第一个值与需要过渡的属性相匹配,比如 transform 对应 transform 的变化,opacity 对应 opacity 的变化,如果懒得写具体的属性,可以用 all 代替。
新手上路,请多包涵
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"
    />
    <title>Title</title>
    <style>
      .mask {
        opacity: 0;
        position: fixed;
        bottom: 0;
        left: 0;
        background: rgba(0, 0, 0, 0.7);
        height: 80%;
        width: 100%;
      }

      .gradient {
        opacity: 1;
        transition: 2s;
      }
    </style>
  </head>
  <body>
    <div>
      <div id="t1">321</div>
      <div id="mask1" class="mask">123</div>
    </div>

    <script>
      document.getElementById("t1").onclick = function () {
        document.getElementById("mask1").className = "mask gradient";
      };
    </script>
  </body>
</html>

参考上面答者给出的方案,lz看是否能满足效果

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