当前位置: 首页 > news >正文

SVG中的paint-order属性实现文字描边

过去只支持 SVG 元素

paint-order,表示绘制的顺序。

对于一个图形的绘制,顺序还是非常重要的。例如用SVG来绘制一个带边框的矩形

<style>rect{fill: #FFE8A3;stroke: #9747FF;stroke-width: 4;}
</style><svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg"><rect x="50" y="50" width="200" height="200" />
</svg>

效果如下:
在这里插入图片描述

默认情况下,描边是在填充上面的。如果要改变绘制顺序,也相当于改变层级,让填充覆盖在描边上面,可以使用paint-order属性

rect{fill: #FFE8A3;stroke: #9747FF;stroke-width: 4;paint-order: stroke; /*先描边*/
}

表示先绘制stroke,效果如下:
在这里插入图片描述
看着变细了,这是因为描边是居中的,由于先绘制的描边,后绘制的填充颜色(后绘制的在上面),所以描边被填充盖住了一半。
这个属性在SVG文本中更明显,例如

<style>text{font-size: 60px;fill: #FFE8A3;stroke: #9747FF;stroke-width: 4;font-weight: bold;}
</style>
<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg"><text x="50%" y="50%" text-anchor="middle" dominant-baseline="middle">前端</text>
</svg>

在这里插入图片描述
文字本身都快被描边给覆盖了,下面调整一下

text{font-size: 60px;fill: #FFE8A3;stroke: #9747FF;stroke-width: 4;font-weight: bold; paint-order: stroke; /*先描边*/
}

这样就好多了
在这里插入图片描述

现在支持普通文本了

在普通HTML中,可以用-webkit-text-stroke来实现文字的描边效果,例如

<h1 class="txt">前端侦探</h1>
<style>.txt{-webkit-text-stroke: 4px #9747FF;
}
</style>

在这里插入图片描述
以往通常使用绝对定位叠加的方式,手动让描边的那一层位于底部(可以用伪元素代替),就像这样

<p class="text" data-title="前端侦探">前端侦探</p>
<style>.text{margin: 0;font-weight: bold;-webkit-text-stroke: 6px rgb(51, 51, 51);}.text::before{content: attr(data-title);position: absolute;background-image: linear-gradient(#FFCF02, #FF7352);background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;-webkit-text-stroke: 0;}
</style>

在这里插入图片描述
不过现在,也可以像SVG一样,直接通过paint-order来改变层级了

<h1 class="txt">前端侦探</h1>
<style>.txt{-webkit-text-stroke: 4px #9747FF;paint-order: stroke; /*先描边*/
}
</style>

在这里插入图片描述
相比SVG最大的好处就是,排版更加灵活,比如文本自动换行,SVG就无法直接实现,CSS就非常容易了
在这里插入图片描述


http://www.mrgr.cn/news/4110.html

相关文章:

  • Hadoop 中的大数据技术:Zookeeper安装 (2)
  • 05创建型设计模式——原型模式
  • 汇凯贵金属:金子在家怎么清洗才干净
  • 非常nice! IDEA远程Debug调试程序
  • epoll机制中最核⼼的数据结构是什么?
  • 并查集在哪些具体应用中最常用
  • 计算机相关法律法规及违规案例
  • 机器学习在旅游业的革新之旅
  • ubuntu18.04更改系统语言及换源的方法步骤
  • 深入解析css-学习小结
  • C语言 | Leetcode C语言题解之第342题4的幂
  • PostgreSQL的pg_dump中 --inserts参数测试
  • CMOS 逆变器的功耗
  • WPS Office两个严重漏洞曝光,已被武器化且在野利用
  • MCU数据采集模块:核心功能与工作机制深度解析
  • Verilog刷题笔记55
  • Ubuntu清除缓存的方法--防止系统崩溃
  • 麻将手游开发的未来之路:技术与创新并行
  • TOMCAT入门到精通
  • Simple RPC - 04 从零开始设计一个客户端(上)