2021-06-26 使用animation动画与CSS3d变形属性设置一个万花筒相册

实现效果

若干张图片组成旋转的万花筒,鼠标移入可暂停旋转

思路

1.对每一张图片设置css的变形:旋转属性,使其形成一个闭合图形(闭合几何体)
2.设置动画,令图片的父盒子即闭合图形开始旋转

代码
html:
<!--设置图片的div属性-->
<div class="box">
    <div style="transform: rotateY(0deg) translateZ(275px);"><img src="1.jpg"></div>
    <div style="transform: rotateY(40deg) translateZ(275px);"><img src="2.jpg"></div>
    <div style="transform: rotateY(80deg) translateZ(275px);"><img src="3.jpg"></div>
    <div style="transform: rotateY(120deg) translateZ(275px);"><img src="4.jpg"></div>
    <div style="transform: rotateY(160deg) translateZ(275px);"><img src="5.jpg"></div>
    <div style="transform: rotateY(200deg) translateZ(275px);"><img src="6.jpg"></div>
    <div style="transform: rotateY(240deg) translateZ(275px);"><img src="7.jpg"></div>
    <div style="transform: rotateY(280deg) translateZ(275px);"><img src="8.jpg"></div>
    <div style="transform: rotateY(320deg) translateZ(275px);"><img src="9.jpg"></div>
</div>
css:
* {padding: 0;margin: 0;}
img {width: 200px;height: 300px;}
body {background-color: #333333;}
/* 设置动画效果 */
@-webkit-keyframes fn {
    /* 开始时的角度 */
    0% {transform: rotateX(-15deg) rotateY(0deg);}
    /* 结束时的角度 */
    100% {transform: rotateX(-15deg) rotateY(360deg);}
}
/* 设置box的属性,动画效果定义等 */
.box {
    width: 200px;
    height: 300px;
    position: relative;
    margin: auto;
    margin-top: 150px;
    transform-style: preserve-3d;
    transform: rotateX(-10deg);
    /* 动画名称为fn,动画时间为10s */
    animation: fn 10s;
    /* 动画效果无限循环 */
    animation-iteration-count: infinite;
    /* 线性动画 */
    animation-timing-function: linear;
    /* 相对布局 */
    position: relative;
}
/* 鼠标移动到图片,停止旋转 */
.box:hover { animation-play-state: paused;}
/* 设置图片div的属性 */
.box div {width: 200px;height: 300px;position: absolute;left: 0;top: 0;}
效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值