当前位置: 首页 > article >正文

用纯 CSS 实现网格背景

是不是在日常开发中经常遇到实现网格的需求,网格通常对网页中展示的元素能起到很好的定位和对齐作用。

这里介绍如何只通过 CSS 来实现这个需求?

使用背景图

这里我们的背景图使用 SVG 来创建,首先,创建绘出一个正方形,填充白色;然后通过矩形实现垂直和水平的线条,进而分别对它们进行定位居中。

<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40'>
  <rect width='40' height='40' fill='#fff'></rect>
  <rect x='50%' width='1' height='100%' fill='rgb(203 213 225)'></rect>
  <rect y='50%' width='100%' height='1' fill='rgb(203 213 225)'></rect>
</svg>

效果如下:

有了背景图片,我们对给定的区域设置背景

.grid {
  background-image: url('/path/to/grid.svg');
}

如果要避免加载额外的资源,我们也可以通过图片二进制数据的方式嵌入:

.grid {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Crect width='40' height='40' fill='%23fff' /%3E%3Crect x='50%' width='1' height='100%' fill='rgb(203 213 225)' /%3E%3Crect y='50%' width='100%' height='1' fill='rgb(203 213 225)' /%3E%3C/svg%3E%0A");
}

默认情况下,背景图像会在垂直和水平方向上重复,这样实现的网格是40个像素。我们也可以通过 background-size 属性来自定义背景图的尺寸

57b1dee0c8cd1b02bf0a117aacc6ae0d.png
.grid {
  background-size: 20px;
}
35924ec7a5630b9e6dcaf7211a4a21dc.png

使用线性渐变

另一种使用 CSS 创建网格背景的方式是通过 linear-gradient() 函数来实现的。

首先选择要为其添加网格背景的元素,并设置 background-image 属性。然后,使用 linear-gradient() 函数 指定两种颜色,这两种颜色可以是相似或相同的,它们之间由线条粗细、宽度相同的透明部分分隔开来。

.grid {
  background-image: linear-gradient(to right, gray 1px, transparent 1px);
}

这里的 1px 代表网格的线条宽度,你也可以设置成你想要的宽度。

如果要实现水平线条,只需要把 to right 改为 to botton 。而网格实现既需要横向的线条,也需要纵向的线条。

.grid {
  background-image:
    linear-gradient(to right, gray 1px, transparent 1px),
    linear-gradient(to bottom, gray 1px, transparent 1px);
}

最终的样式:

.grid {
  height: 200px;
  background-image:
      linear-gradient(to right, rgb(203 213 225) 1px, transparent 1px),
      linear-gradient(to bottom, rgb(203 213 225) 1px, transparent 1px);
  background-size: 20px 20px;
  background-position: center center;
}
4e180d5564e8d6beb394d1b3f6e03b7a.png

网状点阵背景

由相同原理,我们来实现一个网状点阵背景,这里需要用到 radial-gradient 函数,创建圆形填充背景色。

.grid {
  height: 200px;
  background-image: radial-gradient(circle, rgb(203 213 225) 2px, #fff 2px);
  background-size: 20px 20px;
  background-position: center center;
}
60e27fd41e3c4aa0c000610851248dd0.png

拓展

另外关注一下这种模拟透明背景样式的实现原理:

.grid {
  height: 200px;
  background-image:
    linear-gradient(45deg, #8d8b8b 25%, transparent 0),
    linear-gradient(-45deg, #8d8b8b 25%, transparent 0),
    linear-gradient(45deg, transparent 75%, #8d8b8b 0),
    linear-gradient(-45deg, transparent 75%, #8d8b8b 0);
  background-position: 0 0, 0 10px, 10px -10px, -10px 0;
  background-size: 20px 20px;
}
028777b55a4a027a18cecc646a7bf333.png

http://www.kler.cn/news/156275.html

相关文章:

  • 【Node.js】Node.js环境下载与安装教程(Windows系统)
  • 《系统架构设计师教程(第2版)》第2章-计算机系统基础知识-02-计算软件
  • 34、AD/DA
  • Vue 与 React
  • Python标准库:datetime模块【侯小啾python领航班系列(二十五)】
  • 【python爬虫】设计自己的爬虫 2. 数据保存封装 mongodb,mysql和elasticsearch
  • SQL -高阶3
  • Linux系统centos7防火墙firewall开放IP及端口命令
  • 2023.12.3 hive-sql日期函数小练习
  • k8s中批量处理Pod应用的Job和CronJob控制器、处理守护型pod的DaemonSet控制器介绍
  • 深入理解Go语言GC机制
  • SAP_ABAP_RZ11解决SAP运行超时问题 TIME_OUT / rdisp/scheduler/prio_high/max_runtime
  • 最强Node js 后端框架学习看这一篇文章就够
  • 内衣洗衣机哪个牌子好用?小型洗衣机五大排名
  • 在项目根目录未找到 app.json
  • leetcode:232. 用栈实现队列
  • Mybatis-Plus实现逻辑删除
  • C++ 实现微信退款和对账示例代码
  • ASP.NET 网上选课系统的设计与实现
  • 二叉查找树和红黑树
  • 卖家低价侵权了怎么处理
  • 一款自动帮你生成UI界面和代码的AI神器
  • MySQL练习题,学生成绩查询练习题,附带答案
  • JIRA部分数据库结构
  • Spring AOP解析
  • 基于Java SSM框架实现美好生活九宫格日志网站系统项目【项目源码+论文说明】
  • Docker push 命令
  • 在CentOS7下安装Docker与Docker Compose
  • 举例说明自然语言处理(NLP)技术。
  • 二分查找算法:搜索有序数组中目标元素的利器