动画两个项目彼此远离,直到碰到容器轮廓

Posted

技术标签:

【中文标题】动画两个项目彼此远离,直到碰到容器轮廓【英文标题】:Animate two items moving away from each other until hitting container outline 【发布时间】:2022-01-12 22:27:24 【问题描述】:

对于介绍性动画,我想根据外部容器宽度对两个元素进行动画处理,以使其具有响应性。绝对定位对我不起作用,因为最初这两个项目必须相互接触或它们之间具有恒定的固定距离。

这是动画的表示:

body 
background: #707070;
  text-align: center;


.content 
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid #f7f7f7;


.animated .content 
  justify-content: space-between;
<section class="intro">
  <h2>1. before animation</h2>
  <div class="content">
    <svg  >
      <rect   fill="blue" />
    </svg>

    <svg  >
      <rect   fill="green" />
    </svg>
 </div>
</section>

<section class="intro animated">
    <h2>2. after animation</h2>
    <div class="content">
      <svg  >
        <rect   fill="blue" />
      </svg>

      <svg  >
        <rect   fill="green" />
      </svg>
   </div>
</section>

<section class="intro animated">
    <h2>3. custom container size</h2>
  <div class="content" style="width: 80%;">
    <svg  >
      <rect   fill="blue" />
    </svg>

    <svg  >
      <rect   fill="green" />
    </svg>
 </div>
</section>

【问题讨论】:

"我想..."[填空] 此处不在主题with no effort from you to solve this. - 这不是本网站的目的。我们很乐意回答有关您编写的代码的编程/调试问题。试一试,返回一些不起作用的代码,我们会为您提供帮助。 这份关于requestanAimationFrame 的文档以及其中的示例会让您大开眼界。 @RandyCasburn 感谢您的建设性批评,但我在社区中的努力是毋庸置疑的。我在这里有一个逻辑问题,我的时间有限。不乏编码技能,因此提出一个无效的解决方案是没有意义的。但是你已经帮助了我,因为你的评论给了我一个想法。我只是使用条件为元素设置动画,直到其外部容器的左偏移量达到 0,而右元素的右偏移量。谢谢:) 很公平 - 我不是在质疑你的“在社区中的努力” - 我是在询问你的调试细节 - 下次我会尽量说得更清楚。很高兴你在路上。祝你好运,玩得开心! 【参考方案1】:

我刚刚在 SVG 中间添加了一个 div,当您单击 Container 时,我将向容器添加动画类。在 CSS 中,我会将 dummy flex 更改为 auto

document.getElementById("container").addEventListener("click", function() 
  this.classList.add('animated');
);
body 
  background: #707070;
  text-align: center;


.content 
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid #f7f7f7;


.content.animated .dummy 
  flex: auto;


.dummy 
  flex: 0;
  transition: flex 1s;
<section class="intro">
  <h2>Click on container</h2>
  <div id="container" class="content">
    <svg  >
      <rect   fill="blue" />
    </svg>

    <div class="dummy"></div>

    <svg  >
      <rect   fill="green" />
    </svg>
  </div>
</section>

</section>

【讨论】:

感谢您,这是我一直在寻找的智能解决方案!我的方法有点复杂:)

以上是关于动画两个项目彼此远离,直到碰到容器轮廓的主要内容,如果未能解决你的问题,请参考以下文章

使用jQuery动画远离光标时,停止“:悬停”元素保持其状态?

关键帧动画问题

Egret 项目文件夹配置和基本容器动画

仅css:将两个项目彼此相邻放置并同时做两个!仅在必要时包装

在给定距离处查找彼此远离的表格中的坐标

通过地理标记在两个用户之间建立位置关联?