我可以在单个图像或元素上使用translate3D(css)或其他CSS动画创建蝴蝶动画效果吗?

本·霍尔尼斯

我有一张蝴蝶的照片,像这样

蝴蝶

我正在尝试找出是否可以通过3D CSS变换/翻译或动画使它的翅膀打开和关闭的方式,但不必将图像分成多个部分(它可以是一个div,尽管有帮助)。

陪同Afif

是的,将背景应用于两个元素,每个元素仅显示一半,然后只需在Y轴上旋转两个元素即可。

.box {
  width:300px;
  margin:20px;
  display:flex;
  perspective:500px;
}
.box::before,
.box::after{
  content:"";
  padding-top:56%; /* ratio based on your image */
  flex:1; /* half the main element size */
  background-image:url(https://i.imgur.com/DgMoHC5.jpg);
  background-size:200% 100%; /* twice bigger than the pseudo element to get half the image*/
  animation:left 1s linear infinite alternate;  
  transform-origin:right;
}
.box::after {
  background-position:right; /* get the right part of the image */
  animation-name:right;
  transform-origin:left;
}

@keyframes left{
  to {transform:rotateY(60deg)}
}
@keyframes right{
  to {transform:rotateY(-60deg)}
}
<div class="box"></div>

带有一些翻译的更逼真的动画:

.box {
  width: 300px;
  margin: 20px;
  display: flex;
  perspective: 500px;
}

.box::before,
.box::after {
  content: "";
  padding-top: 56%;
  flex: 1;
  background-image: url(https://i.imgur.com/DgMoHC5.jpg);
  background-size: 200% 100%;
  animation: left 0.5s linear infinite alternate;
  transform-origin: right;
}

.box::after {
  background-position: right;
  animation-name: right;
  transform-origin: left;
}

@keyframes left {
  from {
    transform: translateZ(80px) rotateY(-30deg)
  }
  to {
    transform:translateZ(0px) rotateY(50deg) 
  }
}

@keyframes right {
  from { 
    transform: translateZ(80px) rotateY(30deg)
  }
  to {
    transform:translateZ(0px) rotateY(-50deg) 
  }
}
<div class="box"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们是否可以使用UIButton停止或移除焦点上的动画效果并赋予其他边框效果tvOS

用jQuery动画Translate3D

如何使用CSS单个元素创建镜像图像效果

css,translate()与translate3d()支持

在图像元素上组合CSS动画

我可以使用CSS过渡为绝对定位的元素设置动画吗?

我可以使用JS等待多个CSS动画吗?

如何对 CSS3 硬件加速 translate3d 进行基准测试,我应该将其应用于 body 元素吗?

显示:没有停止初始translate3d动画

CSS3计算动画延迟以创建滑动效果

使用关键帧悬停在其他元素上时,使SVG元素具有动画效果

使用css3动画更改背景图像时为什么会有褪色效果?

我可以在 Vue.js 中使用 CSS 函数绑定内联样式吗?Vue.js 假设 translate3d() 是一个 JavaScript 函数并说它没有定义

带有JQuery的CSS3动画触发器单击其他元素

CSS3为幻灯片/隐藏导航设置动画以影响其他元素

CSS按钮上的“单击”动画效果

CSS动画-膨胀效果

动画效果css

CSS3超链接使用jQuery动画悬停效果

CSS3动画波效果

CSS3动画摆效果

为什么我在图像上的CSS动画不起作用?

使用CSS动画来增强div的效果

Chrome CSS错误:旋转元素内的“ translate3d”不服从“溢出:隐藏”

使用 CSS 动画元素的大小

使用CSS打开和关闭动画-动画效果更好

CSS动画无法正常使用Safari中的图像元素

我可以使用CSS为div的innerHTML设置动画吗?

是否可以使用CSS在DOM元素上设置SVG背景动画?