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

发布于 2022-09-13 00:47:36 字数 1039 浏览 21 评论 0

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

<!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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑕疵 2022-09-20 00:47:36
  1. display:blockdisplay:none 之间根本没有过渡态,自然就不可能有过渡动画,显/隐切换的过渡动画通常是通过改变 opacity 值来实现的,因为 opacity:0opacity:1之间可以有过渡态。
  2. transition 属性的第一个值与需要过渡的属性相匹配,比如 transform 对应 transform 的变化,opacity 对应 opacity 的变化,如果懒得写具体的属性,可以用 all 代替。
∝单色的世界 2022-09-20 00:47:36
<!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看是否能满足效果

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文