版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一个实例用css来实现胖橘的喜乐(实例分享)本期我们通过vite+sCSS去完成一个橘猫心情变化的创意动画,这里的逻辑我们将不使用任何js代码,仅依靠css来完成,所以,通过本期的动画,你可以到一些css动画和绘制的一些技巧。
还比较可爱吧。当鼠标(鱼)移入出,橘子闷闷不乐,无精打采的。但当鼠标(鱼)移入,橘子一看见最喜欢的鱼立马就开心了,连天气都变好了,对,这只橘子就是这么馋,变成胖橘是有原因的。
好了,我们马上就要进入正文了,我们会从基础搭建,太阳,云,猫的绘制和动画去了解制作这个动画的流程。
1.搭建与结构
yarnaddvitesasssass-loader
我们是用vite和sass去完成项目的构建,和样式的书写,所以我们先安装下他们。
divid=app
div>
在html我们先写出结构来。div#app作为主界面去填满一屏,而div.warrper就作为主要内容的展示区域也就是那个圆圈。然后,在圆圈里面我们放太阳div.sun,云朵div.cloud,猫div.cat,当然猫里面还有眼睛鼻子嘴巴这些,至于猫的耳朵就用两个伪类做个三角形去实现。
2.变量与界面
$cat:rgb(252,180,125);
:root{
--bgColor:rgb(81,136,168);
--eyeHideTop:0px;
--cloudLeft:45%;
--mouthRadius:10px10px00;
#app{
width:100%;
height:100vh;
position:relative;
display:flex;
justify-content:center;
align-items:center;
background-image:repeating-linear-gradient(0deg,hsla(340,87%,75%,0.2)0px,hsla(340,87%,75%,0.2)30px,transparent30px,transparent60px),repeating-linear-gradient(90deg,hsla(340,87%,75%,0.2)0px,hsla(340,87%,75%,0.2)30px,transparent30px,transparent60px),linear-gradient(90deg,rgb(255,255,255),rgb(255,255,255));
.warrper{
width:320px;
height:320px;
border-radius:50%;
border:10pxsolidwhite;
position:relative;
overflow:hidden;
background-color:var(--bgColor);
transition:background-color1slinear;
cursor:url(./assets/fish.png),default;
:hover{
--bgColor:rgb(178,222,247);
--eyeHideTop:-20px;
--cloudLeft:100%;
--mouthRadius:0010px10px;
}
我们先定义猫的主色调,还有一些要变化的颜色和距离,因为我们移入将通过css3去改变这些属性,来达到某些动画的实现。
我们期望的是,当鼠标移入圆圈后,天空变晴,云朵退散,猫开心充满精神,所以,bgColor:天空颜色,eyeHideTop猫的眼皮y轴距离,cloudLeft云朵x轴偏移距离,mouthRadius猫嘴巴的圆角值。目前来说,当鼠标移入div.warrper后,这些值都会发生变化。另外,我自定义了鼠标图标移入圆圈变成了一条鱼(即cursor:url(图片地址))。这里的hover后的值是我事先算好的,如果大家重新开发别的动画可以一边做一边算。
3.太阳与云朵
.sun{
width:50px;
height:50px;
position:absolute;
background-color:rgb(255,229,142);
border:7pxsolidrgb(253,215,91);
border-radius:50%;
left:55%;
top:14%;
box-shadow:006pxrgb(255,241,48);
}
太阳我们就画个圆圈定好位置,然后用box-shadow投影去完成一点发光的效果。
然后,我们再开始画云朵~
.cloud{
width:100px;
height:36px;
background-color:white;
position:absolute;
transition:left.6slinear;
left:var(--cloudLeft);
top:23%;
border-radius:36px;
animation:bouncy2sease-in-outinfinite;
::before{
content:
width:50px;
height:50px;
background-color:white;
border-radius:50%;
position:absolute;
top:-23px;
left:18px;
::after{
content:
width:26px;
height:26px;
background-color:white;
border-radius:50%;
position:absolute;
top:-16px;
left:56px;
@keyframesbouncy{
0%{
transform:scale(1);
50%{
transform:scale(1.05);
100%{
transform:scale(1);
}
云朵很简单,我们就是画一个圆角矩形,然后用两个伪类画一个大圆和小圆叠在一起就非常像云了,另外,我们再加个animation动画,让他时大时小,有动的感觉。
4.橘猫与动画
.cat{
width:180px;
height:160px;
background-color:$cat;
position:absolute;
bottom:-20px;
left:50%;
margin-left:-90px;
animation:wAIt2sease-in-outinfinite;
::after,
::before{
content:
display:block;
border-style:solid;
border-width:20px30px;
position:absolute;
top:-30px;
::after{
right:0;
border-color:transparent$cat$cattransparent;
::before{
left:0;
border-color:transparenttransparent$cat$cat;
.eye{
width:42px;
height:42px;
border-radius:50%;
position:absolute;
top:30px;
background:white;
overflow:hidden;
display:flex;
justify-content:center;
align-items:center;
.eye-hide{
height:20px;
position:absolute;
top:var(--eyeHideTop);
left:-2px;
right:-2px;
background-color:$cat;
transition:top.5sease-in-out;
z-index:2;
::before{
content:
height:36px;
width:36px;
background-color:black;
border-radius:50%;
::after{
content:
width:24px;
height:24px;
background-color:white;
border-radius:50%;
position:absolute;
right:0px;
top:0px;
.left{
left:24px;
.right{
right:24px;
.nose{
width:0;
height:0;
border-top:7pxsolidrgb(248,226,226);
border-left:7pxsolidtransparent;
border-right:7pxsolidtransparent;
position:absolute;
left:50%;
margin-left:-7px;
top:70px;
.mouth{
width:26px;
height:20px;
background-color:rgb(255,217,217);
position:absolute;
top:85px;
left:50%;
margin-left:-13px;
border-radius:var(--mouthRadius);
transition:border-radius.2slinear;
overflow:hidden;
::after,
::before{
content:
position:absolute;
display:block;
top:0;
border-top:7pxsolidwhite;
border-left:2pxsolidtransparent;
border-right:2pxsolidtransparent;
::after{
right:5px;
::before{
left:5px;
@keyframeswait{
0%{
bottom:-20px;
50%{
bottom:-25px;
100%{
bottom:-20px;
}
我们可以实现分解出,耳朵(伪类)+一双眼睛+鼻子+嘴(包含两颗尖牙)=猫。
通过以上代码就不难看出主要都是在使用绝对定位来完成,面部器官的摆放。绝大部分都是css基础代码来实现的。唯一可以注意的点,就是耳朵这个三角形,我们是通过伪类实现,将它不设置宽高,而主是通过border-width+boder-color这个技巧去绘制出三角形的,算是个css小技巧吧,后面的鼻子和嘴巴里的尖牙都是这个小技巧来实现的。
另外,还要说的是那双眼睛,我们用先填充白底再分别用伪类去实现里面的黑底圆和白色小圆,肯定有同学问了为什么不用border是实现白色圆框,就不用浪费一个伪类去完成黑底圆了?因为我们用了overflow:hidden,他
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度医院三基考试考试黑钻押题附参考答案详解【考试直接用】
- 2024-2025学年度监理工程师试题及答案详解(夺冠系列)
- 2024-2025学年度计算机四级试题附参考答案详解(预热题)
- 2024-2025学年度中医助理医师模考模拟试题附参考答案详解(轻巧夺冠)
- 2024-2025学年度临床执业医师模拟试题含完整答案详解【全优】
- 2024-2025学年度山西工程职业学院单招数学高频难、易错点题及参考答案详解(基础题)
- 2024-2025学年度无人机资格证自我提分评估【重点】附答案详解
- 2024-2025学年度医师定期考核考前冲刺练习题含答案详解【综合题】
- 2024-2025学年度反射疗法师大赛理论题库【培优】附答案详解
- 2024-2025学年度环保局考试考前冲刺练习试题(各地真题)附答案详解
- 中药提取安全培训课件
- 生产安全标准化操作指南与风险控制点
- 班会教学设计-公共生活靠大家 2023-2024学年高一上学期
- 泸州机房工程方案(3篇)
- 公安局局长在未成年人保护和预防未成年人犯罪工作会上的讲话
- 【《小米手机市场营销策略建议研究》10000字(论文)】
- 猪的肠道健康及其维护讲课文档
- 广告文案教案
- 2025年广元市中考数学试题卷(含答案解析)
- 智能立库系统应用案例解析
- 挖掘机作业安全交底及注意事项
评论
0/150
提交评论