当前位置: 首页 > Web前端 > CSS

如何将文字显示为CSS背景图

时间:2023-03-30 22:52:20 CSS

在实际开发中,有时会希望将文字内容显示为背景图。一方面,您想利用背景图像的优势,例如可以平铺,另一方面,它是一种常见的替换元素。你不能使用伪元素来创建文本,此时你只能希望和背景图片。关键是如何把文字变成背景图呢?通常,CSS开发人员将文本导出并转换为图片,然后作为背景图片显示,但这样有点开销,也不利于日后维护。这里我将介绍一个实用的技巧,可以让文本作为CSS背景图片。1.SVG本质上是一个图像。SVG虽然是由XML语言组成的,但本质上是图像,可以作为图像使用。例如:此时zhangxinxu.svg是一张图片Images,同理,也可以显示为背景图片,例如:.example{background:url(zhangxinxu.svg);但是这里的SVG文件都是独立的SVG文件,和把文字导出成PNG图片没什么区别,一点意义都没有!没错,不用担心,没错,作为矢量图,SVG与通常的位图有点不同,就是SVG图像可以直接以源代码的形式内联在网页中。例如下面是一段显示文字的SVG代码:Textcontent可以直接使用asbackground-image例如:.by-zhangxinxu{background-image:url('文字内容/svg>');}由于安全限制,目前部分字符需要转义,所以实际CSS代码如下:.exmaple{background-image:url("data:image/svg+xml,%3Csvgxmlns='http://www.w3.org/2000/svg'%3E%3Ctext%3Etext%3C/text%3E%3C/svg%3E");}相对于PNG图片的文字背景,使用SVG链接的好处是我们可以方便的修改文字的内容,同时我们可以随意设置文字的字体大小、颜色、描边效果等。但是,每次都手写一段SVG代码是那么的困难,尤其是很多前端朋友对SVG不是很熟悉。没关系,考虑到这种情况存在,可以使用生成SVG文本背景图片的工具。2.SVG文字背景图片生成工具可以猛戳这里:文字转SVG图片在线转换工具界面截图如下:最上面是配置区,可以设置文字内容为背景,可以设置颜色、透明度和位置等信息。中间是代码区,左边是原始SVG,可以点击图标下载SVG文件到本地;右侧是可以直接内联使用的转义SVG代码,HTML和CSS都可以内联使用。底部是预览区域。如果需要其他配置项,实际开发需求千变万化,目前工具内置的配置项可能无法覆盖所有场景。这时候可以这样处理,直接修改左边文本域的SVG代码,这时候右边的转义后的SVG代码会自动同步。例如,如果我们想让背景文字有旋转效果,以便作为水印图片,我们可以在生成的SVG代码中对元素设置45度旋转相关代码。一种方法是直接在元素上设置传统DOM元素的CSS样式设置。比如还有一种方法是在元素上使用SVG元素的automatictransform属性来设置,但是SVG和CSS中的transform变换坐标有很大区别,直接不会有预期的旋转效果,因为默认的SVG变换中心点是左上角,所以设置transform="rotate(-45)"会使文本不可见。元素也可以围绕中心点进行变换。有两种方法。一种是先用translate()函数偏移,再旋转,再恢复偏移。这个方法有点啰嗦。另一种方法是使用SVG中rotate()函数的可选参数,即第二个参数,可以指定旋转中心点的坐标。此功能是SVG独有的,在Canvas中不存在。代码演示如下截图所示:其中,可以看到SVG元素的宽高是专门设置的,因为如果不设置,按照目前的CSSbackground-sizesize渲染规范,SVG会采用容器的大小,rotate()函数的第二个参数需要设置为容器元素宽度和高度的一半,这样文本才能居中旋转。3、文字背景图的应用案例下面举几个使用文字作为背景图的例子。1.水印例如,为了防止截图,会在聊天软件的页面或背景上加文字水印。相关CSS代码如下:.target{background:url("data:image/svg+xml,%3Csvgwidth='200'height='200'xmlns='http://www.w3.org/2000/svg'%3E%3Ctextx='50%25'y='50%25'font-size='14'fill-opacity='0.5'text-anchor='middle'dominant-baseline='middle'变换='rotate(-45,100100)'%3Ezhangxinxu.com%3C/text%3E%3C/svg%3E");}截图效果如下: