掘金彩蛋:爱的魔力转圈圈

简介: 出于好奇,我就想看看掘金怎么实现的,原来几行非常简单的css就实现了这个好玩的彩蛋。


看了站长的直播之后,瞬间觉得世界真奇妙。为什么有如此美丽的女子((⊙o⊙)…)。


让我想为站长吟诗作曲一首:


云想衣裳花想容,春风拂槛露华浓。

若非群玉山头见,会向瑶台月下逢。


我自己都笑了,哈哈哈哈,不调戏站长了,我们言归正传。昨天在逛掘金-我的主页时,发现一个掘金的彩蛋。觉得很有意思哈。



爱的魔力转圈圈,

想你想到心花怒放黑夜白天,

可是我害怕爱情只是一瞬间,

转眼会不见,

我要慢慢冒险。


出于好奇,我就想看看掘金怎么实现的,原来几行非常简单的css就实现了这个好玩的彩蛋。



下面我们来认识一下这段代码的CSS。


.user-info-block .avatar:hover{
    transform: rotate(666turn);
    transition-delay: 1s;
    transition-property: all;
    transition-duration: 59s;
    transition-timing-function: cubic-bezier(.34,0,.84,1);
}


一、transform


1. 描述


MDN:CSStransform属性允许你旋转,缩放,倾斜或平移给定元素。这是通过修改CSS视觉格式化模型的坐标空间来实现的。


2. 语法


transform: none|transform-functions;


描述
none 定义不进行转换。
matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate(x,y) 定义 2D 转换。
translate3d(x,y,z) 定义 3D 转换。
translateX(x) 定义转换,只是用 X 轴的值。
translateY(y) 定义转换,只是用 Y 轴的值。
translateZ(z) 定义 3D 转换,只是用 Z 轴的值。
scale(x,y) 定义 2D 缩放转换。
scale3d(x,y,z) 定义 3D 缩放转换。
scaleX(x) 通过设置 X 轴的值来定义缩放转换。
scaleY(y) 通过设置 Y 轴的值来定义缩放转换。
scaleZ(z) 通过设置 Z 轴的值来定义 3D 缩放转换。
rotate(angle) 定义 2D 旋转,在参数中规定角度。
rotate3d(x,y,z,angle) 定义 3D 旋转。
rotateX(angle) 定义沿着 X 轴的 3D 旋转。
rotateY(angle) 定义沿着 Y 轴的 3D 旋转。
rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。
skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。
skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。
skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。
perspective(n) 为 3D 转换元素定义透视视图。


3. 兼容性


2D Transforms


3D Transforms


4. rotate(666turn)

1turn = 360°

666true = 666*360°


一、transition-delay


1. 描述


CSS的transition-delay属性规定了在过渡效果开始作用之前需要等待的时间。值以秒(s)或毫秒(ms)为单位,表明动画过渡效果将在何时开始。取值为正时会延迟一段时间来响应过渡效果;取值为负时会导致过渡立即开始。


2. 语法


transition-delay: time;

描述
time 规定在过渡效果开始之前需要等待的时间,以秒或毫秒计。


3. 兼容性



4. transition-delay: 1s


过渡效果开始之前等待1秒


三、transition-property


1. 描述


transition-property 指定应用过渡属性的名称。


2. 语法


transition-property: none|all|property;


描述
none 没有属性会获得过渡效果。
all 所有属性都将获得过渡效果。
property 定义应用过渡效果的 CSS 属性名称列表,列表以逗号分隔。


3. 兼容性


CSS property: transition-property



CSS property: transition-property: IDENT value



4. transition-property: all


为所有属性定义过渡效果。


四、 transition-duration


1. 描述


transition-duration 属性以秒或毫秒为单位指定过渡动画所需的时间。默认值为 0s ,表示不出现过渡动画。


2. 语法


transition-duration: time;


描述
time 规定完成过渡效果需要花费的时间(以秒或毫秒计)。默认值是 0,意味着不会有效果。


3. 兼容性



4. transition-duration: 59s


过渡动画所需的时间为59s。


五、 transition-timing-function


1. 描述


CSS属性受到 transition effect的影响,会产生不断变化的中间值,而 CSS transition-timing-function 属性用来描述这个中间值是怎样计算的。实质上,通过这个函数会建立一条加速度曲线,因此在整个transition变化过程中,变化速度可以不断改变。


2. 语法


transition-timing-function: linear|ease|ease-in|ease-out|ease-in-out|cubic- bezier(n,n,n,n);


描述
linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。
ease 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。
ease-in 规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。
ease-out 规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。
ease-in-out 规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。


3. 兼容性


CSS property: transition-timing-function



CSS property: transition-timing-function: jump- keywords for steps()



4. cubic-bezier(.34,0,.84,1)


在 cubic-bezier 函数中定义自己的值。 cubic-bezier称为三次贝塞尔曲线,主要是生成速度曲线的函数,规定是cubic-bezier(,,,) .


从上图中我们可以看到,cubic-bezier有四个点:


