如何只用CSS制作一个网格(像图形纸网格)?我只想只用CSS制作一个虚拟的网格纸。
dz6r00yl1#
要制作网格,您可以使用CSS渐变,它适用于所有现代浏览器(请参阅Caniuse)。使用线性渐变绘制线网格:
body { background-size: 40px 40px; background-image: linear-gradient(to right, grey 1px, transparent 1px), linear-gradient(to bottom, grey 1px, transparent 1px); }
使用径向渐变绘制带点角的网格:
body { background-size: 40px 40px; background-image: radial-gradient(circle, #000000 1px, rgba(0, 0, 0, 0) 1px); }
3vpjnl9f2#
body { 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; }
4smxwvx53#
既然你提到了纸:
div { background-color: #fff; background-size: 100% 1.2em; background-image: -webkit-linear-gradient(0deg, transparent 79px, #abced4 79px, #abced4 81px, transparent 81px), -webkit-linear-gradient(#eee .05em, transparent .05em); background-image: -moz-linear-gradient(0deg, transparent 79px, #abced4 79px, #abced4 81px, transparent 81px), -moz-linear-gradient(#eee .05em, transparent .05em); background-image: -ms-linear-gradient(0deg, transparent 79px, #abced4 79px, #abced4 81px, transparent 81px), -ms-linear-gradient(#eee .05em, transparent .05em); background-image: -o-linear-gradient(0deg, transparent 79px, #abced4 79px, #abced4 81px, transparent 81px), -o-linear-gradient(#eee .05em, transparent .05em); background-image: linear-gradient(0deg, transparent 79px, #abced4 79px, #abced4 81px, transparent 81px), linear-gradient(#eee .05em, transparent .05em); -pie-background: linear-gradient(0deg, transparent 79px, #abced4 79px, #abced4 81px, transparent 81px) 0 0 / 100% 1.2em, linear-gradient(#eee .05em, transparent .05em) 0 0 / 100% 1.2em #fff; behavior: url(/PIE.htc); }
<div style="width: 200px; height: 200px"></div>
最后一行:behavior: url(/PIE.htc);是一个名为css3 pie的插件,它增加了对ie 6-9的支持,我相信。事实上,这个例子是从他们的网站上取下来的,那里有很多更有趣的例子:http://css3pie.com/demos/gradient-patterns/
behavior: url(/PIE.htc);
hujrc8aj4#
一个conic-gradient()就可以完成这项工作
conic-gradient()
html { background: conic-gradient(from 90deg at 1px 1px,#0000 90deg,blue 0) 0 0/50px 50px; }
另一个概念:
html { --s: 100px; /* control the size */ --_g: #0000 90deg,#366 0; background: conic-gradient(from 90deg at 2px 2px,var(--_g)) 0 0/var(--s) var(--s), conic-gradient(from 90deg at 1px 1px,var(--_g)) 0 0/calc(var(--s)/5) calc(var(--s)/5); }
polkgigr5#
你能做的就是抓取一个像这样的网格图像:
然后用CSS平铺它:
#background { background: url('path/to/grid-image.png'); }
所以,是的,这不仅仅是CSS -你还需要图像,但解决方案应该是相当干净的。下面是它的行动:
#background { width: 200px; height: 160px; background: url('http://i.stack.imgur.com/GySvQ.png'); }
<div id="background"></div>
ulydmbyx6#
使用png和base64完成。可以使用background-size修改比例
background-size
.square-grid { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAHlBMVEUAAABkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGSH0mEbAAAACnRSTlMAzDPDPPPYnGMw2CgMzQAAAChJREFUKM9jgAPOAgZMwGIwKkhXQSUY0BCCMxkEYUAsEM4cjI4fwYIAf2QMNbUsZjcAAAAASUVORK5CYII='); background-size: 15px; } .full-size { width: 100vw; height: 100vh; }
<div class="square-grid full-size" />
8e2ybdfx7#
如果你想得到更粗的线条,并且不介意使用::before和::after,你可以这样做:
body { position: relative; border-radius: 0 !important; background-color: #ecefff; background-size: 0.5rem 0.5rem; background-position:0.25rem 0.25rem; background-image: linear-gradient(to right, rgba(50, 100, 150, 0.1) 1px, transparent 1px), linear-gradient(to bottom, rgba(50, 100, 150, 0.1) 1px, transparent 1px); margin: 0; } body::before, body::after { content: ''; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background-size: 2.5rem 2.5rem; background-position:0.25rem 0.25rem; background-image: linear-gradient(to right, rgba(50, 100, 150, 0.1) 2px, transparent 2px), linear-gradient(to bottom, rgba(50, 100, 150, 0.1) 2px, transparent 2px); z-index: -1; } body::after { background-size: 5rem 5rem; background-image: linear-gradient(to right, rgba(50, 100, 150, 0.1) 3px, transparent 3px), linear-gradient(to bottom, rgba(50, 100, 150, 0.1) 3px, transparent 3px); }
Example in Chrome in fancybox
7条答案
按热度按时间dz6r00yl1#
要制作网格,您可以使用CSS渐变,它适用于所有现代浏览器(请参阅Caniuse)。
使用线性渐变绘制线网格:
使用径向渐变绘制带点角的网格:
3vpjnl9f2#
4smxwvx53#
既然你提到了纸:
最后一行:
behavior: url(/PIE.htc);
是一个名为css3 pie的插件,它增加了对ie 6-9的支持,我相信。事实上,这个例子是从他们的网站上取下来的,那里有很多更有趣的例子:http://css3pie.com/demos/gradient-patterns/hujrc8aj4#
一个
conic-gradient()
就可以完成这项工作另一个概念:
polkgigr5#
你能做的就是抓取一个像这样的网格图像:
然后用CSS平铺它:
所以,是的,这不仅仅是CSS -你还需要图像,但解决方案应该是相当干净的。下面是它的行动:
ulydmbyx6#
使用png和base64完成。可以使用
background-size
修改比例8e2ybdfx7#
如果你想得到更粗的线条,并且不介意使用::before和::after,你可以这样做:
Example in Chrome in fancybox