在所有现代浏览器中,background-clip: text
样式会导致背景被裁剪为元素中文本的形状(MDN)。滚动渲染结果,背景裁剪的文本将与页面上的其他内容一起沿着移动:
h1 {
-webkit-background-clip: text; /* chrome, opera */
background-clip: text;
background-image: url(https://plus.unsplash.com/premium_photo-1669559808981-004376c78d77?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1287&q=80);
color: transparent; /* let the background be visible through otherwise opaque text */
}
/* make it easier to see scrolling and clip effect */
body {
background-image: linear-gradient(#333, #fff);
font-size: 2.5rem;
height: 200vh;
}
个字符
但是,如果我添加background-attachment: fixed
,文本将停止滚动 * 仅在Firefox中 *:
h1 {
background-attachment: fixed; /* <-- added */
-webkit-background-clip: text;
background-clip: text;
background-image: url(https://plus.unsplash.com/premium_photo-1669559808981-004376c78d77?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1287&q=80);
color: transparent;
}
body {
background-image: linear-gradient(#333, #fff);
font-size: 2.5rem;
height: 200vh;
}
<h1>The quick brown fox</h1>
<p>Regular, un-clipped text for reference.</p>
的字符串
我能做些什么来让文本在Firefox中随着滚动条移动吗?这是Firefox的bug吗?
1条答案
按热度按时间vqlkdk9b1#
你可以使用一个inline SVG和一个mask来达到同样的效果。然而,你必须摆弄SVG的尺寸或者使用JavaScript来获得一个适用于不断变化的文本的解决方案(例如在模板中使用)。也许有人可以帮助你把它变成一个可以在模板中使用的解决方案。
范例:
个字符