资讯专栏INFORMATION COLUMN

前端每日实战:110# 视频演示如何用纯 CSS 创作一只愤怒小鸟中的黑炮

PrototypeZ / 2121人阅读

摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。可交互视频此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。为头部增加阴影为嘴增加阴影大功告成

效果预览

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

https://codepen.io/comehope/pen/vaoQqa

可交互视频

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

https://scrimba.com/p/pEgDAM/cag9wfw

源代码下载

每日前端实战系列的全部源代码请从 github 下载:

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,容器中包含的元素分别代表

</>复制代码

居中显示:

</>复制代码

  1. body {
  2. margin: 0;
  3. height: 100vh;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background-color: turquoise;
  8. }

定义容器尺寸和伪元素的共同属性:

</>复制代码

  1. .black-bomb {
  2. width: 13em;
  3. height: 13em;
  4. font-size: 16px;
  5. }
  6. .black-bomb *::before,
  7. .black-bomb *::after {
  8. content: "";
  9. position: absolute;
  10. }

画出头部轮廓:

</>复制代码

  1. .black-bomb {
  2. position: relative;
  3. }
  4. .head {
  5. position: absolute;
  6. width: inherit;
  7. height: inherit;
  8. background-color: #0f1110;
  9. border-radius: 45% 55% 45% 55% / 55% 50% 50% 45%;
  10. }

用伪元素画出眼睛的轮廓:

</>复制代码

  1. .eyes::before,
  2. .eyes::after {
  3. width: 3.4em;
  4. height: 3.4em;
  5. background-color: #4e4e4e;
  6. border-radius: 50%;
  7. }
  8. .eyes::before {
  9. top: 2.7em;
  10. left: 21%;
  11. }
  12. .eyes::after {
  13. top: 2.5em;
  14. right: 7%;
  15. }

用径向渐变画出眼球和瞳孔:

</>复制代码

  1. .eyes::before,
  2. .eyes::after {
  3. background-image:
  4. radial-gradient(
  5. circle at var(--left3) 1.7em,
  6. white 0.1em,
  7. transparent 0.1em
  8. ),
  9. radial-gradient(
  10. circle at var(--left2) 1.6em,
  11. black 0.6em,
  12. transparent 0.6em
  13. ),
  14. radial-gradient(
  15. circle at var(--left1) 1.4em,
  16. white 1em,
  17. transparent 1em
  18. );
  19. }
  20. .eyes::before {
  21. --left1: 2em;
  22. --left2: 2.3em;
  23. --left3: 2.4em;
  24. }
  25. .eyes::after {
  26. --left1: 1.2em;
  27. --left2: 0.9em;
  28. --left3: 0.8em;
  29. }

用伪元素画出眉毛:

</>复制代码

  1. .eyebrows::before,
  2. .eyebrows::after {
  3. width: 5.3em;
  4. height: 0.8em;
  5. background: #cb3c1a;
  6. }
  7. .eyebrows::before {
  8. top: 2.3em;
  9. left: 1em;
  10. transform: rotate(10deg);
  11. }
  12. .eyebrows::after {
  13. top: 2.2em;
  14. right: -0.6em;
  15. transform: rotate(-10deg);
  16. }

画出嘴的轮廓:

</>复制代码

  1. .mouth {
  2. position: absolute;
  3. width: 3.6em;
  4. height: 3.6em;
  5. background-color: #fca90d;
  6. top: 4em;
  7. left: 6.4em;
  8. border-radius: 80% 0 30% 20%;
  9. transform: rotate(34deg);
  10. border: 0.1em solid black;
  11. }

用伪元素画出上下颌的分界线:

</>复制代码

  1. .mouth::before {
  2. width: 2.6em;
  3. height: 5.7em;
  4. border: 0.2em solid;
  5. border-radius: 80% 0 0 16%;
  6. transform: rotate(35deg);
  7. top: -1.1em;
  8. left: 1.4em;
  9. border-color: transparent transparent transparent black;
  10. }

画出胸前的羽毛:

</>复制代码

  1. .head {
  2. overflow: hidden;
  3. }
  4. .head::before {
  5. width: inherit;
  6. height: inherit;
  7. background-color: #474642;
  8. border-radius: inherit;
  9. top: 76%;
  10. left: 12%;
  11. }

画出冠羽:

</>复制代码

  1. .hair {
  2. position: absolute;
  3. width: 1.4em;
  4. height: 5em;
  5. background-color: #0f1110;
  6. top: -3.8em;
  7. left: 20%;
  8. border-radius: 0 0 40% 40% / 0 0 100% 100%;
  9. }
  10. .hair::before {
  11. width: 80%;
  12. height: 1em;
  13. background-color: #ffc000;
  14. top: 0.3em;
  15. left: 10%;
  16. }

调整冠羽的形状:

</>复制代码

  1. .hair {
  2. transform: rotate(-28deg) skewX(10deg) skewY(-50deg);
  3. }

接下来画阴影,增强立体感。

为头部增加阴影:

</>复制代码

  1. .head {
  2. box-shadow: inset -1em 0.5em 1.5em -0.5em rgba(255, 255, 255, 0.3);
  3. }
  4. .head::after {
  5. width: inherit;
  6. height: inherit;
  7. border-radius: inherit;
  8. box-shadow: inset 0.5em -0.5em 0.3em 0.2em rgba(0, 0, 0, 0.2);
  9. }

为嘴增加阴影:

</>复制代码

  1. .mouth {
  2. box-shadow:
  3. inset 0 0.5em 0.5em rgba(255, 255, 255, 0.3),
  4. inset 0.2em -0.5em 1.2em rgba(0, 0, 0, 0.5);
  5. }

大功告成!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/52885.html

相关文章

  • 前端每日实战110# 视频演示何用 CSS 创作一只愤怒小鸟中的黑炮

    摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。可交互视频此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。为头部增加阴影为嘴增加阴影大功告成 showImg(https://segmentfault.com/img/bVbfxoZ?w=400&h=300); 效果预览 按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。 https://c...

    Lionad-Morotar 评论0 收藏0
  • 前端每日实战:98# 视频演示何用 CSS 创作一只愤怒小鸟中的绿猪

    摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。可交互视频此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。 showImg(https://segmentfault.com/img/bVbeUYJ?w=400&h=300); 效果预览 按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。 https://codepen.io/comehop...

    FingerLiu 评论0 收藏0
  • 前端每日实战:98# 视频演示何用 CSS 创作一只愤怒小鸟中的绿猪

    摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。可交互视频此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。 showImg(https://segmentfault.com/img/bVbeUYJ?w=400&h=300); 效果预览 按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。 https://codepen.io/comehop...

    RyanQ 评论0 收藏0

发表评论

0条评论

PrototypeZ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<