你也许能够熟练的使用PS对文本进行图像掩埋;一个比较好的方法是在文字上添加一些纹理或者是一个背景图片。然后把这个文本存储为图像,你就可以在你的网站上使用;但是如果可以只使用HTML和CSS来产生相同的效果不是更好吗?好消息是,确实可以!
CSS介绍了background-clip
和 mask-image
的属性,或许你可以使用他们来创造相似的效果,就像你用PS创造出来的那样。最重要的是,你也可以使用SVG来进行文本图像剪辑。
在本文中,我们将会研究一下这些方案,甚至会尝试做一些简单的动画效果。如果你想查看详细的源代码,请点击下载这个文件
浏览器支持
可以预见,我们使用的一些性能并不是被浏览器普遍支持的,这意味着他们将在浏览器中失败,就像IE和火狐。好消息是这些性能将默默地衰退,意味着这些技术正在渐进增强,并且适用于网站。
使用BACKGROUND-CLIP来裁剪文本
我们第一个要研究的方法是 background-clip
属性,这个属性将定义背景是否将被延伸到边界。可允许文本在图片上做截取。
HTML
我们的标记是一个简单的包含bgClip
类的h1
标签。
<h1 class="bgClip">Clip Text</h1>
现在,让我们用CSS添加魔法吧...
CSS
我们用夜空的图片来给文本添加效果,使用font-smoothing
使文本渲染流畅。请注意使用这种方法的时候文本的颜色必须是透明的,所以我们同时也得使用text-fill-color:transparent
.
.bgClip { background:url('../images/clouds.jpg'); background-repeat:repeat-x; background-position:0 0; font-size:200px; text-transform:uppercase; text-align:center; font-family:'Luckiest Guy'; color:transparent; -webkit-font-smoothing:antialiased; -webkit-background-clip:text; -moz-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; margin:0;
现在我们只要添加一点点的动画效果,让背景更加诱人:
-webkit-animation:BackgroundAnimated 15s linear infinite; -moz-animation:BackgroundAnimated 15s linear infinite; -ms-animation:BackgroundAnimated 15s linear infinite; -o-animation:BackgroundAnimated 15s linear infinite; animation:BackgroundAnimated 15s linear infinite; } @keyframes BackgroundAnimated { from { background-position:0 0 } to { background-position:100% 0 } } @-webkit-keyframes BackgroundAnimated { from { background-position:0 0 } to { background-position:100% 0 } } @-ms-keyframes BackgroundAnimated { from { background-position:0 0 } to { background-position:100% 0 } } @-moz-keyframes BackgroundAnimated { from { background-position:0 0 } to { background-position:100% 0 } } `
结果如下:
使用SVG剪切文本
我们将研究的下一个技术是,SVG的剪切。类似上述的CSS方法,SVG也允许通过使用clipPath
属性令文本在图片上做截取。
虽然clipPath
包含的图形属性一般是圆形或者方形的,但是你也可以使用文本来剪切。
SVG
你将看见我使用HTML的<img>
元素来剪切图像.
<img class="svg-clip" src="images/green.jpg"/> <svg height="0" width="0"> <defs> <clippath id="svgPath"> <text x="175" y="420" textLength="1000" lengthAdjust="spacing" font-family="Lemon" font-size="240px"> SVG Text </text> </clippath> </defs> </svg>
虽然我在这里使用了.jpg
格式的图,但是你也可以使用其他格式的图,甚至是视频。
CSS
现在,我们所有人不得不使用clip-path
属性作为图像的剪切路径:
.svg-clip { -webkit-clip-path: url(#svgPath); clip-path: url(#svgPath); margin:0 auto; }
结果如下:
使用mask-image掩盖文本
我们将研究的最后一个技术是用mask-image
使文本变形。这个属性的基础功能是对于文本外的不可见的区域进行剪切。
HTML
我们需要一个包裹在div
元素里的h1
元素:
<div id="maskText"> <h1>Mask Text</h1> </div>
CSS
为了用图像掩盖文本,我们将使用-webkit-mask-image
指定图片,同时我们也可以添加一个text-shadow
来添加阴影。
最后,我想添加一些效果,当鼠标悬停的时候将显示平滑的全文。
#mask-text h1 { font-size: 200px; font-family: 'Lilita One', sans-serif; color: #ffe400; text-shadow: 7px 7px 0px #34495e; text-transform: uppercase; text-align: center; margin: 0; display: block; -webkit-mask-image: url('../images/texture.png'); -webkit-transition:all 2s ease; -moz-transition:all 2s ease; -o-transition:all 2s ease; transition:all 2s ease; } #mask-text h1:hover{ -webkit-mask-image: url('../images/texture-hover.png'); cursor: pointer; color: #ffe400; }
结果如下:
结论
棒极了!虽然你只是学习了怎样用不同的方法剪切文本,但是这些属性将节省你很多时间并且让你无需使用PS。更重要的是他们是动态的。
CSS和SVG已经走了很长的路,在接下来的几年里,随着浏览器的升级,类似这样的技术将成为标准。
网友评论文明上网理性发言 已有0人参与
发表评论: