如何只用 CSS 制作网格?

来源:how-to-make-a-grid-like-graph-paper-grid-with-just-css

在看 用于打印到纸张的 CSS 这篇文章时,对其中的网格比较好奇,作者提供了 stackoverflow 的链接,就看到了来源的这个问题和众多回复。本文从里面挑选了一些个人比较喜欢的样式,贴在下面展示。

为了避免其他样式影响网格的效果,效果中的内容和样式代码中的不完全一样。

样式1

效果:

sample text

示例文字

样式代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
<style>
html
{
width: 100%;
height: 100%;
background-color: lightblue;

background-size: 1cm 1cm;
background-image:
linear-gradient(to right, grey 1px, transparent 1px),
linear-gradient(to bottom, grey 1px, transparent 1px);
}
</style>
<body>
<h1>Sample text</h1>
<h2>Sample text</h2>
<h3>Sample text</h3>
<h4>Sample text</h4>
<p>sample text</p>
<h1>示例文字</h1>
<h2>示例文字</h2>
<h3>示例文字</h3>
<h4>示例文字</h4>
<p>示例文字</p>
</body>
</html>

打印预览无边距时,选择A4纸时的尺寸和格子数量刚好一样,用这种背景比较方便做排版和套打,下图是打印后的效果:

和A4纸的尺寸 21.0 x 29.7厘米(8.27 x 11.69英寸) 是一致的。

样式2

效果:

sample text

示例文字

样式代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html>
<style>
html
{
width: 100%;
height: 100%;
background-color: lightblue;

background-size: 40px 40px;
background-image: radial-gradient(circle, #000000 1px, rgba(0, 0, 0, 0) 1px);
}
</style>
<body>
<h1>Sample text</h1>
<h2>Sample text</h2>
<h3>Sample text</h3>
<h4>Sample text</h4>
<p>sample text</p>
<h1>示例文字</h1>
<h2>示例文字</h2>
<h3>示例文字</h3>
<h4>示例文字</h4>
<p>示例文字</p>
</body>
</html>

样式3

效果:

sample text

示例文字

样式代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html>
<html>
<style>
html
{
width: 100%;
height: 100%;
background-color: lightblue;

background:
linear-gradient(-90deg, rgba(0,0,0,.05) 1px, transparent 1px),
linear-gradient(rgba(0,0,0,.05) 1px, transparent 1px),
linear-gradient(-90deg, rgba(0, 0, 0, .04) 1px, transparent 1px),
linear-gradient(rgba(0,0,0,.04) 1px, transparent 1px),
linear-gradient(transparent 3px, #f2f2f2 3px, #f2f2f2 78px, transparent 78px),
linear-gradient(-90deg, #aaa 1px, transparent 1px),
linear-gradient(-90deg, transparent 3px, #f2f2f2 3px, #f2f2f2 78px, transparent 78px),
linear-gradient(#aaa 1px, transparent 1px),
#f2f2f2;
background-size:
4px 4px,
4px 4px,
80px 80px,
80px 80px,
80px 80px,
80px 80px,
80px 80px,
80px 80px;
}
</style>
<body>
<h1>Sample text</h1>
<h2>Sample text</h2>
<h3>Sample text</h3>
<h4>Sample text</h4>
<p>sample text</p>
<h1>示例文字</h1>
<h2>示例文字</h2>
<h3>示例文字</h3>
<h4>示例文字</h4>
<p>示例文字</p>
</body>
</html>

样式4

效果:

sample text

示例文字

样式代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html>
<style>
html
{
width: 100%;
height: 100%;
background-color: lightblue;

--grid-size: 30px;
--grid-strength: 1px;
--grid-dash: 10px;
--grid-gap: 5px;
--grid-color: #ddd;
--paper-color: #fff;

background-color: var(--paper-color);
background-size: var(--grid-dash) var(--grid-dash), var(--grid-size) var(--grid-size);
background-image:
linear-gradient(to bottom, transparent var(--grid-gap), var(--paper-color) var(--grid-gap)),
linear-gradient(to right, var(--grid-color) var(--grid-strength), transparent var(--grid-strength)),
linear-gradient(to right, transparent var(--grid-gap), var(--paper-color) var(--grid-gap)),
linear-gradient(to bottom, var(--grid-color) var(--grid-strength), transparent var(--grid-strength));

}
</style>
<body>
<h1>Sample text</h1>
<h2>Sample text</h2>
<h3>Sample text</h3>
<h4>Sample text</h4>
<p>sample text</p>
<h1>示例文字</h1>
<h2>示例文字</h2>
<h3>示例文字</h3>
<h4>示例文字</h4>
<p>示例文字</p>
</body>
</html>

如何只用 CSS 制作网格?
https://blog.mybatis.io/post/eee20125.html
作者
Liuzh
发布于
2024年9月20日
许可协议