由于最近的项目须要兼容ie浏览器,因此也遇到了渐变文字的问题,在此记录一下。css
渐变:是在两个到多个颜色之间平稳过渡web
background: linear-gradient(direction, color-stop1, color-stop2, ...);
//direction也能够是角度: 好比 90deg
#grad {
background: -webkit-linear-gradient(left, red , blue); /* Safari 5.1 - 6.0 */
background: -o-linear-gradient(right, red, blue); /* Opera 11.1 - 12.0 */
background: -moz-linear-gradient(right, red, blue); /* Firefox 3.6 - 15 */
background: linear-gradient(to right, red , blue); /* 标准的语法 */
}
复制代码
实现思路有两个浏览器
规定背景的绘制区域bash
background-clip: border-box|padding-box|content-box|text;svg
.container {
width: 100%;
border: 1px solid #ccc;
margin: 0 auto;
background: linear-gradient(90deg, #f29914 15%, #0bbbe3 76%);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
}
<div class="container">
<p class="text">css 渐变文字(1) 之 background-clip</p>
</div>
复制代码
效果如图:spa
可是 ie 是不支持background-clip: text;无奈只好寻找新出路解决
复制代码
svg中的渐变不只能够填充图形,也能够用来填充文本3d
线性渐变:linearGradient
放射性渐变: radialGradient
复制代码
线性渐变可被定义为水平渐变,垂直渐变和角形渐变code
水平渐变:y1 和 y2 相等,x1 和 x2 不一样
垂直渐变:x1 和 x2 相等,y1 和 y2 不一样
角形渐变:x1 和 x2 不一样,且 y1 和 y2 不一样
复制代码
例如:cdn
<svg>
<defs>
<linearGradient id={props.id} gradientUnits="userSpaceOnUse">
<stop
offset={props.start}
style={{ stopColor: props.startColor }}
/>
<stop offset={props.end} style={{ stopColor: props.endColor }} />
</linearGradient>
</defs>
<text text-anchor="middle" fill={props.fillUrl} x="50%" y="100%">
{`${ props.data }%`}
</text>
</svg>
复制代码
这样就能够兼容 ie 啦blog