两个默认的,即:P0(0,0),P3(1,1);

两个控制点,即:P1(x1,y1),P2(x2,y2);


注:X轴的范围是0~1,超出cubic-bezier将失效,Y轴的取值没有规定,但是也不宜过大。 我们只要调整两个控制点P1和P2的坐标,最后形成的曲线就是动画曲线。


六、总结


.user-info-block .avatar:hover{
    transform: rotate(666turn);
    transition-delay: 1s;
    transition-property: all;
    transition-duration: 59s;
    transition-timing-function: cubic-bezier(.34,0,.84,1);
}


这些属性组合起来就实现了掘金的小彩蛋,爱的魔力转圈圈。看彩蛋的同时还学习了几个简单CSS3属性,站长萌萌哒~~~

目录
相关文章
|
SQL 关系型数据库 数据库
PG/Greenplum
PG/Greenplum 是指 PostgreSQL(简称 PG)和 Greenplum(简称 GP)两种关系型数据库管理系统。它们都是基于 SQL(结构化查询语言)的开放源代码数据库系统,具有高性能、可扩展性和高可靠性等特点
595 7
|
9月前
|
API 开发者
HarmonyOS 之 @Require 装饰器自学指南
在 HarmonyOS 应用开发中,组件初始化传参校验是常见难题。本文深入探讨了 `@Require` 装饰器的使用方法,它能在编译阶段严格校验组件构造传参,提升代码健壮性与开发效率。文章涵盖装饰器定义、版本支持、限制条件及典型使用场景(如父子组件传参校验和 `@ComponentV2` 初始化),并通过错误示例分析常见问题。总结中强调了 `@Require` 的重要性,助力开发者编写更稳定高效的代码。适合鸿蒙开发者学习参考!
255 28
HarmonyOS 之 @Require 装饰器自学指南
|
9月前
|
存储 前端开发 安全
如何在自己的网站接入API接口获取数据?分步指南与实战示例
将第三方API(如微店API)接入网站是扩展功能和获取实时数据的关键。流程包括注册开发者账号、申请API权限、设置认证机制(OAuth 2.0或AppKey签名)、调用API实现前后端协作、处理数据与错误、优化安全性能,并解决常见问题。确保遵循最佳实践,保障系统稳定与安全。通过这些步骤,开发者可高效整合数据,提升应用功能。
|
人工智能 数据管理 API
阿里云牵头制定IEEE《行业大模型管理平台标准》,促进行业大模型生态发展
阿里云牵头在IEEE人工智能分委会制定《行业大模型管理平台标准》,旨在规范平台架构、功能及性能评估,解决行业应用中的共识缺失问题。该标准涵盖模型管理与应用工具的关键功能要求,并提供汽车、智能电网和传媒等领域的部署案例指导,以促进平台与行业用户的接口互通。多家企业和研究机构共同参与了标准制定工作,欢迎更多伙伴加入,共促产业发展。
484 9
|
Android开发
Android中如何快速的实现RecycleView的拖动重排序功能
使用`ItemTouchHelper`和自定义`Callback`,在`RecyclerView`中实现拖动排序功能。定义`ItemTouchHelperAdapter`接口,`Adapter`实现它以处理`onItemMove`方法。`SimpleItemTouchHelperCallback`设置拖动标志,如`LEFT`或`RIGHT`(水平拖动),并绑定到`RecyclerView`以启用拖动。完成这些步骤后,即可实现拖放排序。关注公众号“AntDream”获取更多内容。
382 3
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的工作流程管理系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的工作流程管理系统的详细设计和实现
284 1
|
机器学习/深度学习 人工智能 自然语言处理
技术小白能看懂的ChatGPT原理介绍
网上有关 ChatGPT 的原理介绍文章一大堆,要么是从 NLP 的历史开始讲起,要么是上数 GPT 3 代,内容都相对冗长和复杂。其实 ChatGPT 的原理并不难理解,我将以最通俗易懂的方式为技术小白解读,帮助大家更好地了解这一技术
971 1
技术小白能看懂的ChatGPT原理介绍
|
算法 网络安全
Unable to negotiate with 127.0.0.1 port 29215: no matching host key type found. Their offer: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha> 解决
【5月更文挑战第5天】Unable to negotiate with 127.0.0.1 port 29215: no matching host key type found. Their offer: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha> 解决
931 7
|
负载均衡 安全 网络协议
使用高防ip后源站IP暴露的解决办法
使用高防ip后源站IP暴露的解决办法
204 3
|
机器学习/深度学习 人工智能 供应链
AI技术在医疗领域的应用与未来展望###
本文深入探讨了人工智能(AI)技术在医疗领域的多种应用及其带来的革命性变化,从疾病诊断、治疗方案优化到患者管理等方面进行了详细阐述。通过具体案例和数据分析,展示了AI如何提高医疗服务效率、降低成本并改善患者体验。同时,文章也讨论了AI技术在医疗领域面临的挑战和未来发展趋势,为行业从业者和研究人员提供参考。 ###