css 渐变文字

由于最近的项目须要兼容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); /* 标准的语法 */
}
复制代码

文字渐变

实现思路有两个浏览器

  • 使用background-clip: text
  • 使用 svg

background-clip

规定背景的绘制区域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渐变

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

相关文章
相关标签/搜索