首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CSS 实现网格背景效果

CSS 实现网格背景效果

作者头像
Cell
发布2023-09-03 08:38:13
发布2023-09-03 08:38:13
1.2K0
举报
文章被收录于专栏:Cell的前端专栏Cell的前端专栏

本文将介绍如何使用 linear-gradientbackground-size 等属性来实现网格背景效果。

前言

最近在开发一个拖拽式仪表盘时,需要在拖拽组件时添加网格辅助标线来帮助布局和对齐元素。

最先想到的是使用 CSS 来实现这个效果,经过一番尝试,发现可以通过使用 CSS 的一些技术点,轻松实现不同类型的网格背景效果,包括实线网格和虚线网格。

前驱知识

在开始之前,我们需要了解一些必要的 CSS 属性和知识点。

  • linear-gradient:CSS linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片。其结果属于<gradient>数据类型,是一种特别的<image>数据类型。
  • radial-gradientradial-gradient() CSS 函数创建一个图像,该图像由从原点辐射的两种或多种颜色之间的渐进过渡组成。它的形状可以是圆形或椭圆形。函数的结果是 <gradient> 数据类型的对象。这是一种特别的 <image>
  • background-size
  • background-repeat
  • background-position
  • ::before::after 伪元素

实线网格

这个效果,我最初是在刷掘金的时候发现的,掘金文章内容区的背景一个实线网格,呈现出的效果类似一页学生时代的记事本,当时觉得很有意思,于是扒下来当作了现在博客文章内容的背景。

实线网格的实现思路是使用 linear-gradient 来绘制横向和纵向的网格线,然后通过 background-size 来控制网格线的间距。

具体代码如下:

1 2 3 4 5

.grid { background-image: linear-gradient(to right, rgba(60, 10, 30, 0.04) 1px, transparent 0), linear-gradient(to bottom, rgba(60, 10, 30, 0.04) 1px, transparent 0); background-size: 20px 20px; }

上面的代码中,background-image 属性使用了两个 linear-gradient,通过渐变颜色从 rgba(60, 10, 30, 0.04)transparent 实现了横向和纵向的网格线。通过指定 background-size20px 20px,设置了背景大小为 20px,由于 background-repeat 默认为 repeat,所以就实现了 20px 间距的网格线。

虚线网格

虚线网格的实现思路需要借助 ::before::after 伪元素,然后还是通过类似实线的思路实现网格线,然后两个伪元素叠加在一起,从而实现虚线网格。

未做实例

点阵网格

这里把渐变修改为径向渐变就实现点点背景了,原理和前面说的都是一样的。

1 2 3 4

.grid { background-image: radial-gradient(circle , #5a5a5a .5px, transparent .5px); background-size: 20px 20px; }

总结

最后为了实现我在实际开发中的需求,我还需要控制网格宽度为容器的 1/24,这里就需要使用 calc() 函数来计算了。

1 2 3 4 5

/* 背景显示网格辅助线(宽:1/24 高:40+8px) */ background-image: linear-gradient(90deg, rgba(60, 10, 30, 0.04) 1px, transparent 0), linear-gradient(1turn, rgba(60, 10, 30, 0.04) 1px, transparent 0); background-size: calc((100% - 8px) / 24) 48px; background-position: 4px 4px;

1 2 3 4

/* 或者点阵网格辅助线(宽:1/24 高:40+8px) */ background-image: radial-gradient(circle , #5a5a5a .5px, transparent .5px); background-size: calc((100% - 8px) / 24) 48px; background-position: 24px 24px;

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-022,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 前驱知识
  • 实线网格
  • 虚线网格
  • 点阵网格
  • 总结
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档