效果预览

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

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

可交互视频

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

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

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

源代码下载

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

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

代码解读

定义 dom,容器表示邮票:

<div class="stamp">
</div>

居中显示:

body {margin: 0;height: 100vh;display: flex;align-items: center;justify-content: center;background-color: teal;
}

设置容器尺寸:

.stamp {position: relative;width: 45em;height: 63em;font-size: 6px;padding: 5em;background-color: white;
}

用重复背景绘制出邮票的齿孔:

.stamp {display: flex;flex-direction: column;align-items: center;justify-content: center;
}.stamp::after,
.stamp::before {content: '';width: 100%;height: 100%;position: absolute;background: radial-gradient(circle, teal 50%, transparent 50%),radial-gradient(circle, teal 50%, transparent 50%);background-size: 3.5em 3.5em;
}.stamp::before {top: 1.5em;background-repeat: repeat-y;background-position: -4% 0, 104% 0;
}.stamp::after {left: 1.5em;background-repeat: repeat-x;background-position: 0 -3%, 0 103%;
}

在 html 文件中增加小鸡的 dom 元素,子元素分别表示耳朵、头部、身体、尾巴下部、尾巴上部、腿、爪子:

<div class="stamp"><div class="squirrel"><div class="ear"></div><div class="head"></div><div class="body"></div><div class="tail-start"></div><div class="tail-end"></div><div class="leg"></div><div class="foot"></div></div>
</div>

设置 grid 布局的行列尺寸:

.squirrel {display: grid;grid-template-columns: 11.5em 7em 15.5em 10.5em;grid-template-rows: 13em 5em 11.5em 22.5em;background-color: silver;padding: 2em;margin-top: -2em;
}

画出扇形的头部:

.head {grid-column: 1;grid-row: 3;background-color: chocolate;border-bottom-left-radius: 100%;
}

用径向渐变画出眼睛:

.head {background-image: radial-gradient(circle at 58% 22%,black 1.4em,transparent 1.4em);
}

画出扇形的耳朵:

.ear {grid-column: 2;grid-row: 2;width: 5em;background-color: bisque;border-bottom-right-radius: 100%;
}

画出扇形的身体:

.body {grid-column: 2 / 4;grid-row: 4;background-color: chocolate;border-top-right-radius: 100%;position: relative;overflow: hidden;
}

用伪元素,通过阴影画出蜷曲的腿:

.body::before {content: '';position: absolute;width: 100%;height: 50%;box-shadow: 2em -2em 4em rgba(0, 0, 0, 0.3);bottom: 0;--w: calc((7em + 15.5em) / 2);border-top-left-radius: var(--w);border-top-right-radius: var(--w);
}

画出半圆形的小爪子:

.foot {grid-column: 1;grid-row: 4;height: 4em;width: 8em;background-color: saddlebrown;justify-self: end;align-self: end;border-radius: 4em 4em 0 0;filter: brightness(0.8);
}

画出半圆形的尾巴下部:

.tail-start {grid-column: 4;grid-row: 4;--h: calc(22.5em - 1.5em);height: var(--h);background-color: bisque;align-self: end;border-radius: 0 var(--h) var(--h) 0;
}

画出半圆形的尾巴上部:

.tail-end {grid-column: 3;grid-row: 1 / 5;--h: calc(13em + 5em + 11.5em + 1.5em);height: var(--h);background-color: chocolate;border-radius: var(--h) 0 0 var(--h);
}

在 dom 中再增加一些文本,包括标题、作者和面值:

<div class="stamp"><div class="puppy"><!-- 略 --></div><p class="text"><span class="title">Squirrel</span><span class="author">comehope</span><span class="face-value">200</span></p>
</div>

设置标题的文字样式:

.text {position: relative;width: calc(100% + 2em * 2);height: 6em;font-family: sans-serif;
}.text .title {position: absolute;font-size: 6em;font-weight: bold;color: darkslategray;
}

设置作者的文字样式:

.text .author {position: absolute;font-size: 3em;bottom: -1.2em;color: dimgray;
}

设置面值的文字样式:

.text .face-value {position: absolute;font-size: 14em;right: 0;line-height: 0.9em;color: darkcyan;
}

