位置: IT常识 - 正文

css的rotate3d实现炫酷的圆环转动动画(css设置3d)

编辑:rootadmin
css的rotate3d实现炫酷的圆环转动动画 1.实现效果

推荐整理分享css的rotate3d实现炫酷的圆环转动动画(css设置3d),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:css rotatey,css hue-rotate,css hue-rotate,css实现3d效果,css translate3d,css rotation,css rotatey,css rotatey,内容如对您有帮助,希望把文章链接给更多的朋友!

2.实现原理2.1 rotate3d

rotate3d:rotate3d() CSS 函数定义一个变换,它将元素围绕固定轴移动而不使其变形。运动量由指定的角度定义; 如果为正,运动将为顺时针,如果为负,则为逆时针。

语法:

rotate3d(x, y, z, a)

含义:

x 类型,可以是 0 到 1 之间的数值,表示旋转轴 X 坐标方向的矢量。

y 类型,可以是 0 到 1 之间的数值,表示旋转轴 Y 坐标方向的矢量。

z 类型,可以是 0 到 1 之间的数值,表示旋转轴 Z 坐标方向的矢量。

a 类型,表示旋转角度。正的角度值表示顺时针旋转,负值表示逆时针旋转。

2.2 rotateZ

rotateZ:函数定义了一个转换,它可以让一个元素围绕横 Z 轴旋转,而不会对其进行变形。旋转轴围绕原点旋转,而这个原点通过transform-origin 属性来定义(默认的转换原点是 center)。 rotateZ(a) 相当于 rotate(a) or rotate3d(0, 0, 1, a)。

语法

rotateZ(a)

含义:

rotateZ() 引起的旋转量由指定。如果为正,则顺时针方向移动;如果为负,则逆时针方向移动。 a 是一个‘angle ’,表示旋转的角度。正数角度表示顺时针旋转,负数则表示逆时针旋转。 1turn:一圈,即360deg。90deg = 0.25turn。

2.3 transform-origincss的rotate3d实现炫酷的圆环转动动画(css设置3d)

transform-origin:更改一个元素变形的原点,默认的转换原点是 center。 语法:

transform-origin: center;

含义:

transform-origin属性可以使用一个,两个或三个值来指定,其中每个值都表示一个偏移量。没有明确定义的偏移将重置为其对应的初始值。 如果定义了两个或更多值并且没有值的关键字,或者唯一使用的关键字是center,则第一个值表示水平偏移量,第二个值表示垂直偏移量。

关键字是方便的简写方法,等同于以下角度值:

keywordvalueleft0%center50%right100%top0%bottom100%2.4 CSS 滤镜 filter 的drop-shadow

drop-shadow:投影实际上是输入图像的 alpha 蒙版的一个模糊的、偏移的版本,用特定的颜色绘制并合成在图像下面。 函数接受shadow(在CSS3背景中定义)类型的值,除了"inset"关键字是不允许的。该函数与已有的box-shadow 属性很相似;不同之处在于,通过滤镜,一些浏览器为了更好的性能会提供硬件加速。

语法:

drop-shadow(offset-x offset-y blur-radius spread-radius color)

含义:

offset-x offset-y (必须): offset-x指定水平距离,其中负值将阴影放置到元素的左侧。offset-y指定垂直距离,其中负值将阴影置于元素之上。如果两个值都为 0,则阴影直接放置在元素后面。

blur-radius (可选) : 阴影的模糊半径,指定为 。值越大,阴影就越大,也越模糊。如果未指定,则默认为 0,从而产生清晰、不模糊的边缘。不允许有负值。

spread-radius (可选): 阴影的扩展半径,指定为 . 正的值会导致阴影扩大和变大,而负的值会导致阴影缩小。如果未指定,则默认为 0,阴影的大小将与输入图像相同。

color (可选): 阴影的颜色,指定为 color。如果未指定,则使用 color 属性的值。如果颜色值省略,WebKit中阴影是透明的。

注意:box-shadow 属性在元素的整个框后面创建一个矩形阴影,而 drop-shadow() 过滤器则是创建一个符合图像本身形状 (alpha 通道) 的阴影。

eg:

drop-shadow(16px 16px 10px black)2.5 css伪元素

CSS 伪元素用于设置元素指定部分的样式。 ::before 伪元素可用于在元素内容之前插入一些内容。 ::after 伪元素可用于在元素内容之后插入一些内容。 ::selection 伪元素匹配用户选择的元素部分。

所有 CSS 伪元素:

