- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当第一个元素悬停时,其他元素也会激活。但是当第二个元素悬停时,其他元素将不起作用。如何让每一个item的动画都一个一个的触发?
body {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
height: 100vh;
}
.bubble-wrap {
width: 400px
}
<div class="bubble-wrap">
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg" style="position: relative;" id="clip_svg_wrap">
<clipPath id="clipPath1" transform="translate(100 100) scale(0.8)">
<path d="M44.7,-77.9C57.7,-70,67.8,-57.5,76.2,-43.7C84.6,-30,91.4,-15,92.7,0.8C94.1,16.5,89.9,33,81.3,46.4C72.7,59.8,59.6,70.2,45.3,77.5C31,84.8,15.5,89.2,-0.1,89.4C-15.7,89.5,-31.4,85.6,-44.7,77.7C-57.9,69.7,-68.8,57.8,-75.6,44.2C-82.4,30.6,-85.3,15.3,-84.7,0.3C-84.1,-14.7,-80.2,-29.3,-72.9,-42.1C-65.6,-55,-55,-65.9,-42.3,-74C-29.6,-82,-14.8,-87.1,0.5,-88.1C15.9,-89,31.8,-85.8,44.7,-77.9Z" transform="scale(2)">
<animateTransform attributeName="transform" attributeType="XML" type="scale" from="3 3" to="1 1" begin="clip_svg_wrap.mouseenter" dur="1s" repeatCount="1" fill="freeze"/>
<animateTransform attributeName="transform" attributeType="XML" type="scale" from="1 1" to="3 3" begin="clip_svg_wrap.mouseleave" dur="1.5s" repeatCount="1" fill="freeze"/>
</path>
</clipPath>
<image href="https://images.unsplash.com/photo-1639569266292-0c11a1dcb91c?crop=entropy&cs=srgb&fm=jpg&ixid=MnwxNDU4OXwwfDF8cmFuZG9tfHx8fHx8fHx8MTY0MTgwMTgzMA&ixlib=rb-1.2.1&q=85" clip-path="url(#clipPath1)" width='100%' height='100%' style="position: relative;"></image>
</svg>
</div>
<div class="bubble-wrap">
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg" style="position: relative;" id="clip_svg_wrap">
<clipPath id="clipPath1" transform="translate(100 100) scale(0.8)">
<path d="M44.7,-77.9C57.7,-70,67.8,-57.5,76.2,-43.7C84.6,-30,91.4,-15,92.7,0.8C94.1,16.5,89.9,33,81.3,46.4C72.7,59.8,59.6,70.2,45.3,77.5C31,84.8,15.5,89.2,-0.1,89.4C-15.7,89.5,-31.4,85.6,-44.7,77.7C-57.9,69.7,-68.8,57.8,-75.6,44.2C-82.4,30.6,-85.3,15.3,-84.7,0.3C-84.1,-14.7,-80.2,-29.3,-72.9,-42.1C-65.6,-55,-55,-65.9,-42.3,-74C-29.6,-82,-14.8,-87.1,0.5,-88.1C15.9,-89,31.8,-85.8,44.7,-77.9Z" transform="scale(2)">
<animateTransform attributeName="transform" attributeType="XML" type="scale" from="3 3" to="1 1" begin="clip_svg_wrap.mouseenter" dur="1s" repeatCount="1" fill="freeze"/>
<animateTransform attributeName="transform" attributeType="XML" type="scale" from="1 1" to="3 3" begin="clip_svg_wrap.mouseleave" dur="1.5s" repeatCount="1" fill="freeze"/>
</path>
</clipPath>
<image href="https://images.unsplash.com/photo-1639972585193-e360d1bd1dd2?crop=entropy&cs=srgb&fm=jpg&ixid=MnwxNDU4OXwwfDF8cmFuZG9tfHx8fHx8fHx8MTY0MTgwMTgzMA&ixlib=rb-1.2.1&q=85" clip-path="url(#clipPath1)" width='100%' height='100%' style="position: relative;"></image>
</svg>
</div>
最佳答案
在此示例中,每个图像都有一个 SVG 元素。这包括 <image>
具有唯一 ID 和 <defs>
定义剪辑路径的位置。 <clipPath>
也有一个唯一的ID。结果是一个独特的图像使用了一个独特的剪辑路径,动画开始和结束时引用了该特定图像。
如果有很多图像需要这个剪辑路径,我们可以同意这不是最佳解决方案。重复使用已经定义的剪辑路径会更好,但是当您发现所有图像的“通用”剪辑路径将同时在所有图像上设置动画剪辑路径时。我对此进行了研究,还尝试了一些 JavaScript 并阅读了 begin-value 的规范,但没有解决此问题的任何线索。
寻求基于 CSS 的动画可能是一种解决方案,但同时它也限制了您在这样的设置中可以做的事情。
body {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
height: 100vh;
}
.bubble-wrap {
width: 400px
}
<div class="bubble-wrap">
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg" style="position: relative;">
<defs>
<clipPath id="clipPath1" transform="translate(100 100)">
<path d="M44.7,-77.9C57.7,-70,67.8,-57.5,76.2,-43.7C84.6,-30,91.4,-15,92.7,0.8C94.1,16.5,89.9,33,81.3,46.4C72.7,59.8,59.6,70.2,45.3,77.5C31,84.8,15.5,89.2,-0.1,89.4C-15.7,89.5,-31.4,85.6,-44.7,77.7C-57.9,69.7,-68.8,57.8,-75.6,44.2C-82.4,30.6,-85.3,15.3,-84.7,0.3C-84.1,-14.7,-80.2,-29.3,-72.9,-42.1C-65.6,-55,-55,-65.9,-42.3,-74C-29.6,-82,-14.8,-87.1,0.5,-88.1C15.9,-89,31.8,-85.8,44.7,-77.9Z" transform="scale(2)">
<animateTransform attributeName="transform" attributeType="XML" type="scale" from="2" to=".5" begin="img1.mouseenter" dur="1s" repeatCount="1" fill="freeze"/>
<animateTransform attributeName="transform" attributeType="XML" type="scale" from=".5" to="2" begin="img1.mouseleave" dur="1.5s" repeatCount="1" fill="freeze"/>
</path>
</clipPath>
</defs>
<image id="img1" href="https://images.unsplash.com/photo-1639569266292-0c11a1dcb91c?crop=entropy&cs=srgb&fm=jpg&ixid=MnwxNDU4OXwwfDF8cmFuZG9tfHx8fHx8fHx8MTY0MTgwMTgzMA&ixlib=rb-1.2.1&q=85" clip-path="url(#clipPath1)" width='100%' height='100%' style="position: relative;"/>
</svg>
</div>
<div class="bubble-wrap">
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg" style="position: relative;">
<defs>
<clipPath id="clipPath2" transform="translate(100 100)">
<path d="M44.7,-77.9C57.7,-70,67.8,-57.5,76.2,-43.7C84.6,-30,91.4,-15,92.7,0.8C94.1,16.5,89.9,33,81.3,46.4C72.7,59.8,59.6,70.2,45.3,77.5C31,84.8,15.5,89.2,-0.1,89.4C-15.7,89.5,-31.4,85.6,-44.7,77.7C-57.9,69.7,-68.8,57.8,-75.6,44.2C-82.4,30.6,-85.3,15.3,-84.7,0.3C-84.1,-14.7,-80.2,-29.3,-72.9,-42.1C-65.6,-55,-55,-65.9,-42.3,-74C-29.6,-82,-14.8,-87.1,0.5,-88.1C15.9,-89,31.8,-85.8,44.7,-77.9Z" transform="scale(2)">
<animateTransform attributeName="transform" attributeType="XML" type="scale" from="2" to=".5" begin="img2.mouseenter" dur="1s" repeatCount="1" fill="freeze"/>
<animateTransform attributeName="transform" attributeType="XML" type="scale" from=".5" to="2" begin="img2.mouseleave" dur="1.5s" repeatCount="1" fill="freeze"/>
</path>
</clipPath>
</defs>
<image id="img2" href="https://images.unsplash.com/photo-1639972585193-e360d1bd1dd2?crop=entropy&cs=srgb&fm=jpg&ixid=MnwxNDU4OXwwfDF8cmFuZG9tfHx8fHx8fHx8MTY0MTgwMTgzMA&ixlib=rb-1.2.1&q=85" clip-path="url(#clipPath2)" width='100%' height='100%' style="position: relative;"/>
</svg>
</div>
关于javascript - 为什么 svg animateTransform 只在第一项上激活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70649485/
有什么办法可以制作 animateTransform 的变换 值(value)转化为相对值(value)?像 20%,30% 以外的 px 值。 例如, 在这段代码中,有没有办法定义来自 和 至 相
我想同时对缩放和旋转对象进行动画处理。到目前为止,我的尝试失败了。我只能链接动画(旋转,然后缩放)但不能一起旋转和缩放。 我错过了什么? 我试图删除“additive =“sum”,但这只是覆盖并忽略
我有一条路径要使用 animateTransform 设置动画.我想同时翻译和缩放路径。它不起作用。显然只有第二个动画在工作:在这种情况下 scale .我究竟做错了什么? svg{ width:30
在以下示例中,我需要同时执行所有动画。但只适用于最后一个。 getValue('project_icon'); ?>" /> Action 已被js触发: v
我正在尝试让#moon svg 组遵循一条路径并应用定时转换。在这种情况下,我似乎无法让 animateTransform 工作。 当我设置 animateMotion 时,它会导致 移出框架。我用属
我正在尝试向简单的 SVG SMIL 动画添加计时功能。显然可以使用 keySplines 设置时间/缓动属性,但是在我的示例中它不起作用:
当第一个元素悬停时,其他元素也会激活。但是当第二个元素悬停时,其他元素将不起作用。如何让每一个item的动画都一个一个的触发? body { display: flex; justify-co
在来自 https://upload.wikimedia.org/wikipedia/commons/9/97/Moire_Lines.svg 的文件中 动画在 Chrome、Iron、Opera、V
我试图在我的 SVG 中让两个动画相继运行。 这就是它们的写入方式。它们被写入一个组,里面有一些原语。我正在尝试让整个组旋转然后平移。 但是当我运行这个时,变换似乎在第一个动画结束时重置
我一直在尝试通过 Javascript 将 SVG 动画元素附加到组中。 “animateTransform”似乎仅在我使用数值时才起作用;当我使用通过 getBBox 定义的变量时它不会播放(请参阅
我想让我的 svg 动画在单击 html 按钮时运行。我想我可以通过在 animateTransform 中设置 begin="click 来实现这一点,然后在 animateTransform (或
我正在尝试沿其轴旋转我的 SVG 图像,我可以使用以下代码成功地做到这一点: 我的问题是是否有一种方法可以将动画的重新启动处理为一两秒。将 repeatCount 设置为无限期,它会立即重新启动它。
我有一个 SVG 图形,我正在通过 animateTransform 制作动画。它动画化,然后停留在屏幕上,直到您单击它,然后它缩小到 0 并且无法恢复。我想要做的是在最后一个动画结束(缩放为 0)后
我有一个 svg 元素,我想缩放它并让它从下到上缩放。 这是一个代码笔示例:https://codepen.io/knightjdr/pen/QQeNOj 我使用 animateTransform 实
如果您查看此 SVG,我正在为 transform 属性设置动画,默认情况下它从左上角移动。如何将其更改为从中心设置动画? 我已经尝试过的: This answer说
尝试使用 JavaScript 移动 SVG 元素进行交互式游戏; 但是,动画结束后该
我想通过变换矩阵(即时决定)变换 SVG Canvas 上的元素。我可以使用 JQuery-SVG animate() 来完成,但结果一点也不流畅。所以我想使用原生的 SVG animateTrans
我正在尝试对 SVG 文件中的某些路径进行动画处理,但我似乎无法附加必要的 标记为这些路径的子路径。 这是我的代码: currentState.addEventListener("click", fu
SVG animateTransform 与 css3 转换不同。 svg.truck { overflow: visible; } .smoke{ transform-origin: 50%
我使用 animateTransform 创建了一个自定义 PreLoader 屏幕 和 keyframes 在我的 svg 图像上。 当我处理图像时,它们在所有浏览器上都运行良好。但是一旦我在我的
我是一名优秀的程序员,十分优秀!