当前位置: 首页 > ai >正文

【Vue】CSS3实现关键帧动画

关键帧动画

    • 两个重点
      • @keyframes
      • animation
        • 子属性
    • 实现案例
      • 效果展示:

两个重点

@keyframesanimation
作用:通过定义关键帧(@keyframes)和动画(animation)规则,实现复杂的关键帧动画。

@keyframes

定义动画的关键帧序列,指定动画在不同时间点的样式状态。

@keyframe 动画名{0%{/*关键帧起始状态*/}50%{/*中间状态*/}100%{/*结束状态*/}
}

或者用from{}代替0%{},to{}代替100%{}

animation

用于将 @keyframes 动画应用到元素,并控制动画的播放行为。

子属性
属性作用示例值
animation-name指定 @keyframes 名称fadeIn
animation-duration动画持续时间2s
animation-timing-function速度曲线ease, linear, cubic-bezier()
animation-delay延迟开始时间1s
animation-iteration-count播放次数3, infinite
animation-direction播放方向normal, reverse, alternate
animation-fill-mode动画结束后的样式forwards, backwards
animation-play-state暂停/播放paused, running

速度曲线

  • ease(默认值):动画以慢速开始,然后加速,最后再减速。
  • linear:线性匀速播放动画
  • cubic-bezier(n,n,n,n):自定义贝塞尔曲线,允许更精确地控制动画速度。

播放次数

  • n:数值(默认是1)
  • infinite:无限循环播放

动画结束后的样式

  • none: 默认值,元素保持原始状态
  • forwards:元素保留动画最后一帧的样式
  • backwards:元素将应用动画第一帧样式

简写:animation: name duration timing-function delay iteration-count direction fill-mode;

实现案例

结构:

<template><div class="card-container"><div class="card"><div class="front"><img src="../assets/Karry.gif" width="300px" /></div><div class="back"><p>点赞</p><p>关注</p><p>评论</p><p>收藏</p></div></div></div>
</template>

样式:

<style lang="less">
.card-container {/*将最外层父盒子设为弹性布局,元素居中*/display: flex;justify-content: center;align-content: center;/*高度为视口大小的100%*/height: 100vh;/*背景渐变色*/background-image: linear-gradient(200deg, #5ee7df, #b490ca);/*该属性可让动画立体感,可以调值看看效果对比*/perspective: 1000px;.card {/*相对定位*/position: relative;width: 300px;height: 450px;margin-top: 60px;border-radius: 30px;/*鼠标停留在上面变为小手*/cursor: pointer;background-color: #fff;box-shadow: 1px 1px 20px rgb(0, 0, 0, 0.1);/*给父元素添加一个3D盒子属性,那么子元素就到背面了,这个属性是加到父元素上的,但是影响的是子元素*/transform-style: preserve-3d;/* 给卡片添加默认动画 */animation: rotate-reverse 1.2s cubic-bezier(0.66, -0.47, 0.33, 1.5) forwards;.front,.back {position: absolute;top: 0;left: 0;width: 100%;height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;font-size: 20px;background-color: #fff;border-radius: 30px;/*控制元素背面在旋转后是否可见*/backface-visibility: hidden;}.back {transform: rotateY(180deg);/* 添加字体颜色过渡动画 */transition: color 0.3s;p:hover {color: #1890ff;/* 悬停时颜色(蓝色) */cursor: pointer;/* 鼠标指针变为手型 */}}}.card:hover {animation: rotate 1.2s cubic-bezier(0.66, -0.47, 0.33, 1.5) forwards;}
}@keyframes rotate {0% {transform: rotateY(0deg);}100% {transform: rotateY(180deg);}
}@keyframes rotate-reverse {0% {transform: rotateY(180deg);}100% {transform: rotateY(0deg);}
}
</style>

效果展示:

初次会旋转一次,当鼠标悬停在卡片上,就会旋转到背面,鼠标移除则旋转回来。
在这里插入图片描述

关键帧动画效果

http://www.xdnf.cn/news/6265.html

相关文章:

  • 快速通关单链表秘籍
  • GPU与NPU异构计算任务划分算法研究:基于强化学习的Transformer负载均衡实践
  • Java实现MinIO上传PDF文件并配置浏览器在线打开及vue2上传页面
  • PCIe数据采集系统
  • 解决:npm install报错,reason: certificate has expired
  • 【python实用小脚本-63】每天花费2小时修复黑白照片,Python一键转换,节省90%时间(建议收藏)
  • 【hadoop】Flume的相关介绍
  • Trae - 国人Cursor的免费平替产品
  • idea经常卡顿解决办法
  • ctfshow权限维持
  • 城市扫街人文街头纪实胶片电影感Lr调色预设,DNG/手机适配滤镜!
  • 2025 Java 微信小程序根据code获取openid,二次code获取手机号【工具类】拿来就用
  • 力扣-46.全排列
  • 嵌入式培训之数据结构学习(三)gdb调试、单向链表练习、顺序表与链表对比
  • RPC协议及库介绍
  • 中国近代史1
  • promise的说明
  • STM32入门笔记(05):内部高速8Mhz时钟最大时钟可以设置 64 Mhz?如何修改system_stm32f10x.c里面的代码?
  • STM32F103_LL库+寄存器学习笔记23 - PWM波形输出及软件方式调整周期与占空比
  • PyQt5教程:QComboBox下拉列表框的全面解析与实战应用
  • 保持视频二维码不变,更新视频的内容
  • 300. 最长递增子序列
  • PPO算法:一种先进的强化学习策略
  • 深度剖析LLM的“大脑”:单层Transformer的思考模式探索
  • NetSuite CSV导入更新Item Fulfillment相关信息
  • 小白学习java第18天(上):spring
  • 牛客——签到题
  • MODBUS与PROFIBUS-DP通讯的螺杆空压机控制系统设计与监控实况
  • 宝塔基于亚马逊云服务器安装mysql5.7失败问题记录
  • redis 命令大全整理