如何使用CSS的Grid布局实现小狗邮票(附源码)

本篇文章给大家带来的内容是关于如何使用css的grid布局实现小狗邮票(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

1958362444-5ba9a3d852436_articlex.png

源代码下载

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

代码解读

定义 dom,容器表示邮票:

居中显示:

立即学习“前端免费学习笔记(深入)”;

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

设置容器尺寸:

.stamp {    position: relative;    width: 40.5em;    height: 71em;    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.5% 0, 104.5% 0;}.stamp::after {    left: 1.5em;    background-repeat: repeat-x;    background-position: 0 -2.5%, 0 102.5%;}

html 文件中增加小狗的 dom 元素,子元素分别表示耳朵、头部、眼睛、舌头、身体、尾巴和爪子:

设置 grid 布局的行列尺寸:

.puppy {    display: grid;    grid-template-columns: 10em 22.5em 8em;    grid-template-rows: 21em 12.5em 3.75em 22.5em;    background-color: tan;    padding: 2em;    margin-top: -1em;}

画出小狗的头部,跨第1列和第2列、第2行和第3行,是一个半圆形:

.head {    grid-column: 1 / 3;    grid-row: 2 / 4;    border-bottom-left-radius: calc(12.5em + 3.75em);    border-bottom-right-radius: calc(12.5em + 3.75em);    background-color: bisque;}

用伪元素画出鼻子,是一个扇形,多余的部分被隐藏了:

.head {    position: relative;    overflow: hidden;}.head::before {    content: '';    position: absolute;    width: 7em;    height: 7em;    border-bottom-right-radius: 100%;    background-color: sienna;}

画出半圆形的眼晕:

.eyes {    grid-column: 2;    grid-row: 2;    justify-self: end;    position: relative;    height: 10.5em;    width: 21em;    border-radius: 0 0 10.5em 10.5em;    background-color: sienna;}

用径向渐变画出眼珠:

.eyes {    background-image: radial-gradient(        circle at 37% 33%,        black 1.4em,        transparent 1.4em    );}

画出半圆形的耳朵:

.ear {    grid-column: 2;    grid-row: 1;    justify-self: end;    width: 10.5em;    border-radius: 21em 0 0 21em;    background-color: sienna;}

画出扇形的舌头:

.tongue {    grid-column: 1;    grid-row: 3;    width: 5.5em;    height: 5.5em;    background-color: indianred;    border-bottom-left-radius: 100%;}

画出扇形的身体:

.body {    grid-column: 2;    grid-row: 4;    background-color: sienna;    border-top-left-radius: 100%;}

用伪元素,通过阴影画出中蹲着的腿:

.body {    position: relative;    overflow: hidden;}.body::after {    content: '';    position: absolute;    height: 50%;    width: 100%;    border-radius: 11.25em 11.25em 0 0;    box-shadow: 2em 0 4em rgba(0, 0, 0, 0.3);    bottom: 0;}

画出半圆形的尾巴:

.tail {    grid-column: 1;    grid-row: 4;    justify-self: end;    align-self: end;    height: 17.5em;    width: 8.75em;    background-color: bisque;    border-radius: 17.5em 0 0 17.5em;}

画出半圆形的小爪子:

.foot {    grid-column: 3;    grid-row: 4;    align-self: end;    height: 4em;    background-color: bisque;    border-radius: 4em 4em 0 0;}

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

Puppy comehope 80

设置标题的文字样式:

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

设置作者的文字样式:

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

大功告成!

以上就是如何使用CSS的Grid布局实现小狗邮票(附源码)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1612076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何使用css3新增属性content?content属性的使用(代码实例)
上一篇 2025年12月24日 02:44:50
图文详解图片水平垂直居中的五种方法(附代码)
下一篇 2025年12月24日 02:45:00

相关推荐

  • VSCode怎么设置Tab键_VSCode调整Tab大小和缩进的相关配置教程

    VSCode中Tab行为由editor.tabSize和editor.insertSpaces控制,前者定义缩进宽度,后者决定插入空格或Tab字符。通过设置editor.detectIndentation可开启自动检测文件缩进风格,避免设置冲突。可在用户或工作区级别配置,亦可通过settings.j…

    2026年9月5日
    000
  • 解决 Bootstrap 4.4 Navbar 折叠图标不显示问题:完整指南

    本教程旨在解决 Bootstrap 4.4 导航栏在移动端折叠时,汉堡包图标不显示但功能正常的常见问题。核心原因通常是 Bootstrap CSS 或 JavaScript 依赖(如 jQuery, Popper.js)的 CDN 引入不完整或不正确。文章将提供一个完整的、可运行的 HTML 模板,…

    2026年9月5日
    100
  • win10耳机插上没反应怎么办_win10耳机无声连接异常解决方案

    首先检查耳机物理连接并确认设备是否被禁用,再设置默认播放设备,更新音频驱动,最后调整Realtek音频管理器,确保前端接口功能开启。 如果您在使用Windows 10电脑时插入耳机但没有任何声音或系统无反应,可能是由于音频设备未被正确识别或设置错误导致的。以下是解决此问题的具体步骤。 本文运行环境:…

    2026年9月5日
    200
  • 死磕 IO 流?你都磕对地方了么

    死磕 IO 流?你都磕对地方了么死磕 IO 流?你都磕对地方了么死磕 IO 流?你都磕对地方了么死磕 IO 流?你都磕对地方了么

    在日常开发中,我们经常会接触到 io 流,例如在处理文件上传下载、数据传输以及设计模式等方面。io 流是这些操作的基础,因此今天我们将深入探讨 java 中 io 流的相关知识点。 本文将涵盖以下主要内容: 文件对象流概述字节流与字符流文件对象与文件路径Java 标准库 java.io 提供了 Fi…

    2026年9月5日 用户投稿
    200
  • 一款入门级接口测试工具:Postman

    一款入门级接口测试工具:Postman一款入门级接口测试工具:Postman一款入门级接口测试工具:Postman一款入门级接口测试工具:Postman

    postman是一款非常适合开发人员和测试人员使用的api工具。您可以访问postman的官方网站获取更多信息:postman官网。 Postman不仅可以调试简单的CSS、HTML和脚本等网页基本信息,还能够发送几乎所有类型的HTTP请求。 Postman支持多种操作系统,包括Mac、Window…

    2026年9月5日 用户投稿
    100
  • 123网盘怎么在线预览文档文件_123网盘在线文档预览方法

    123网盘支持在线预览多种文档,包括TXT、CSV、DOC、XLS、PPT、PDF及各类代码文件;用户只需登录账号,点击文件即可在网页或App中查看,支持缩放翻页;注意文件大小不超过50MB且未加密损坏,网络良好时加载更流畅。 123网盘支持在线预览多种文档文件,无需下载即可查看内容,方便快捷。只要…

    2026年9月5日
    400
  • 【紧急通知】下载R包却联网失败?初学者的痛

    近期,我们收到了许多初学者关于r包安装困难的求助信息,特别是在下载r包时出现联网失败的问题。以下是我们提供的解决方案,仍然是之前研发好的 url.method 配置方法: 在Windows电脑上安装R包和下载文件时,可以通过以下代码解决问题: options(download.file.method…

    2026年9月5日
    100
  • AO3官方入口快速通道 ArchiveofOurOwn(AO3)官方主页快速链接

    archive of our own,通常简称为ao3,是一个由爱好者为爱好者创建的非商业、非盈利的同人作品托管平台。它隶属于非营利组织“再创作组织”(organization for transformative works, otw),致力于保存和推广各类粉丝创作的文化作品。这里汇聚了来自世界各…

    2026年9月5日
    3100
  • Seer如何预览Markdown文件_SeerMarkdown文件预览的技巧

    首先确认Seer中.md文件是否正确关联为Markdown类型并启用实时渲染,接着通过自定义CSS优化预览样式,检查MathJax或Mermaid等插件兼容性,最后使用Command+R快捷键强制刷新预览以确保内容更新。 如果您在使用 Seer 快速预览文件时发现 Markdown 文件无法正确渲染…

    2026年9月5日
    300
  • VSCode中怎么快速注释_VSCode快速添加和移除注释的快捷键教程

    掌握VSCode注释快捷键可大幅提升效率:行注释用Ctrl+/(Win/Linux)或Cmd+/(macOS),块注释用Shift+Alt+A(Win/Linux)或Shift+Option+A(macOS),系统会根据文件类型自动匹配注释语法,如JavaScript用//和/ /,Python用#…

    2026年9月5日
    100
  • mPDF页面分页机制解析与控制局限性

    本文深入探讨mPDF在HTML转PDF过程中处理页面分页的机制及其固有限制。我们将阐明mPDF对自动分页的控制能力有限,且不提供“孤行”或“寡行”保护,这意味着将所有内容强制输出到单一PDF页面的需求,在内容较长时,可能难以通过mPDF直接实现。 理解mPDF的页面分页核心机制 mpdf是一个强大的…

    2026年9月5日
    100
  • VSCode怎么运行UI代码_VSCode前端用户界面代码执行与调试教程

    VSCode通过集成开发服务器、调试工具和自动化任务实现UI代码运行与调试。首先使用Live Server预览静态页面,或在集成终端运行npm/yarn命令启动框架开发服务器;接着配置launch.json并结合Debugger for Chrome扩展,在VSCode中设置断点调试前端代码;最后通…

    2026年9月5日
    300
  • vs2010怎么在页面使用控件

    在vs2010中利用控件进行页面设计是一项关键的开发能力。下面将逐步讲解如何在网页中使用控件完成界面构建。 向页面添加控件 启动vs2010后,首先创建一个新项目,选择合适的项目模板,例如ASP.NET Web应用程序。接着,在解决方案资源管理器中定位到目标页面文件(通常为.aspx格式),双击该文…

    2026年9月5日
    000
  • sw插件composer怎么做动画教程

    sw插件composer怎么做动画教程sw插件composer怎么做动画教程sw插件composer怎么做动画教程sw插件composer怎么做动画教程

    通过Composer集成动画库(如Swiper)可以高效开发动画。Composer简化了依赖管理,使安装和更新变得容易。使用Swiper可以创建轮播图动画,配置选项包括自动播放和导航按钮。常见问题包括冲突、性能和浏览器兼容性,可通过优化代码和使用调试工具来解决。根据项目需求选择合适的动画库,例如Sw…

    2026年9月5日 用户投稿
    200
  • VSCode代码空格怎么解决_VSCode空格与缩进格式问题处理教程

    答案是通过配置VSCode设置、使用.editorconfig文件、集成Prettier等格式化工具,并统一团队规范,可有效解决代码缩进与空格问题。具体包括调整tabSize、insertSpaces、detectIndentation等编辑器设置,禁用自动检测以避免混乱,配合Prettier、ES…

    2026年9月4日
    200
  • 解决PHP Web应用数据更新延迟:浏览器缓存管理与实时内容展示

    本文深入探讨了PHP应用在本地开发环境中,当JSON数据或图片文件更新后,Web视图未能及时反映最新内容的问题。核心原因在于浏览器缓存机制。文章将详细介绍多种有效的解决方案,包括利用查询参数强制缓存失效、通过修改文件名实现版本控制,以及配置服务器端的缓存策略,旨在帮助开发者确保Web应用能够准确、实…

    2026年9月4日
    200
  • VSCode怎么插动图_VSCode插入GIF动图与预览动态效果教程

    VSCode无法直接在编辑器中播放GIF,但可通过Markdown预览功能实现动图展示。具体步骤为:将GIF文件放入项目目录或使用网络链接,在.md文件中用![描述](路径)语法插入,再通过Ctrl+Shift+V打开预览窗口即可动态查看。此方法利用内置渲染引擎,不需额外插件,适用于文档编写;也可安…

    2026年9月4日
    400
  • 智能问答系统怎么搭建_基于BERT的问答机器人开发

    智能问答系统怎么搭建_基于BERT的问答机器人开发智能问答系统怎么搭建_基于BERT的问答机器人开发智能问答系统怎么搭建_基于BERT的问答机器人开发智能问答系统怎么搭建_基于BERT的问答机器人开发

    基于BERT的智能问答系统通过微调预训练模型实现精准问答,需经历数据预处理、模型选择、微调、评估与部署等步骤;为提升性能,应根据资源选择合适模型(如BERT-base或轻量变体),采用正则化、早停、数据增强等方法防止过拟合,并通过模型压缩、知识蒸馏、批量推理及缓存机制优化推理速度。 ☞☞☞AI 智能…

    2026年9月4日 用户投稿
    000
  • 基于PHP实现登录用户专属文件下载访问控制

    本教程旨在解决用户登录后才能下载特定文件,而未登录用户即使知晓文件路径也无法访问的问题。通过介绍一种基于PHP脚本的解决方案,替代传统.htaccess的限制,实现对文件下载的精细化权限控制,确保只有经过身份验证的用户才能获取指定资源。 引言:登录用户文件下载的挑战 在web应用中,我们经常需要提供…

    2026年9月4日
    100
  • PHP:将扁平数组转换为树状结构

    本文介绍了如何使用 PHP 将一个包含父子关系的扁平数组转换为树状结构。通过递归函数 buildTree,我们可以根据 parent_id 将数组元素组织成具有层级关系的树形结构,方便数据展示和操作。本文提供了详细的代码示例和解释,帮助你理解和应用这种数据转换方法。 在实际开发中,我们经常会遇到需要…

    2026年9月4日
    200

发表回复

登录后才能评论
关注微信