选择器例子含义::afterp::after在每个 p 元素之后插入内容::beforep::before在每个 p 元素之前插入内容::first-letterp:first-letter选择每个p 元素的首字母::first-linep::first-line选择每个 p 元素的首行::selectionp::selection选择用户选择的元素部分3.实现步骤3.1.实现外层三个转动的圆假设有一个div标签,设置为圆,border颜色进行区分。 .box { border: 2px solid var(--lineColor); border-left: 2px solid var(--color); border-right: 2px solid var(--color); border-radius: 50%; }利用伪元素,再实现两个大小不一的圆。 .box,.box::after,.box::before { border: 2px solid var(--lineColor); border-left: 2px solid var(--color); border-right: 2px solid var(--color); border-radius: 50%;}.box { width: 200px; height: 200px; position: relative; } .box::before { width: 180px; height: 180px; margin-top: -90px; margin-left: -90px; }.box::after { width: 160px; height: 160px; margin-top: -80px; margin-left: -80px;}为div添加rotateZ旋转动画,旋转1圈。

.box { animation: turn 1s linear infinite; transform-origin: 50% 50%;}@keyframes turn { 100% { transform: rotateZ(-1turn); }}重写before和after动画,使三个圆转动有一定层次感。 .box::before { animation: turn2 1.25s linear infinite;}.box::after { animation: turn 1.5s linear infinite;}@keyframes turn2 { 100% { transform: rotateZ(1turn); }}3.2 实现内层三个转动的圆三个div标签,设置为圆。.box-circle,.box-circle1,.box-circle2 { border: 2px solid var(--color); opacity: .9; border-radius: 50%; position: absolute; left: 50%; top: 50%; transform-origin: 50% 50%; transform: translate(-50%, -50%); width: 100px; height: 100px;}分别添加同一个rotate3d旋转动画,设置一定的动画延时。 .box-circle {animation-delay: 0.2s;}.box-circle1 { animation-delay: 1.2s;}.box-circle2 { animation-delay: 2.2s;}@keyframes rotate { 100% { border: none; border-top: 2px solid var(--color); border-bottom: 2px solid var(--color); transform: translate(-50%, -50%) rotate3d(.5, 0.5, 0.5, -720deg); }}3.3 实现中间转动的月牙一个伪元素,设置为圆,添加上边框 border-top,通过drop-shadow加强阴影效果。

