资讯专栏INFORMATION COLUMN

前端每日实战:92# 视频演示如何用纯 CSS 创作一颗逼真的土星

cyqian / 3546人阅读

摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。可交互视频此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

效果预览

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

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

可交互视频

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

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

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

源代码下载

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

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

代码解读

定义 dom,容器本身表示土星星球,其中的 ring 元素表示土星环:

</>复制代码

居中显示:

</>复制代码

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

定义容器尺寸:

</>复制代码

  1. .saturn {
  2. width: 20em;
  3. height: 20em;
  4. font-size: 20px;
  5. }

画出土星星球(此为草稿,后面还会细化):

</>复制代码

  1. .saturn {
  2. position: relative;
  3. }
  4. .saturn::before,
  5. .saturn::after {
  6. content: "";
  7. position: absolute;
  8. width: 9em;
  9. height: 9em;
  10. background: linear-gradient(
  11. palegoldenrod 0%,
  12. tan 10%,
  13. burlywood 30%,
  14. palegoldenrod 60%,
  15. darkgray 100%
  16. );
  17. border-radius: 50%;
  18. left: calc((20em - 9em) / 2);
  19. top: calc((20em - 9em) / 2);
  20. }

画出土星环(此为草稿,后面还会细化):

</>复制代码

  1. .rings {
  2. position: absolute;
  3. width: inherit;
  4. height: inherit;
  5. background: radial-gradient(
  6. transparent 35%,
  7. dimgray 40%,
  8. slategray 50%,
  9. transparent 60%,
  10. dimgray 60%,
  11. slategray 70%,
  12. transparent 70%
  13. );
  14. }

改变观察土星环的视角:

</>复制代码

  1. .rings {
  2. transform: rotateX(75deg);
  3. }

为了使土星呈现被土星环环绕的效果,把土星分为上下两半,使它们和土星环的图层顺序从底到顶依次为:星球的下半部、土星环、星球的上半部:

</>复制代码

  1. .saturn::before {
  2. clip-path: inset(50% 0 0 0);
  3. }
  4. .saturn::after {
  5. clip-path: inset(0 0 50% 0);
  6. }

至此,画出了土星的整体结构,接下来完善细节。
为土星环涂上丰富的渐变色:

</>复制代码

  1. .rings {
  2. background: radial-gradient(
  3. rgba(24,19,25,0) 0%,
  4. rgba(53,52,51,0) 34%,
  5. rgba(55,54,52,1) 36%,
  6. rgba(56,55,53,1) 37%,
  7. rgba(68,67,66,1) 38%,
  8. rgba(56,55,53,1) 39%,
  9. rgba(68,67,66,1) 40%,
  10. rgba(56,55,53,1) 41%,
  11. rgba(87,77,76,1) 42%,
  12. rgba(87,77,76,1) 44%,
  13. rgba(113,110,103,1) 46%,
  14. rgba(113,110,103,1) 48%,
  15. rgba(113,98,93,1) 49%,
  16. rgba(113,98,93,1) 51%,
  17. rgba(122,115,105,1) 52%,
  18. rgba(113,98,93,1) 53%,
  19. rgba(113,98,93,1) 54%,
  20. rgba(122,115,105,1) 55%,
  21. rgba(106,99,89,1) 56%,
  22. rgba(106,99,89,1) 58%,
  23. rgba(79,76,76,0) 60%,
  24. rgba(65,64,70,1) 61%,
  25. rgba(65,64,70,1) 62%,
  26. rgba(90,85,89,1) 63%,
  27. rgba(78,74,73,1) 65%,
  28. rgba(78,73,74,1) 67%,
  29. rgba(78,73,74,0) 68%,
  30. rgba(78,73,75,1) 69%,
  31. rgba(78,73,75,1) 70%,
  32. rgba(78,73,76,0) 71%,
  33. rgba(77,72,76,0) 72%,
  34. rgba(24,19,25,0) 100%
  35. );
  36. }

为星球涂上丰富的渐变色:

