Css -moz背景剪辑:文本;在Mozilla更新中

Css -moz背景剪辑:文本;在Mozilla更新中,css,firefox,Css,Firefox,之前的几篇文章似乎指出,-moz背景剪辑:text在Mozilla中不可用。 是否有可能从Firefox和其他浏览器中隐藏看起来是专有的WebKit-only CSS功能?我想隐藏伪“after”规则,该规则将文本内容添加到页面中,以实现Firefox和IE等的预期效果 这是我的网站,文本在Firefox中呈现得很糟糕,但在Chrome中呈现得很好 解决方案有一些不同的方法,您可以使用这些方法对FF和其他浏览器隐藏特定的CSS属性。不过有点乱 您可以保持CSS不变,只需添加 @-moz-doc

之前的几篇文章似乎指出,
-moz背景剪辑:text
在Mozilla中不可用。

是否有可能从Firefox和其他浏览器中隐藏看起来是专有的WebKit-only CSS功能?我想隐藏伪“after”规则,该规则将文本内容添加到页面中,以实现Firefox和IE等的预期效果

这是我的网站,文本在Firefox中呈现得很糟糕,但在Chrome中呈现得很好

解决方案有一些不同的方法,您可以使用这些方法对FF和其他浏览器隐藏特定的CSS属性。不过有点乱

您可以保持CSS不变,只需添加

@-moz-document url-prefix() {
.css:after, .hoo:after, .prof:after{ display: none; }
} 
删除背景图案

使用原始帖子答案推荐的SVG,将是一种更优雅的跨浏览器文本背景演示方式。

解决方案有一些不同的方法,您可以使用这些方法对FF和其他浏览器隐藏特定的CSS属性。不过有点乱

您可以保持CSS不变,只需添加

@-moz-document url-prefix() {
.css:after, .hoo:after, .prof:after{ display: none; }
} 
删除背景图案


使用原始post答案推荐的SVG,将是一种更优雅的方式来演示文本背景跨浏览器。

是的,虽然
背景剪辑
是有效的CSS3属性,但是
文本
的值是非标准的。因此,没有其他浏览器支持它,您也不需要其他前缀

您看到的问题是,此功能不能正常地回退。不支持它的浏览器将显示整个元素的背景

为了避免这种情况,您需要对其他浏览器隐藏背景。最好的方法是使用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;
看看这把小提琴,看看它在起作用:


另外,您可以删除
z-index
,因为这只适用于定位(或不完全不透明)的元素。由于您没有在
上设置
不透明度
位置
而不是
静态
::在
之后,这将不适用。

是,虽然
背景剪辑
是有效的CSS3属性,但
文本
值为非标准。因此,没有其他浏览器支持它,您也不需要其他前缀

您看到的问题是,此功能不能正常地回退。不支持它的浏览器将显示整个元素的背景

为了避免这种情况,您需要对其他浏览器隐藏背景。最好的方法是使用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;
看看这把小提琴,看看它在起作用:

另外,您可以删除
z-index
,因为这只适用于定位(或不完全不透明)的元素。由于您没有在
::之后设置
不透明度
位置
而不是
静态
,这将不适用。

CSS技巧文章“”提供了一个很好的解决方案。有了它,
-webkit background clip:text
样式化元素在其他浏览器中看起来很正常(纯色背景上的纯色文本)

基本上,它们用于检测浏览器是否支持
-webkit background clip:text
,并仅在是时应用它。Modernizer必须通过定制测试进行扩展,以实现这一点:

<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>

modernizer.addTest('backgroundclip',function(){
var div=document.createElement('div');
如果('backgroundClip'为div.style)
返回true;
“Webkit Moz O ms Khtml”。替换(/([A-Za-z]*)/g,函数(val){
如果(val+'BackgroundClip'在div.style中)返回true;
});
});
CSS技巧文章“”提供了一个很好的解决方案。有了它,
-webkit background clip:text
样式化元素在其他浏览器中看起来很正常(纯色背景上的纯色文本)

基本上,它们用于检测浏览器是否支持
-webkit background clip:text
,并仅在是时应用它。Modernizer必须通过定制测试进行扩展,以实现这一点:

<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>

modernizer.addTest('backgroundclip',function(){
var div=document.createElement('div');
如果('backgroundClip'为div.style)
返回true;
“Webkit Moz O ms Khtml”。替换(/([A-Za-z]*)/g,函数(val){
如果(val+'BackgroundClip'在div.style中)返回true;
});
});

这只适用于Firefox。Opera(14版之前的版本)和IE呢?这只适用于Firefox。Opera(14版之前)和IE呢?太好了,你发布的代码就是工作。我真的希望这些浏览器供应商能够齐心协力,通过实现专有的Css属性来防止黑客攻击。我猜这是野兽的本性,但当最终结果只是想要设计一些东西而不需要大量的黑客攻击时,这一切似乎都是不必要的。在它工作的过程中,如果你能接受我的回答,那就太好了:)我是CSS工作组的成员,但我不知道这方面的任何讨论