大功告成!

前端每日实战:143# 视频演示如何用 CSS 的 Grid 布局创作一枚小松鼠邮票相关推荐

  1. 前端每日实战:142# 视频演示如何用 CSS 的 Grid 布局创作一枚小鸡邮票

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/mGZbmQ 可交互视频 此视频是可 ...

  2. 前端每日实战 2018 年 9 月份项目汇总(共 26 个项目)

    过往项目 2018 年 8 月份项目汇总(共 29 个项目) 2018 年 7 月份项目汇总(共 29 个项目) 2018 年 6 月份项目汇总(共 27 个项目) 2018 年 5 月份项目汇总(共 ...

  3. 前端每日实战:108# 视频演示如何用 CSS 和 D3 创作一个抽象的黑白交叠动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/Yjomyd 可交互视频 此视频是可 ...

  4. 前端每日实战:116# 视频演示如何用 CSS 和原生 JS 开发一个监控网络连接状态的页面...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oPjWvw 可交互视频 此视频是可 ...

  5. 前端每日实战:88# 视频演示如何用 CSS 和 D3 创作火焰动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/xJdVxx 可交互视频 此视频是可 ...

  6. 前端每日实战 2018 年 6 月份项目汇总(共 27 个项目)

    过往项目 2018 年 5 月份项目汇总(共 30 个项目) 2018 年 4 月份项目汇总(共 8 个项目) 2018 年 6 月份发布的项目 <前端每日实战>专栏每天分解一个前端项目, ...

  7. HTML页面显示透视效果,《前端每日实战》第176号作品:用透视图表现 HTML、CSS 和 JS 的关系...

    今年年初时我偶然看到了下面这张图片,顺手把它记在了微博里,近日抽时间把它们制作成了交互页面,本文记录了开发的过程. 效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接 ...

  8. 前端每日实战:163# 视频演示如何用原生 JS 创作一个多选一场景的交互游戏(内含 3 个视频)...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/LXMzRX 可交互视频 此视频是可 ...

  9. 前端每日实战:164# 视频演示如何用原生 JS 创作一个数独训练小游戏(内含 4 个视频)...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/mQYobz 可交互视频 此视频是可 ...

最新文章

  1. oauth2 单点登录_Spring Security Oauth2和Spring Boot实现单点登录
  2. uni-app接口封装
  3. node.js实现图片上传(包含缩略图)
  4. php curl用法
  5. 在床上玩手机,千万不能把手机放下!
  6. t–sql pl–sql_SQL Server处理器性能指标–第4部分–处理器指标有助于更深入的调查和故障排除
  7. Python Tricks(十八) —— range
  8. baseline如何发布_baseline-简单的字符串基线。-Dan Gass
  9. Windows 10 如何离线安装NetFx3
  10. 大一c语言基础试题及答案,大一大学计算机基础期末考试试题「附答案」
  11. 电子元器件篇—共模电感
  12. 汇编语言10堆栈平衡
  13. Linux系统使用git命令制作patch补丁详解
  14. sdut 1299最长上升子序列
  15. 深刻理解原型图设计的核心
  16. 基于TADK的SQLI检测
  17. 适合我的前端学习路线(学习前端不迷路)
  18. Unity利用Input类实现摄像机镜头拉近与拉远
  19. 计算机毕业设计Java智慧防疫上报系统小程序端(源码+系统+mysql数据库+Lw文档)
  20. 绍兴一中信心赛 T1排列

热门文章

  1. 一文拆解中国火星车着陆全过程
  2. 科技议题“破圈”有利还是有弊|观点
  3. 记忆的天空:智能进化三部曲
  4. 超维计算让AI有记忆和反应,还能解决自动驾驶难题
  5. 德国图宾根大学发布可扩展「对抗黑盒攻击」,仅通过观察决策即可愚弄深度神经网络
  6. 博通收购高通12张PPT深度解析!
  7. Google智能生态链的演进路径
  8. 漫话:如何给女朋友解释为什么 Java 中1000==1000为 false,而100==100为 true?
  9. @程序员,什么键盘最耐用?| 每日趣闻
  10. Python实现前端AES加密方式分析,***密码学必备!