请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2022-9-25 11:15 编辑
之前我们的部分音画帖,利用 background-clip: text; 之设定,实现了用元素背景为文本着色的功能,我们甚至还为之加入了冷门属性 text-stroke 做出了字体镂空的效果。这是极好的创意,在当下浏览器中能够正常渲染出预设的效果。
除了 background-clip 属性,也许我们还有其他的给文本上色的途径。我最先想到的是利用伪元素。伪元素本质上是元素的子元素,它可以通过 attr 设置和父元素一样的文本,并覆盖父元素的文本。那么,我们可以有这样的思路:伪元素设置长度,且 overflow 设为 none 以防止文本溢出,如此,伪元素能够部分遮盖父元素,只要父元素、伪元素前景色不同,就能模拟给部分文字上色的功能。
试看如下代码:
<style>
#fontColor { font: bold 4em sans-serif; color: rgba(0,0,0,.1); position: absolute; }
#fontColor::before { position: absolute; content: attr(data-text); color: red; width: 100px; height: 100%; overflow: hidden; }
</style>
<div id="fontColor" data-text="ABCDEFG">ABCDEFG</div>
效果:
看上去,效果出来了。顺便提一下:在论坛,需要给伪元素设置一个属性:white-space: nowrap; 该属性本来是缺省默认值,由于论坛需要,预设了所有元素的文本都应自动折行,所以需要给需要不自动折行的元素重新设置一次这个属性为默认值。 |