有人知道下面的图像是否可以用 CSS 制作吗?亮线和暗线可以而且应该是相等的宽度,并且边缘会逐渐变暗,这样整个背景就会变成深色(在这种情况下是深蓝色)。
任何帮助都将不胜感激。我的谷歌技能对这种效果没有任何帮助,只找到了“星爆贴纸/徽章之类的东西”。
不。遗憾的是,css3 生成的图像规格不包括锥形/角度渐变(尽管它们可能会在下一个版本中出现!)这将是仅使用 css 来做到这一点的最有可能的方法。但是,您可以使用 css+svg 执行此操作。实际上,我曾经做过一次实验,有这个 svg 文档:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="512px" height="512px" viewBox="-256 -256 512 512" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Burst</title>
<defs>
<g id="burst">
<g id="quad">
<path id="ray" d="M0,0 -69,-500 69,-500 z" />
<use xlink:href="#ray" transform="rotate(30)"/>
<use xlink:href="#ray" transform="rotate(60)"/>
<use xlink:href="#ray" transform="rotate(90)"/>
</g>
<use xlink:href="#quad" transform="rotate(120)"/>
<use xlink:href="#quad" transform="rotate(240)"/>
</g>
<radialGradient id="grad" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" stop-color="white" stop-opacity="0.65"/>
<stop offset="100%" stop-color="black" stop-opacity="0.65"/>
</radialGradient>
<!-- a circle mask -->
<mask id="m"><circle r="256" fill="white"/></mask>
</defs>
<!-- added a mask and scaled it to a different aspect ratio below. scale(x,y) -->
<g mask="url(#m)" transform="scale(1, 0.75)">
<use xlink:href="#burst" fill="lightslateblue"/>
<use xlink:href="#burst" fill="darkslateblue" transform="rotate(15)"/>
<circle r="360px" fill="url(#grad)" />
</g>
</svg>
将其设置为背景图像,并设置 css background-size: cover
。而已。这是在数据 url 中使用此图像的小提琴。
但这需要一些工作。
我有这个完全相同的问题,并且找不到任何使用纯 CSS 完成此效果的示例。所以,我决定修补它。
经过大量的实验,我终于想出了一个不仅是在 CSS 中的解决方案,而且是一个相当便携(相对而言)的解决方案。
::before
我开始分别创建上半部分和下半部分,在::after
伪元素上使用线性渐变技巧,第二步(到目前为止是最耗时的一步)是将两半合并为一个元素。
工作演示: http ://codepen.io/pestbarn/pen/aBybeK
(原海报想要一个晕影效果,我在上面的演示中单独创建,使用带有径向渐变的 div 叠加)
我在github.com/pestbarn/starburst.css上提供了 vanilla CSS 和 Sass mixin ,您可以在官方演示页面上找到一些示例。
这是跨浏览器吗?
据我所知,是的。您可以在存储库中查看当前的浏览器支持。
我可以动画吗?
是的,就像您为任何其他元素设置动画一样。自己试试吧!
有什么注意事项吗?
唉,有。使用与另一种(例如亮度)大不相同的两种颜色会产生锯齿状的边缘。因此,我建议使用彼此非常相似的颜色。
此外,由于效果是使用伪元素创建的,因此在某些情况下您需要显式设置元素的高度和宽度。
随意尝试!
随着conic-gradient()
CSS 规范的添加,现在可以使用用于该类型效果的 CSS 创建效果。
本质上,您将像这样设置渐变色标:
background-image: conic-gradient( circle,
black 0%, black 5%,
white 5%, white 10%,
black 10%, black 15%,
...
);
这是一个动画版本:-) 不过,我的浏览器上的动画有点不稳定。它可能会被优化一点。
请注意,这只适用于 WebKit 浏览器;即 Chrome 和 Safari。但老实说,这涵盖了大部分用户,我相信其余的用户很快就会增加对它的支持。
目前有比“conic-gradient()”方法更好的解决方案来扩展“marcus erronius”的答案。有一个repeating-conic-gradient
,它创建一个由重复梯度组成的图像。
div {
height: 500px;
background: repeating-conic-gradient(
hsl(0deg 0% 80% / 31%) 0deg 15deg,
hsla(0,0%,100%,0) 0deg 30deg
) #3c1c32
}
<div></div>
你可以在W3 CSS Image Values阅读更多关于它的信息。
此属性并非与所有浏览器兼容。检查caniuse了解更多信息。