之前的几篇文章似乎表明-moz-background-clip: text
在 Mozilla 中不可用。
-moz-background-clip:Mozilla 中的 *text*
是否可以从 Firefox 和其他浏览器中隐藏看似专有的仅 WebKit 的 CSS 功能?我想隐藏伪“之后”规则,该规则将文本内容添加到页面以达到 Firefox 和 IE 等所需的效果。
这是我的网站,文本在 Firefox 中明显呈现不佳,但在 Chrome 中很好
之前的几篇文章似乎表明-moz-background-clip: text
在 Mozilla 中不可用。
-moz-background-clip:Mozilla 中的 *text*
是否可以从 Firefox 和其他浏览器中隐藏看似专有的仅 WebKit 的 CSS 功能?我想隐藏伪“之后”规则,该规则将文本内容添加到页面以达到 Firefox 和 IE 等所需的效果。
这是我的网站,文本在 Firefox 中明显呈现不佳,但在 Chrome 中很好
是的,虽然background-clip
是一个有效的 CSS3 属性,但text
值是非标准的。因此没有其他浏览器支持它,并且您不需要其他前缀。
您看到的问题是此功能不会优雅地回退。不支持它的浏览器将显示整个元素的背景。
为避免这种情况,您需要对其他浏览器隐藏背景。最好的方法是使用 webkit 前缀。WebKit 不支持该background
属性,但它支持 CSS 渐变。因此,您可以指定透明渐变,然后通过利用多个背景图像指定背景图像:
background: -webkit-linear-gradient(transparent, transparent), url("http://sandpit.jonathanbeech.co.uk/wp-content/themes/jontheme/images/crosshatch.png") transparent;
这里的主要问题是 Opera-webkit-
出于兼容性原因支持此前缀。所以你只需要在之后指定一个 -o- 渐变来取消它:
background-image: -o-linear-gradient(transparent, transparent);
然后您需要使文本透明,以便其他浏览器看不到它:
color: transparent;
请参阅此小提琴以查看它的实际效果:
http://jsfiddle.net/dstorey/2dhNM/
顺便说一句,您可以删除z-index
, 因为这仅适用于已定位(或不完全不透明)的元素。由于您没有在 上设置或设置opacity
,这将不适用。position
static
::after
这里的解决方案有一些不同的方法,您可以使用这些方法对 FF 和其他浏览器隐藏特定的 CSS 属性。虽然有点凌乱/hacky。
您可以保持 CSS 相同,只需添加
@-moz-document url-prefix() {
.css:after, .hoo:after, .prof:after{ display: none; }
}
删除背景图案。
使用原始帖子答案推荐的 SVG,将是一种更优雅的方式来说明跨浏览器的文本背景。
CSS-Tricks 文章“在文本下显示图像(带有可接受的后备) ”提供了一个很好的解决方案。有了它,-webkit-background-clip:text
样式元素在其他浏览器中看起来还不错(纯色背景上的纯色文本)。
本质上,他们使用Modernizr来检测浏览器是否支持-webkit-background-clip:text
,并且仅在支持时才应用它。Modernizr 必须通过自定义测试进行扩展才能实现这一点:
<script src="modernizr-1.6.min.js"></script>
<script>
Modernizr.addTest('backgroundclip',function() {
var div = document.createElement('div');
if ('backgroundClip' in div.style)
return true;
'Webkit Moz O ms Khtml'.replace(/([A-Za-z]*)/g,function(val) {
if (val+'BackgroundClip' in div.style) return true;
});
});
</script>