用 CSS 找回童年的快乐,哆啦A梦伴你同行

浅浅的花香味﹌ 2022-10-08 05:33 300阅读 0赞

点击上方 前端瓶子君,关注公众号

回复算法,加入前端编程面试算法每日一题群

3ef10e9c75c27d483166491c72169a2f.png

前言

小时候我就想,如果能有一个像哆啦A梦一样的朋友陪伴我们成长该有多好?悲伤时有人安慰;想放弃的时候,有人鼓励;快乐的时候,有人分享。最关键的是他拥有无所不能的神奇口袋。而如今长大了,反过来我希望能像哆啦A梦一样,陪伴着孩子成长。于是作为给我们的儿童节礼物,接下来通过 CSS 画一个《哆啦A梦,伴你同行》的海报,一起找回童年的回忆吧。

相关知识点

CSS 中能画图的大多数人第一时间想到的就是 canvas,但是还有一个 API 不能小看。那就是可以用来画曲线的 border-radius。接下来我们先来了解一下相关知识点的基本用法吧。

border-radius

border-radius 允许你设置元素的外边框圆角。当使用一个半径时确定一个圆形,当使用两个半径时确定一个椭圆。这个(椭)圆与边框的交集形成圆角效果。

69a942a0610e41aa317f63b2793b4f46.png我们开发过程中经常只用一个属性值,例如 border-radius: 10px; 对这个属性了解的同学应该知道,这其实是一个简写,类似 padding: 10px; 他实际上会有**两个维度的半径,一个是水平维度,一个是垂直维度。**他的全写是 border-radius: 10px 10px 10px 10px / 10px 10px 10px 10px; / 前的四个值是以左上角为首顺时针对应的四个角的水平半径,而后是垂直半径。说了这么多,我们来实操一下,试着画一个哆啦A梦的眼眶。重点关注 border-radiushtml 部分基本是 div就不一一展示了。

  1. .eye {
  2. position: absolute;
  3. top: 38px;
  4. width: 136px;
  5. height: 136px;
  6. border-radius: 100px 60px 100px 70px / 100px 60px 100px 70px;
  7. border: 2px solid #7f888f;
  8. background: #fff;
  9. }
  10. 复制代码

给四个角分别设置对应的水平和垂直半径,最终效果如下:

b4a511b0daf680029ed9fefbbfac8453.png image.png

另外哆啦A梦的脸比较特殊,我这边用了两个半圆叠加在一起,把多余的部分遮挡,最终呈现出了这样的效果。

  1. <div class='doraemon'>
  2. <!-- 脸部 -->
  3. <div class='header'></div>
  4. <div class='face'></div>
  5. </div>
  6. 复制代码
  7. .doraemon {
  8. width: 100%;
  9. height: 350px;
  10. position: absolute;
  11. left: 0;
  12. bottom: 0;
  13. }
  14. .header {
  15. position: absolute;
  16. top: 0;
  17. left: 50%;
  18. transform: translate(-50%);
  19. background: #5087b8;
  20. width: 700px;
  21. height: 350px;
  22. border-radius: 350px 350px 0 0 / 350px 350px 0 0;
  23. }
  24. .face {
  25. position: absolute;
  26. top: 100px;
  27. left: 50%;
  28. transform: translate(-50%);
  29. width: 600px;
  30. height: 250px;
  31. background: #fff;
  32. border-radius: 300px 300px 0 / 225px 225px 0 0;
  33. }
  34. 复制代码

f34bab6dbfefeac9744f10ace841bbbf.png image.png

rotate()

rotate()函数定义了一种将元素围绕一个定点(由 transform-origin 属性指定,默认为元素的中心)旋转而不变形的转换。指定的角度定义了旋转的量度。若角度为正,则顺时针方向旋转,否则逆时针方向旋转。旋转180°也被称为点反射。

顾名思义,就是作一个旋转角度用的,其中还分为 rotateY()rotateX() 作用是让一个元素围绕纵坐标(垂直轴、水平轴)旋转,而不会对其进行变形。

