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

纯css实现坤坤经典动作-“铁山靠”

背景

2023年2月16日,晴,今天没有工作,一直在掘金摸鱼,摸的我好累。
不行!我得找点有意义的事情做!
此时间,我发的一条沸点竟然有小黑子给我评论,\

image.png

image.png

我看到之后气不打一处来,哥哥这么努力,还有这么多人黑我家哥哥,
so!!! 我打算为哥哥正名!

作为工作时间一坤年的ikun,我要尽我的绵薄之力还原哥哥的舞姿!
让你们臣服!

开搞

1. 构思

  1. 选择题材阶段,我毫不犹豫决定实现坤坤的经典“铁山靠”动作;

image.png

  1. 然后就是思考怎么实现了,定几个要实现的关键要素;
  2. 实现帅气中分发型;
  3. 实现身着背带裤的潇洒身型;
  4. 实现铁山靠动作;
  5. 优化细节。

代码就不往文章里贴了,最后直接在码上掘金在线看吧-.-

2. 绘制帅气的中分发型

  • 先画个头,设置弧度border-radius:50%画个圆将就一下;
  • 所有头发颜色,裤子颜色,皮肤颜色,都是用浏览器自带的取色器从坤坤的图片上吸的颜色;

image.png

  • 中分发型分为两瓣儿,用两个div设置border-radius实现,border-dadius可以设置八个位置的弧度。写法如:
 border-radius: 65px 21px 76px 14px / 90px 17px 111px 26px;
//分别设置的是  左上 右上 右下 左下 / 左上 右上 右下 左下 的弧度
  • 颜色设置个灰色渐变色
background-image: linear-gradient(to right, lightgrey, grey);

image.png

3. 绘制背带裤造型

  • 先画个长方形div当身体,背景色设置为黑色,背带我懒得画了,直接写个大写Y代替背带了(没想到效果还不错);
  • 然后绘制胳膊和腿,由于考虑身体是主体,所以头,四肢都相对于身体定位;
  • 把所有元素都塞身体里,给个id为“kun”因为坤坤是唯一的!所以要用id选择器!
  • 利用position: absolute设置胳膊腿的位置,然后用transform: rotate()对四肢进行选择调节姿势,在这之前要用transform-origin: center top;设置好四肢的旋转基点。
  • 胳膊的大小胳膊大胳膊用div,小胳膊用这个div的:after伪元素实现
<div id="kun"><div class="arms"><div class="arm arm-l"></div><div class="arm arm-r"></div></div><div class="leg leg-l"></div><div class="leg leg-r"></div>
</div>
.arm{background-color: #333;position: absolute;top: 10px;z-index: 1;transform-origin: center top;width: 30px;height: var(--armLength);&-l{left: 0;transform: rotate(50deg);border-radius: 0 0 30px 30px;&::after{content: '';position: absolute;width: 26px;height: 80px;border-radius: 0 0 30px 30px;background-color: #333;left: 0;bottom: -70px;transform-origin: center top;transform: rotate(-100deg);}}&-r ...
}

image.png

4. 实现铁山靠动作

  • 精心打磨铁山靠的动作要领,采集每一帧的动画定格

image.png

  • 由于每次变化都是不规则多边形,我考虑了三种实现方式
  • transform: skew() rotate()
  • border实现
  • clip-path实现
  • 最后考虑方便调试,以及可以实现更自由的图形,选择了用clip-path实现
  • 由于身体用clip-path实现动画过程,占用的位置不会变化,所以胳膊也不会跟着身体摆动,所以我得单独处理胳膊的动画,通过设置间距和位置体现跟着身体晃动的效果。
//头动画 
@keyframes headmove {25% {bottom: 210px;}50% {bottom: 195px;}75% {bottom: 170px;}
}
// 胳膊动画
@keyframes armmove {25% {width: 92%;top: 60px;left: 11%;}50% {width: 72%;top: 66px;left: 12%;}75% {width: 81%;top: 80px;left: 14%;}
}//身体动画
@keyframes bodymove {25% {-webkit-clip-path: polygon(23% 13%, 100% 0%, 75% 100%, 0% 100%);clip-path: polygon(23% 13%, 100% 0%, 75% 100%, 0% 100%);}50% {-webkit-clip-path: polygon(17% 16%, 63% 29%, 75% 100%, 0% 100%);clip-path: polygon(17% 16%, 63% 29%, 75% 100%, 0% 100%);}75% {-webkit-clip-path: polygon(24% 27%, 90% 38%, 75% 100%, 0% 100%);clip-path: polygon(24% 27%, 90% 38%, 75% 100%, 0% 100%);}
}

image.png

5. 细节调整

  • 粗略的实现后,四肢的位置显然狠尴尬。
  • 打开控制台,选中身体,用animation-play-state: paused;将身体分别暂停在不同的关键帧位置,然后慢慢微调四肢位置
  • 设置背景

image.png

大功告成!!

6. 成果展示

jcode

免责声明!

我是真的ikun
背歌为证

迎面走来的你让我如此蠢蠢欲动*
这种感觉我从未有
Cause I got a crush on you who you
你是我的我是你的谁
再多一眼看一眼就会爆炸
再近一点靠近点快被融化

本文代码仅供娱乐,不存在任何歧视,不存在任何造谣污蔑。如果冒犯,请私信我,我会苏珊!

http://www.lryc.cn/news/11290.html

相关文章:

  • Linux 操作系统原理 — NUMA 体系结构
  • cesium学习记录01
  • Linux延时队列工作原理与实现
  • 【Python】scipy稀疏矩阵的奇异值分解svds
  • 网络安全等级保护基础知识汇总
  • ros1使用过程中遇到的问题记录
  • centos7给已有分区进行扩容
  • package.json
  • 【项目精选】户籍管理系统(视频+论文+源码)
  • 【IP技术】网络安全防护措施
  • 基于AIOT技术的智慧教室智能物联管控系统设计与实现(提纲)
  • C 指针的深造
  • 大数据之-Nifi-应用场景2-2_设置putfile处理器自动创建目标文件夹_以及存在重复文件时自动覆盖---大数据之Nifi工作笔记0006
  • buuctf Web 下
  • 【项目精选】javaEE土地档案管理系统(源码+论文+视频)
  • JVM那些事——垃圾回收和内存分配
  • 什么牌的运动耳机比较好、运动耳机排行榜10强
  • 华为OD机试题 - N 进制减法(JavaScript)
  • MyBatis 之三(查询操作 占位符#{} 与 ${}、like查询、resultMap、association、collection)
  • 【云原生之Docker实战】使用Docker部署Web在线聊天室Rocket.Chat
  • 阿里一面:谈一下你对DDD的理解?2W字,帮你实现DDD自由
  • 嵌入式Linux入门级板卡的神经网络框架ncnn移植与测试-米尔i.MX6UL开发板
  • 扬帆优配|杠杆资金重仓股曝光,3只科创板股获多路资金青睐
  • 资讯汇总230217
  • 前置知识- 初值问题、ode 系列函数的用法、刚性 (stiff) 方程简介、高阶微分方程的降阶
  • # AutoSar一文概览
  • 分享88个HTML旅游交通模板,总有一款适合您
  • C#中GDI+的矩形功能扩展
  • 数字经济活动题
  • html 的相对路径和绝对路径