有趣的表盘布局环绕动画

news2025/1/12 1:45:36

前言

C端的介绍页中,设计师设计动画特效都非常有意思。这次遇到了“表盘内容元素环绕效果”,类似于表盘中的分针在一格一格运动一样,只是这次动画运动的元素不一样。

效果如下:

实现表盘布局

合理的运用JavaScrip的三角函数,通过逐个定位元素即可实现表盘布局, 但后续的交互写起来会比较繁琐。而借助CSS的transform-origin则可以非常简单的实现表盘布局。

transform-origin CSS 属性让你更改一个元素变形的原点。`

我们只需要把子元素中的原点设置到父元素的中心点上,然后依次旋转相对应的角度transform: rotate(#{$i * 360 / 12}deg),即可完成一个表盘布局。

基础样式

<ul><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li><li><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></li>
</ul> 
ul {width: 800px;height: 800px;background-color: rgb(206, 206, 206);border-radius: 50%;@for $i from 1 through 12 {li:nth-child(#{$i}) {transform: rotate(#{$i * 360 / 12}deg);}}li {width: 100px;height: 100px;border-radius: 50%;overflow: hidden;border: 2px solid orange;box-sizing: border-box;position: absolute;top: 350px;transform-origin: 400px;img {width: 100%;height: 100%;object-fit: cover;}}
} 

再中和一下子元素的旋转角度,内容反方向自旋回子元素的角度,让内容“正”起来

img {transform: rotate(#{-$i * 360 / 12}deg);
} 

实现表盘内容元素环绕效果

元素环绕效果的实现本质也是各元素旋转再中和。以上面的代码为基础,我们让父元素旋转的同时,子元素内容反方向旋转子元素+父元素的旋转角度

  • 父元素每秒顺时针旋转30deg
<ul :style="{ transform: `rotate(${rotateNum}deg)` }">...
</ul>

setInterval(() => {this.rotateNum += 30
}, 1000) 
  • 调整一下子元素的旋转角度始点,让第一个元素为index === 1的元素,即让第一个旋转角度为360deg即可。
<liv-for="index in 12":key="index":style="{transform: `rotate(${(13 - index) * 30}deg)`,}"
>...
</li> 
  • 中和一下子元素+父元素的旋转角度,让内容“正”起来。同时加上和父元素一样时间的transition
<li><divclass="content":style="{transform: `rotate(${-(13 - index) * 30 - rotateNum}deg)`}":data-text="index"><img src="https://s1.ax1x.com/2022/12/08/zRik24.jpg" alt="" /></div>
</li> 
ul {transition: transform 0.5s linear;...li {.content {transition: transform 0.5s linear;}}
} 
  • 最后加上onmouseoveronmouseleave实现鼠标悬停和离开时,暂停/开始环绕功能。再从9377某落地页上偷一套样式装饰一下。

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Malware Dev 01 - 免杀之 PPID Spoofing 原理解析

写在最前 如果你是信息安全爱好者&#xff0c;如果你想考一些证书来提升自己的能力&#xff0c;那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里&#xff1a; https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助&#xff0c;并分享学习和实践过程…

第十五天笔记

1. 编程实现计算2023-2-1到2023-3-1相隔多少天&#xff1f; from datetime import datetimestart_date_str "2023-2-1"end_date_str "2023-3-1"start_date datetime.strptime(start_date_str, "%Y-%m-%d")end_date datetime.strptime(end_d…

pmp项目管理考完有什么好处?

作为曾经5A&#xff08;现在改3A了&#xff09;通过考试的老学姐说下经验 做好规划 一定要合理安排自己预习、复习和做题的时间&#xff0c;提前规划。其中不要小看课前预习这件事&#xff0c;带着问题去上课&#xff0c;绝对能事半功倍。同时也能及时知道老师到底在讲解哪个知…

网络安全入门:不可不知的8款免费Web安全测试工具

随着 Web 应用越来越广泛&#xff0c;Web 安全威胁日益凸显。黑客利用网站操作系统的漏洞和 Web服务程序的 SQL 注入漏洞等得到Web服务器的控制权限&#xff0c;轻则篡改网页内容&#xff0c;重则窃取重要内部数据&#xff0c;更为严重的则是在网页中植入恶意代码&#xff0c;使…

互联网时代,学什么专业就业好?

互联网时代的手机、智能电视、家具、机械设备等各种有形产品都将会嵌入智能芯片&#xff0c;都会有嵌入式软件或App与之相连&#xff0c;从而形成智能产品。这是我们开启智能化硬件的开始&#xff0c;在这样的环境下&#xff0c;如果要问学什么就业最好&#xff1f;当然首选Jav…

串口、终端应用程序 API termios

UART简介 串口全称为串行接口&#xff0c;也称为COM接口&#xff0c;串行接口指的是比特一位位顺序传输&#xff0c;通信线路简单。使用两根线就可以实现双向通信&#xff0c;一条为TX&#xff0c;一个为RX。串口通信距离远&#xff0c;但速度相对慢&#xff0c;是一种常用的工…

软测入门(二)测试用例、自动化测试理念

测试用例&#xff08;test case&#xff09; 特性 有效性&#xff1a;测试用例能够被使用&#xff0c;且被不同的人员使用测试结果一致可复用性&#xff1a;如回归测试的使用可评估性可管理性 八大要素 测试编码&#xff1a;方便归档和查询测试模块/功能预置条件&#xff1a…

2023年功能测试还值得入行吗?

前言 鉴于笔者从13年入行IT行业&#xff0c;经历了只有开发没有测试的阶段&#xff0c;经历了14年只要会基本的功能测试在一线就能薪资过万的阶段&#xff0c;经历了17年只要会一点自动化&#xff0c;会一点性能就能蒙骗过面试官的阶段&#xff0c;更经历了19年所有面试官对于…

操作系统发展历程

手工操作阶段(此阶段无操作系统) 用户在计算机上算题的所有工作都要人工干预。该阶段有两个突出缺点&#xff1a; 用户独占全机&#xff0c;虽然不会出现因资源已被其他用户占用而等待的现象&#xff0c;但资源利用率低。 CPU等待手工操作&#xff0c;CPU的利用不充分 唯一的…

【虚拟机搭建】win11搭建虚拟机两种方式:【virtualbox+vagrant】【VMware】(附centos系统、附安装包)

描述 本教程windows系统搭建虚拟机方式&#xff0c;主要包含两种方式&#xff0c;分别是&#xff1a;【vagrantvirtualbox】和【VMware】推荐大家使用【vagrantvirtualbox】方式进行安装&#xff0c;也可根据自己喜好进行选择本教程安装包 包含三种下载方式&#xff0c;分别是…

关于Could not build wheels for opencv-python-headless, which is...报错的解决方案

在通过最新版pip在线安装package&#xff1a;opencv-python-headless的时候&#xff0c;会产生报错信息&#xff0c;主要为 ERROR: Failed building wheel for opencv-python-headless ERROR: Could not build wheels for opencv-python-headless, which is required to insta…

Active Directory(活动目录)用户登录管理

活动目录用户登录管理 ADManager Plus 通过其预定义的用户登录报告简化了跟踪&#xff0c;监控和整合Active Directory用户登录特定数据的艰巨任务。Active Directory用户登录特定信息&#xff0c;如登录时间&#xff0c;登录历史记录&#xff0c;登录尝试&#xff0c;用户登录…

【钓鱼实测】写bug给new bing和chatGPT查。问他们林黛玉倒拔垂杨柳

BUG 错误代码 #include <iostream> #include <vector> using namespace std; int main() {vector<int> vec{1,2,3,2,4};for (auto iter vec.begin(); iter ! vec.end(); iter ){if (*iter 2) {vec.erase(iter);}}cout << vec.size() << endl…

Elasticsearch:如何正确处理 Elasticsearch 摄取管道故障

在我之前的文章 “Elastic&#xff1a;开发者上手指南” 中的 “Ingest pipeline” 章节中个&#xff0c;我有很多文章是关于 ingest pipeline 的。在今天的文章中&#xff0c;我将重点介绍如何处理在摄取管道中的错误。在我之前的文章 “Elasticsearch&#xff1a;如何处理 in…

Mybatis-Plus 开发提速器:mybatis-plus-generator-ui

Mybatis-Plus 开发提速器&#xff1a;mybatis-plus-generator-ui 1.简介 github地址 &#xff1a; https://github.com/davidfantasy/mybatis-plus-generator-ui 提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码&#xff0c;包括Entity,Mapper,Mapper.xml,Se…

Python(青铜时代)——模块与包

模块 模块是Python 程序架构的一个核心概念 模块好比是 工具包&#xff0c;要想使用这个工具包中的工具&#xff0c;需要使用 import 这个关键字进行导入这个工具包 每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块 在模块中定义的 全局变量、函数 都是模块能够提…

Laravel-admin之自定义操作日志

laravel-admin是封装性极好的框架&#xff0c;自带的就有操作日志的记录&#xff0c;但是对于非开发人员可能看不懂这个日志&#xff0c;所以就想着给修改一下&#xff0c;以谁修改了什么&#xff0c;谁删除了什么&#xff0c;谁审核了什么&#xff0c;谁添加了什么类似&#x…

【java web篇】数据库连接池Driud的使用

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

Apache DolphinScheduler 3.1.4 版本发布,修复一键安装报错问题

点击蓝字 关注我们2 月 27 日&#xff0c;Apache DolphinScheduler 发布了 3.1.4 版本。此版本共计修复 11 个 bug&#xff0c;并更新 1 个文档修复。其中的较为重要的 Bug fix 为&#xff1a;修复任务唤醒失败会阻塞事件处理 (#13466)修复 k8s 任务运行失败 (#13348) 修复 Me…

NodeJs 中的 HTML 模板

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 HTML 模板是一种允许我…