因为哆啦A梦的脸比较对称,就是一个蓝的、圆的、大胖子脸,我们可以通过这个 API 轻而易举的画出另一边眼眶(懒人偷懒的办法多)。同样的,还可以画出他的猫胡子。

  1. <div class='eye eye-left'>
  2. <div class='pupil'>
  3. <div class='pupil-mask'></div>
  4. <div class='pupil-middle'></div>
  5. <div class='pupil-small'></div>
  6. <div class='tear-top'></div>
  7. <div class='tear-bottom'></div>
  8. </div>
  9. </div>
  10. <div class='eye eye-right mirror'>
  11. <div class='pupil mirror'>
  12. <div class='pupil-mask'></div>
  13. <div class='pupil-middle'></div>
  14. <div class='pupil-small'></div>
  15. <div class='tear-top'></div>
  16. <div class='tear-bottom'></div>
  17. </div>
  18. </div>
  19. 复制代码
  20. .eye {
  21. position: absolute;
  22. top: 38px;
  23. width: 136px;
  24. height: 136px;
  25. border-radius: 100px 60px 100px 70px / 100px 60px 100px 70px;
  26. border: 2px solid #7f888f;
  27. background: #fff;
  28. }
  29. .eye.eye-left {
  30. left: 104px;
  31. }
  32. .eye.eye-right {
  33. right: 104px;
  34. }
  35. .mirror {
  36. transform: rotateY(180deg); // 水平翻转
  37. }
  38. 复制代码

5af41d2456f544b5777f90aa439d1a92.png image.png

box-shadow

box-shadow** 属性用于在元素的框架上添加阴影效果。你可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开。该属性可设置的值包括阴影的X轴偏移量、Y轴偏移量、模糊半径、扩散半径和颜色**。

海报上的哆啦A梦的鼻子做出了立体的效果,这时候就该 box-shadow 出场了,其实只要知道对应的值代表什么,问题就迎刃而解了,我们来看下简单的使用例子。

  1. /* 依次对应的值为 x偏移量 | y偏移量 | 阴影模糊半径 | 阴影扩散半径 | 阴影颜色 */
  2. box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
  3. 复制代码

嗯,看着非常简单,一目了然,接着我们开始画他的鼻子吧。

  1. <div class='nose'>
  2. <div class='blink'></div>
  3. </div>
  4. 复制代码
  5. .nose {
  6. position: absolute;
  7. top: 127px;
  8. left: 50%;
  9. transform: translate(-50%);
  10. width: 80px;
  11. height: 80px;
  12. border-radius: 50%;
  13. background: #ae3537;
  14. box-shadow: 2px 30px 18px -8px rgb(0 0 0 / 33%);
  15. }
  16. /* 鼻子上的光 */
  17. .nose .blink {
  18. position: absolute;
  19. top: 5px;
  20. left: 20px;
  21. width: 36px;
  22. height: 22px;
  23. background: #bf5d5c;
  24. border-radius: 80px 30px 44px 20px / 60px 30px 60px 20px;
  25. }
  26. 复制代码

33c52861c10903b798eb98d825bc72d7.png image.png

召唤哆啦A梦

终于到了最关键的时刻了,把所有的零部件拼接在一起吧。决定就是你了,出来吧,哆啦A梦(串了串了)。6d09c9132ad6f89d7d742921dbc77b13.gif完整的代码我放在 Code Pen 上了,有感兴趣的同学可以看看。

结束语

大雄和静香最终在一起了,你为什么还是一个人(我指的是哆啦A梦, 哈哈哈)?现实生活中其实有很多哆啦A梦,疼爱你的家人,帮助你的朋友,开导你的老师,引导你的上司都是我们人生中的哆啦A梦。最后,祝所有人儿童节快乐!

关于本文

来源:孤佣

https://juejin.cn/post/6968614951703281701

最后

欢迎关注【前端瓶子君】✿✿ヽ(°▽°)ノ✿

回复「算法」,加入前端编程源码算法群,每日一道面试题(工作日),第二天瓶子君都会很认真的解答哟!

回复「交流」,吹吹水、聊聊技术、吐吐槽!

回复「阅读」,每日刷刷高质量好文!

如果这篇文章对你有帮助,「在看」是最大的支持

》》面试官也在看的算法资料《《

“在看和转发”就是最大的支持

发表评论

表情:
评论列表 (有 0 条评论,300人围观)

还没有评论,来说两句吧...

相关阅读