section::before { content: ''; position: absolute; height: 10px; width: 10px; border-radius: 100%; border-top: 1px solid orange; top: 50%; left: 50%; margin-top: -5px; margin-left: -5px; filter: drop-shadow(0 0 2px var(--color)) drop-shadow(0 0 5px var(--color)) drop-shadow(0 0 10px var(--color)) drop-shadow(0 0 20px var(--color));}为其添加rotataZ旋转一圈的动画。 section::before {animation: turn 1s infinite linear;}4.完整代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>圆弧转动</title></head><link rel="stylesheet" href="../common.css"><style> :root { --color: orange; --lineColor: rgba(102, 163, 224, .2); } body { background: #222; overflow: hidden; } section { position: relative; width: 200px; height: 200px; } section::before { content: ''; position: absolute; height: 10px; width: 10px; border-radius: 100%; border-top: 1px solid orange; top: 50%; left: 50%; margin-top: -5px; margin-left: -5px; animation: turn 1s infinite linear; filter: drop-shadow(0 0 2px var(--color)) drop-shadow(0 0 5px var(--color)) drop-shadow(0 0 10px var(--color)) drop-shadow(0 0 20px var(--color)); } .box, .box::after, .box::before { border: 2px solid var(--lineColor); border-left: 2px solid var(--color); border-right: 2px solid var(--color); border-radius: 50%; } .box::after, .box::before { position: absolute; content: ''; left: 50%; top: 50%; } .box { width: 200px; height: 200px; position: relative; animation: turn 1s linear infinite; transform-origin: 50% 50%; } .box::before { width: 180px; height: 180px; margin-top: -90px; margin-left: -90px; animation: turn2 1.25s linear infinite; } .box::after { width: 160px; height: 160px; margin-top: -80px; margin-left: -80px; animation: turn 1.5s linear infinite; } .box-circle, .box-circle1, .box-circle2 { border: 2px solid var(--color); opacity: .9; border-radius: 50%; position: absolute; left: 50%; top: 50%; transform-origin: 50% 50%; transform: translate(-50%, -50%); width: 100px; height: 100px; animation: rotate 3s linear infinite; } .box-circle { animation-delay: 0.2s; } .box-circle1 { animation-delay: 1.2s; } .box-circle2 { animation-delay: 2.2s; } @keyframes turn { 100% { transform: rotateZ(-1turn); } } @keyframes turn2 { 100% { transform: rotateZ(1turn); } } @keyframes rotate { 100% { border: none; border-top: 2px solid var(--color); border-bottom: 2px solid var(--color); transform: translate(-50%, -50%) rotate3d(.5, 0.5, 0.5, -720deg); } }</style><body> <section> <div class="box"></div> <div class="box-circle"></div> <div class="box-circle1"></div> <div class="box-circle2"></div> </section></body></html>5.更多css相关,尽在苏苏的码云如果对你有帮助,欢迎你的star+订阅!
本文链接地址:https://www.jiuchutong.com/zhishi/299559.html 转载请保留说明!

上一篇:聊聊后端Web开发框架(Python)的简单使用(web后端开发是什么意思)

下一篇:图像边缘检测(图像边缘检测的基本原理)

  • SEO优化推广方法7条,你值得拥有(seo产品优化推广)

    SEO优化推广方法7条,你值得拥有(seo产品优化推广)

  • 抖音怎么改签名(抖音怎么改签名啊)

    抖音怎么改签名(抖音怎么改签名啊)

  • 小度如何连接wifi呢(小度如何连接wifi认证不了)

    小度如何连接wifi呢(小度如何连接wifi认证不了)

  • 荣耀30pro的指纹灯可以关闭吗(荣耀30pro的指纹解锁一直亮的)

    荣耀30pro的指纹灯可以关闭吗(荣耀30pro的指纹解锁一直亮的)

  • 华为荣耀v20悬浮球有什么用(华为荣耀v20悬浮窗怎么开)

    华为荣耀v20悬浮球有什么用(华为荣耀v20悬浮窗怎么开)

  • 手机放口袋里总是自动触屏怎么办(手机放口袋里总是自动亮屏)

    手机放口袋里总是自动触屏怎么办(手机放口袋里总是自动亮屏)

  • 人计算与机器计算的差别是什么(人计算与机器计算有什么差)

    人计算与机器计算的差别是什么(人计算与机器计算有什么差)

  • vivo手机上面出现个HD(vivo手机上面出现长方形)

    vivo手机上面出现个HD(vivo手机上面出现长方形)

  • nova5pro有红外功能吗(华为nova5pro有红外)

    nova5pro有红外功能吗(华为nova5pro有红外)

  • 快手聊天记录怎么删除(快手聊天记录怎么看)

    快手聊天记录怎么删除(快手聊天记录怎么看)

  • 爱奇艺续费取消钱会退回吗(爱奇艺续费取消在哪里)

    爱奇艺续费取消钱会退回吗(爱奇艺续费取消在哪里)

  • 帮朋友微信解封对自己有什么影响(帮朋友微信解封步骤)

    帮朋友微信解封对自己有什么影响(帮朋友微信解封步骤)

  • 云硬盘是什么级存储(云硬盘价格)

    云硬盘是什么级存储(云硬盘价格)

  • 微星b450m迫击炮内存频率(微星b450m迫击炮支持pcie4.0吗)

    微星b450m迫击炮内存频率(微星b450m迫击炮支持pcie4.0吗)

  • 文件中转站空间不足(文件中转站空间不足删除对方能不能收到)

    文件中转站空间不足(文件中转站空间不足删除对方能不能收到)

  • pr关键帧有什么用(pr里关键帧的概念)

    pr关键帧有什么用(pr里关键帧的概念)

  • iphone 11 pro max有紫色吗(苹果11pro max怎么连接蓝牙)

    iphone 11 pro max有紫色吗(苹果11pro max怎么连接蓝牙)

  • 群主可以撤回超过两分钟的消息吗(群主可以撤回超过两分钟的视频吗)

    群主可以撤回超过两分钟的消息吗(群主可以撤回超过两分钟的视频吗)

  • 为什么手机声音开到最大也很小(为什么手机声音键失灵)

    为什么手机声音开到最大也很小(为什么手机声音键失灵)

  • 网关ip地址的作用是什么(ip地址,网关)

    网关ip地址的作用是什么(ip地址,网关)

  • 微信不能下载怎么回事(微信不能下载怎么回事儿)

    微信不能下载怎么回事(微信不能下载怎么回事儿)

  • 坚果pro3后置摄像头多少万像素(坚果pro3背面摄像头镜片碎了)

    坚果pro3后置摄像头多少万像素(坚果pro3背面摄像头镜片碎了)

  • 抖音青少年模式怎么解除(抖音青少年模式怎么强制解除)

    抖音青少年模式怎么解除(抖音青少年模式怎么强制解除)

  • 美图mp1602什么型号(美图mp1602参数)

    美图mp1602什么型号(美图mp1602参数)

  • 淘宝地址怎么改邮编(淘宝地址怎么改不了)

    淘宝地址怎么改邮编(淘宝地址怎么改不了)

  • 什么叫pd充电(pd充电有什么好处)

    什么叫pd充电(pd充电有什么好处)

  • 淘宝怎么关闭洋淘秀(怎样关闭洋淘)

    淘宝怎么关闭洋淘秀(怎样关闭洋淘)

  • 微信的文件怎么打印出来(微信的文件怎么发到钉钉上去)

    微信的文件怎么打印出来(微信的文件怎么发到钉钉上去)

  • spot怎么看好友位置

    spot怎么看好友位置

  • 迅雷如何解除安全模式(迅雷如何解除安装限制)

    迅雷如何解除安全模式(迅雷如何解除安装限制)

  • H5页面跳转小程序的三种方式(h5页面跳转小程序不显示按钮)

    H5页面跳转小程序的三种方式(h5页面跳转小程序不显示按钮)

  • 一次性购入固定资产投资收益
  • 物业公司代收电费怎么开票
  • 公司办资质的发票入什么科目
  • 印花税减免需要什么材料
  • 为什么要结转发出材料成本差异
  • 企业一般户怎么注销
  • 不能收回的应收票据
  • 应交税费应交印花税借方有余额
  • 利润表中的管理费用和研发费用怎么填
  • 小规模纳税人水电费税率
  • 劳务派遣公司税务
  • 购买办公用品账务处理
  • 企业分期付款购车分录怎么写
  • 企业拆迁补偿款要交税吗
  • 酒店住宿费一般多少钱一晚
  • 出口退税对企业利润的影响
  • 专用发票的有效期是几年
  • 其他应付款借方余额表示什么
  • 期初建账实验步骤
  • 小规模纳税人增值税申报表怎么填
  • 环境保护税的申报期限是如何规定的
  • 外派人员计算个人所得税可否有附加扣除
  • 补缴的附加税怎么入账
  • 销项税和进项税怎么区分
  • 管理员已阻止你运行此应用 win10
  • 利润总额和净利润的区别
  • 非贸付汇税金承担
  • 网站防止被刷票怎么解决
  • win11 桌面右键
  • php加号
  • 期间损益的科目
  • 枇杷叶的功效与作用及副作用
  • 结转损益类收入账户的余额会计分录
  • php注册功能的实现
  • PHP:imagepsfreefont()的用法_GD库图像处理函数
  • 政府收回土地使用权免征增值税的条件
  • 在建工程减值准备科目编码
  • 语音处理算法
  • php获取另一个php返回内容
  • 微软 大中华区 前副总裁
  • 购买农产品取得增值税普通发票可以抵扣吗
  • 暂估库存商品计算怎么算
  • 合并报表抵消分录
  • 增值税发票丢失怎么补开
  • 其他应收款的审定表怎么填
  • 收据上面盖公章有用吗
  • 企业所得税中通过研发费用辅助账
  • 结转和结算
  • 增值税专用发票电子版
  • 置换房产入账价值的确定根据什么
  • 其他应付款做账
  • 社保下个月扣款
  • 补偿款怎么写才能有效
  • 未达起征点怎么报税
  • 内账外账用一个云盘可以吗
  • 应付利润属于什么科目类别
  • 改错的技巧
  • mysql中的存储过程
  • 透明终端架构
  • linuxvlc安装
  • win8怎么分配磁盘空间
  • windows提示滑动以关闭电脑
  • win10怎么更改磁盘空间分配
  • apache禁用trace方法
  • win7中文显示问号
  • windows恶意软件删除工具怎么安装
  • mac计算器快捷键
  • win10任务界面
  • window10的连接功能
  • win7系统电脑无声音
  • cocos3d-x
  • node.js权限管理
  • js 数组 增加元素
  • 详解怎样利用双色球密码选号
  • vue自定义方法
  • js面向对象面试题
  • android基础知识入门
  • 税收和社保不在同一地缴纳怎么办
  • 成都市税务app
  • 上市公司季报有哪些内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设