CSS 题目系列(4) - 文字穿透遮罩层 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
4ark
V2EX    CSS

CSS 题目系列(4) - 文字穿透遮罩层

  •  
  •   4ark
    gd4ark 2019-01-20 17:51:53 +08:00 3059 次点击
    这是一个创建于 2521 天前的主题,其中的信息可能已经有所发展或是发生改变。

    描述

    在我刚开始学习前端开发不久的时候,曾在一个网站看到过一个效果,当时费尽脑筋,又是Canvas、又是SVG,还是无法实现(其实SVG好像是有办法可以实现的,但当时觉得麻烦就没弄)。

    效果就是这样的:

    这个效果的难点在于,如何让文字穿透过遮罩层,但是这样好像很难。

    直到最近,我看到了张鑫旭大神的一篇文章,文中讲述了如何给文字添加背景颜色(也可以是背景图片),顿时醍醐灌顶,想到了这样一个解决方案:

    1. 里外两个层,尺寸一样,设置同一个背景图片。
    2. 外层通过伪元素实现遮罩。
    3. 里层绝对定位,将背景添加到文字上。

    可能我文字表达地不是很清晰,下面用代码讲解一下。

    正文

    如果你点进了上面张鑫旭大神的那篇文章,你就知道主要是两行:

    1. -webkit-text-fill-color: transparent
    2. -webkit-background-clip: text

    简单说一下作用:

    -webkit-text-fill-color: transparent

    将文字颜色变成透明,但是经过尝试,发现使用color:transparent效果也一样,应该是浏览器为向后兼容所拟定的一个新属性,因为如果不支持文字添加背景,但又通过color:transparent将文字变成了透明,文字就显示不出来了。

    -webkit-background-clip: text

    背景被裁剪为文字的前景色。

    那么,下面我们试一下实现,这里只展示主要代码。

    <div class="container"> <h1>I CSS</h1> </div> 

    样式部分

    .container,h1{ background:url("https://gd4ark.github.io/CSS-Carousel/image/2.jpg"); background-size: 100% 100%; } .container h1, .container::after{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .container{ position: relative; width: 100%; height: 100vh; } .container::after{ content: ''; background: rgba(0,0,0,0.8); } h1{ z-index: 2; -webkit-text-fill-color: transparent; -webkit-background-clip: text; } 

    在线查看,可以修改文字哦: 链接

    完整代码:链接

    后记

    没错,这个困扰我多年的效果就是这么简单,果然还是懂得少,哪知道张鑫旭大神早在2011年就给出了答案。

    注:此文为原创文章,如需转载,请注明出处。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3182 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 11:17 PVG 19:17 LAX 03:17 JFK 06:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86