CSS 动画从左到右看起来越来越近和越来越远,模拟转盘盘上玻璃正面的运动
P粉208469050
P粉208469050 2023-09-04 21:59:55
[CSS3讨论组]
<p>我正在尝试创建一个 CSS 动画,该动画从左向右水平移动,同时看起来越来越近和越来越远,模拟从前面看转盘盘上的玻璃的运动。</p> <p>我已经接近了,但它看起来仍然不正确,目前看起来它沿着菱形而不是圆形移动。</p> <p>这是我尝试过的..</p> <p> <pre class="brush:css;toolbar:false;">.roll { display: block; width: 100px; height: 100px; background: red; margin: 10px auto 10px auto; animation: roll 2s cubic-bezier(0.42, 0, 0.58, 1) infinite; } @keyframes roll { 0%, 100% { transform: translateX(0%) scale(1); } 20% { transform: translateX(50%) scale(0.8); } 50% { transform: translateX(0%) scale(0.6); } 80% { transform: translateX(-50%) scale(0.8); } }</pre> <pre class="brush:html;toolbar:false;">&lt;div class="roll"&gt;&lt;/div&gt;</pre> </p>
P粉208469050
P粉208469050

全部回复(1)
P粉226413256

如果您想要在水平面圆上对正方形进行动画处理并使其面向观看者,您可以在包装元素上使用 3D 变换,并在正方形上反转它,使其保持面向观看者.

重点是像“现实生活中”一样在 Y 轴上旋转元素。
这是一个例子:

.wrap {
  width: 100px;
  height: 100px;  
  margin: 50px auto 50px auto;
  animation: roll 2s linear infinite;
  transform-origin: 50% 50% -250px;
  transform-style: preserve-3d;
}
.roll {
  width: inherit;
  height: inherit;
  background: red;
  animation: roll 2s linear infinite reverse;
  transform-origin: 50% 50% 0;
}

@keyframes roll {
  from { transform:  perspective(1200px) rotateY(0deg);}
  to { transform:  perspective(1200px) rotateY(-360deg);}
}
<div class="wrap">
  <div class="roll"></div>
</div>

请注意,您需要使用 transform-style:preserve-3d; (有关 MDN 的更多信息)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号