我的页面上有一个漂亮的背景,我希望我的文本标题充当遮罩以切开其包含的 div 并将背景作为纹理。
我可以在CSS中执行此操作还是必须打开Photoshop?
有限的浏览器支持,但background-clip
可以获得这种效果:http ://tympanus.net/Tutorials/ExperimentsBackgroundClipText/ (点击 Animate 按钮以获得更多乐趣)
使用 SVG 你可以这样做: http: //people.opera.com/dstorey/images/newyorkmaskexample.svg(查看源代码以了解实际做了什么,也请参阅参考文章)
使用背景图片和 CSS,您可以这样做:http: //www.netmagazine.com/tutorials/texturise-web-type-css
正如 CSS-Tricks 在本文中展示的那样,“文本后面的图像”可以这样完成:
h1 {
color: white; /* Fallback: assume this color ON TOP of image */
background: url(images/fire.jpg) no-repeat; /* Set the backround image */
-webkit-background-clip: text; /* clip the background to the text inside the tag*/
-webkit-text-fill-color: transparent; /* make the text transparent so
* the background shows through*/
}
但它不能保证适用于所有浏览器,所以他们建议一些变通方法,比如modernizr。
这是它工作时的样子:
CSS3 中有一个background-clip: text
属性,尽管它并不适用于所有浏览器。有关更多详细信息,请参见此处。
扩展@sgress454 的答案。现在background-clip: text
可以在 Firefox 和 Edge 上运行,但是它的浏览器兼容性还不够全面。Safari 和 Chrome 部分不支持(仅支持前缀版本的属性。根据WebKit 博客,剪辑中不包含文本装饰或阴影。)。background-clip: text
仍然是您正在寻找的:
背景剪辑:文本;
背景被绘制在(剪辑到)前景文本中。
演示:
body {background: black;}
div {
background: url(https://images.unsplash.com/photo-1543005472-1b1d37fa4eae?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=600&q=60), black;
background-clip: text;
color: transparent;
}
<div>This background clips to the text.</div>