m0_73327575 2025-02-14 14:46 采纳率: 25%
浏览 7

平滑,过渡,折叠,动画

要实现的具体效果是第一张图片有两个盒子,上面都有一个按钮,点击其中一个按钮,出现的第一个动画是第一张图片的两个盒子都占满全屏,第二个画面,我点击的那个按钮对应的盒子会占满全屏,然后沿着这个盒子平滑过渡出两个盒子,还带有一种折叠的效果,可以再给我提供一个更完善的代码吗

img


img

  • 写回答

7条回答 默认 最新

  • 阿里嘎多学长 2025-02-14 14:46
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你想要实现一个平滑过渡的动画效果,点击按钮后,两个盒子会占满全屏,然后沿着点击的盒子平滑过渡。可以使用 CSS3 的 transition 和 animation 属性来实现。

    首先,需要给盒子添加类名,例如 .box,然后在 CSS 中定义 transition 和 animation 属性:

    .box {
      transition: all 0.5s ease-in-out;
      animation: slideIn 0.5s forwards;
    }
    
    .box.active {
      animation: slideOut 0.5s forwards;
    }
    
    @keyframes slideIn {
      from {
        transform: translateX(-100%);
      }
      to {
        transform: translateX(0);
      }
    }
    
    @keyframes slideOut {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(100%);
      }
    }
    

    然后,在 HTML 中添加按钮和盒子:

    <div class="box">
      <button>按钮 1</button>
      <div class="inner">内容 1</div>
    </div>
    <div class="box">
      <button>按钮 2</button>
      <div class="inner">内容 2</div>
    </div>
    

    最后,在 JavaScript 中添加点击事件,切换盒子的类名:

    const boxes = document.querySelectorAll('.box');
    
    boxes.forEach((box) => {
      box.addEventListener('click', () => {
        box.classList.toggle('active');
      });
    });
    

    这样,当你点击按钮时,盒子会占满全屏,然后沿着点击的盒子平滑过渡。

    代码示例

    你可以查看以下代码示例:

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>平滑过渡动画</title>
      <style>
        .box {
          transition: all 0.5s ease-in-out;
          animation: slideIn 0.5s forwards;
          width: 50%;
          height: 100vh;
          background-color: #f0f0f0;
          position: relative;
        }
        .box.active {
          animation: slideOut 0.5s forwards;
        }
        @keyframes slideIn {
          from {
            transform: translateX(-100%);
          }
          to {
            transform: translateX(0);
          }
        }
        @keyframes slideOut {
          from {
            transform: translateX(0);
          }
          to {
            transform: translateX(100%);
          }
        }
      </style>
    </head>
    <body>
      <div class="box">
        <button>按钮 1</button>
        <div class="inner">内容 1</div>
      </div>
      <div class="box">
        <button>按钮 2</button>
        <div class="inner">内容 2</div>
      </div>
      <script>
        const boxes = document.querySelectorAll('.box');
    
        boxes.forEach((box) => {
          box.addEventListener('click', () => {
            box.classList.toggle('active');
          });
        });
      </script>
    </body>
    </html>
    

    这个示例代码展示了如何使用 CSS3 的 transition 和 animation 属性来实现平滑过渡动画效果。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月14日