博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端每日实战:143# 视频演示如何用 CSS 的 Grid 布局创作一枚小松鼠邮票
阅读量:6568 次
发布时间:2019-06-24

本文共 3483 字,大约阅读时间需要 11 分钟。

图片描述

效果预览

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

可交互视频

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

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

源代码下载

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

代码解读

定义 dom,容器表示邮票:

居中显示:

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 元素,子元素分别表示耳朵、头部、身体、尾巴下部、尾巴上部、腿、爪子:

设置 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 中再增加一些文本,包括标题、作者和面值:

Squirrel comehope 200

设置标题的文字样式:

.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;}

大功告成!

转载地址:http://vfvjo.baihongyu.com/

你可能感兴趣的文章
海茶3 らぶデス3 入门经典教程
查看>>
pstree命令
查看>>
css选择器顺序的小技巧
查看>>
dojo 学习笔记之dojo.query - query(id) 与query(class)的差别
查看>>
Java基础加强总结(三)——代理(Proxy)
查看>>
一步一步写算法(之hash表)
查看>>
C99规范
查看>>
BZOJ3799 : 字符串重组
查看>>
数据持久化的复习
查看>>
Util应用程序框架公共操作类(八):Lambda表达式公共操作类(二)
查看>>
thinkphp查询
查看>>
iOS开发-Protocol协议及委托代理(Delegate)传值
查看>>
【BZOJ】1105: [POI2007]石头花园SKA
查看>>
MapReduce原理与设计思想
查看>>
Theano学习笔记(三)——图结构
查看>>
UVa - 11400 - Lighting System Design
查看>>
Oracle 11g 客户端使用
查看>>
luvit 被忽视的lua 高性能框架(仿nodejs)
查看>>
也许每个农村出来的码农都有个田园梦
查看>>
J2EE的13种核心技术
查看>>