如今在 CSS 中创建条纹非常容易。通过 `background-image` 属性实现的 CSS 渐变 真正地帮助了我们。我认为我应该在一个易于参考的地方记录一些变体。
普通彩色斜纹
由于 `repeating-linear-gradient()`,斜纹很容易实现。
background: repeating-linear-gradient(
45deg,
#606dbc,
#606dbc 10px,
#465298 10px,
#465298 20px
);
与其将最后一个颜色停靠点设置为 100%(或无,意味着 100%),不如将其设置为固定值。除此之外,它就会不断重复。这就是我认为的方式(放大)

查看 CodePen 上 Chris Coyier (@chriscoyier) 创建的笔 epfEc。
渐变斜纹
如果您将背景设置为普通的 `linear-gradient()`,然后使用 `repeating-linear-gradient()` 使一半的条纹完全透明,则看起来就像条纹具有渐变一样。由于存在多个背景(以及 堆叠顺序),您可以将它们全部放在同一个元素上。
background:
/* On "top" */
repeating-linear-gradient(
45deg,
transparent,
transparent 10px,
#ccc 10px,
#ccc 20px
),
/* on "bottom" */
linear-gradient(
to bottom,
#eee,
#999
);
查看 CodePen 上 Chris Coyier (@chriscoyier) 创建的笔 xhkpD。
图像上的条纹
可能是一种纹理?任何图像都可以。您可以通过使一些条纹完全透明,而另一些则完全不透明,来显示图像的一部分。或者,您可以使用任何组合。同样,多个背景允许这一切都发生在同一个元素上。
background: repeating-linear-gradient(
45deg,
rgba(0, 0, 0, 0.2),
rgba(0, 0, 0, 0.2) 10px,
rgba(0, 0, 0, 0.3) 10px,
rgba(0, 0, 0, 0.3) 20px
),
url(http://s3-us-west-2.amazonaws.com/s.cdpn.io/3/[email protected]);
查看 CodePen 上 Chris Coyier (@chriscoyier) 创建的笔 gaKyv。
任何方向,任何角度
它不必完全是 45 度。这是 `repeating-linear-gradient()` 的美妙之处。它不像这个必须对齐并重复的完美矩形,它只是一组重复的绘图指令。
background: repeating-linear-gradient(
-55deg,
#222,
#222 10px,
#333 10px,
#333 20px
);
查看 CodePen 上 Chris Coyier (@chriscoyier) 创建的笔 qfHmw。
直条纹(略好浏览器支持)
CSS 渐变存在一种非常旧的语法,它使用 `-webkit-gradient()`(注意没有“linear”或“radial”)。基本上:Safari 4、Chrome 1-9、iOS 3.2-4.3、Android 2.1-3.0。旧的东西。这些浏览器不支持重复渐变。但是您可以通过使用 `background-size` 创建一个小的背景矩形,并在其中绘制条纹,并使其像 `background-image` 那样自然地重复,从而模拟这种效果,尤其是对于直条纹而言。
background: linear-gradient(
to bottom,
#5d9634,
#5d9634 50%,
#538c2b 50%,
#538c2b
);
/* The rectangle in which to repeat.
It can be fully wide in this case */
background-size: 100% 20px;
查看 CodePen 上 Chris Coyier (@chriscoyier) 创建的笔 uxJrf。
如果您想变得疯狂,可以使用 `transform: rotate()` 旋转带有这些直条纹的元素,并截断溢出部分,以更深层的浏览器支持来复制斜纹。听起来很复杂。
垂直条纹
您可以使用与上述相同的方法来创建垂直条纹。或者,您可以直接使用 `repeating-linear-gradient()`。
background: repeating-linear-gradient(
to right,
#f6ba52,
#f6ba52 10px,
#ffd180 10px,
#ffd180 20px
);
查看 CodePen 上 Chris Coyier (@chriscoyier) 创建的笔 oCpEu。
为了明确起见,使用 `repeating-linear-gradient()` 最好同时使用 `-webkit-repeating-linear-gradient()` 和无前缀的版本,如果您,您知道,要自己添加前缀 尽管您不应该这样做。
径向条纹
谁说它们必须是直线呢?径向渐变可以是 `repeating-linear-gradients()`。
/* Note the RADIAL */
background: repeating-radial-gradient(
circle,
purple,
purple 10px,
#4b026f 10px,
#4b026f 20px
);
查看 CodePen 上 Chris Coyier (@chriscoyier) 创建的笔 AEymd。
Funky Town
有时会发生舍入误差(也许?)或其他渲染问题。

怎么办呢。我怀疑随着时间的推移会变得更好。
更新:Christopher Cohen 的评论
您可以通过设置基于百分比的停靠点并使用 `background-size` 来避免 Funky Town。我不知道 Chrome 是否只是对 % 与 px 的计算精度不同,但我发现这使我获得了非常整齐的线条。
另一个快速提示;有时您需要指定 `background-attachment: fixed`,否则它会忽略 `background-position`。当使用重叠的渐变填充框来设置进度条等的样式时,这很有用。
查看 CodePen 上 Christopher Cohen (@Jeevecore) 创建的笔 Repeating gradients。
这已经过时了,但 Eric Meyer 在 2012 年 5 月关于重复线性渐变的困境的文章依然存在:http://meyerweb.com/eric/thoughts/2012/05/30/repeating-linear-madness/。
感谢 Chris,这篇文章很棒……而且只用了五分钟就告诉我“不要这样做”。
我故意尝试在不使用 `repeating-linear-gradients` 的情况下使用斜纹,结果得到了一些奇怪的图案。
看到了图案
三角形图案
点图案
关于第一张图片。其中显示的角度不是渐变角度(渐变函数中出现的角度),尽管在这种情况下(`45deg`)它恰好等于渐变角度(因为 90 – 45 = 45)。
按照当前的标准语法,渐变角度是指垂直轴线与渐变线(指示渐变方向的线)之间的角度。我认为这个笔比我的文字更能解释清楚(点击圆点选择新的渐变角度,代码框底部的值也会随之改变)。
关于在两种颜色之间出现急剧过渡时出现的锯齿边缘(无论是线性渐变的随机角度,还是径向渐变)。IE 在这里表现最好,尤其是在径向渐变方面,线性渐变的边缘并不那么平滑,尽管它们仍然比其他浏览器看起来更好。一直以来,在我的 IE 和 Firefox 中,以及有时在 Chrome 中,一个始终有效的方法是在它们之间留出 1 到 3 像素。
像这样
笔(边缘在 IE 和 Firefox 中看起来很平滑,但 Chrome 变得非常奇怪)。
当然,很容易做到……除非你想支持 IE9 或更早版本。虽然 Windows XP 的支持很快就会结束(因此理论上我们可以忽略 IE8),但 Vista 的支持会持续到 2017 年,而 Vista 无法安装 IE10。因此,IE9 的支持可能在一段时间内仍然是一个好主意。
别忘了 Lea 的例子 http://lea.verou.me/css3patterns/
很棒的资源。让我想起了我家人 1980 年代(单色)苹果麦金塔电脑上的所有位图填充图案。(不确定这是否是你想要在一个 2010 年代的网页上唤起的感觉,但我想这取决于主题!)
一如既往地棒,先生。
哇哦……
学到了很多……
还要感谢 @suprsidr
简单而棒的 CSS 图案,但这只是一个老把戏,我们可以用条纹做更多的事情吗?
我们还可以用棋盘格图案,使用不透明度和 2 个背景层:D
这很棒。我喜欢 repeating-linear-gradient 的想法,但它似乎对我来说从来都没有渲染得很好(或者不一致)。也许我只是有点强迫症,但条纹宽度的变化以及它产生的随机锯齿让我很困扰。它很小,我相信大多数人不会注意到或在意,但有人找到解决这个问题的方法或一个渲染效果更好的常见浏览器/操作系统组合吗?
我使用线性渐变来创建它们。似乎渲染效果更好。也许在未来的浏览器版本中会更好。我在 Mac 上使用 Chrome 33。
Codepen 例子
想法?
这听起来确实像是疯狂和很多工作。拿出你的计算器(或者也许你的 CSS 预处理器可以为你做计算),计算出相同颜色条纹之间的垂直和水平距离,并将其用作你的背景大小。
对于 45 度,这意味着
对于任何其他角度,你需要进行一些三角函数运算。我花了一段时间才得到正确的公式,但它们可以总结为
http://codepen.io/AmeliaBR/pen/cBlAI?editors=110 作为示例和三角函数图。
唯一的额外复杂之处是,你必须重复你的条纹几次以填补矩形的其余部分。
这是一篇很棒的文章,重复线性渐变(尤其是斜线)简直是噩梦!感谢分享,Chris!
我认为这本书对 CSS 会有很大帮助。
CSS3 快速入门指南
很棒的文章,Chris。真的很简单,但非常有效。收藏了!谢谢,Laurence