</>复制代码

  1. .saturn::before,
  2. .saturn::after {
  3. background:
  4. linear-gradient(
  5. rgba(212,203,174,1) 0%,
  6. rgba(212,203,174,1) 10%,
  7. rgba(221,203,157,1) 15%,
  8. rgba(221,203,157,1) 17%,
  9. rgba(213,181,143,1) 22%,
  10. rgba(213,181,143,1) 26%,
  11. rgba(208,180,158,1) 32%,
  12. rgba(208,180,158,1) 36%,
  13. rgba(218,188,162,1) 37%,
  14. rgba(218,188,162,1) 39%,
  15. rgba(211,184,157,1) 41%,
  16. rgba(211,184,157,1) 49%,
  17. rgba(205,186,156,1) 51%,
  18. rgba(205,186,156,1) 52%,
  19. rgba(202,176,153,1) 53%,
  20. rgba(202,176,153,1) 65%,
  21. rgba(190,177,145,1) 68%,
  22. rgba(190,177,145,1) 80%,
  23. rgba(150,144,130,1) 91%,
  24. rgba(150,144,130,1) 95%,
  25. rgba(131,129,117,1) 97%,
  26. rgba(131,129,117,1) 100%
  27. );
  28. }

再为星球增加光照效果:

</>复制代码

  1. .saturn::before,
  2. .saturn::after {
  3. background:
  4. radial-gradient(
  5. circle at top,
  6. transparent 40%,
  7. black
  8. ),
  9. radial-gradient(
  10. transparent 62%,
  11. black
  12. ),
  13. linear-gradient(
  14. rgba(212,203,174,1) 0%,
  15. rgba(212,203,174,1) 10%,
  16. rgba(221,203,157,1) 15%,
  17. rgba(221,203,157,1) 17%,
  18. rgba(213,181,143,1) 22%,
  19. rgba(213,181,143,1) 26%,
  20. rgba(208,180,158,1) 32%,
  21. rgba(208,180,158,1) 36%,
  22. rgba(218,188,162,1) 37%,
  23. rgba(218,188,162,1) 39%,
  24. rgba(211,184,157,1) 41%,
  25. rgba(211,184,157,1) 49%,
  26. rgba(205,186,156,1) 51%,
  27. rgba(205,186,156,1) 52%,
  28. rgba(202,176,153,1) 53%,
  29. rgba(202,176,153,1) 65%,
  30. rgba(190,177,145,1) 68%,
  31. rgba(190,177,145,1) 80%,
  32. rgba(150,144,130,1) 91%,
  33. rgba(150,144,130,1) 95%,
  34. rgba(131,129,117,1) 97%,
  35. rgba(131,129,117,1) 100%
  36. );
  37. }

最后,把画面旋转一点角度:

</>复制代码

  1. .saturn {
  2. transform: rotate(-15deg);
  3. }

大功告成!

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

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

相关文章

  • 前端每日实战92# 视频演示何用 CSS 创作一颗逼真土星

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

    springDevBird 评论0 收藏0
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)

    摘要:过往项目年月份项目汇总共个项目年月份项目汇总共个项目年月份项目汇总共个项目年月份发布的项目前端每日实战专栏每天分解一个前端项目,用视频记录编码过程,再配合详细的代码解读,是学习前端开发的活的参考书视频演示如何用纯创作一台咖啡机视频演示如何用 过往项目 2018 年 6 月份项目汇总(共 27 个项目) 2018 年 5 月份项目汇总(共 30 个项目) 2018 年 4 月份项目汇总(...

    ghnor 评论0 收藏0
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)

    摘要:过往项目年月份项目汇总共个项目年月份项目汇总共个项目年月份项目汇总共个项目年月份发布的项目前端每日实战专栏每天分解一个前端项目,用视频记录编码过程,再配合详细的代码解读,是学习前端开发的活的参考书视频演示如何用纯创作一台咖啡机视频演示如何用 过往项目 2018 年 6 月份项目汇总(共 27 个项目) 2018 年 5 月份项目汇总(共 30 个项目) 2018 年 4 月份项目汇总(...

    avwu 评论0 收藏0

发表评论

0条评论

cyqian

|高级讲师

TA的文章

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