使用CSS灰显图像?

Ric*_*ier 173 css

使用CSS使图像显示为"灰显"(即,不加载图像的单独灰色版本)的最佳方法(如果有的话)是什么?

我的上下文是我在一个表中有行,在最右边的单元格中都有按钮,有些行需要看起来比其他行更亮.因此,当然我可以轻松地使字体更轻,但我也想让图像更轻,而无需管理每个图像的两个版本.

Owe*_*wen 225

它必须是灰色的吗?您可以将图像的不透明度设置为较低(使其变钝).或者,您可以创建<div>叠加并将其设置为灰色(更改Alpha以获得效果).

  • 好的'互联网探险家.您可以使用filter属性执行更多操作; 因为它使用DirectDraw进行渲染.但是,它只适用于IE (6认同)

nms*_*vid 173

使用CSS3过滤器属性:

img {
    -webkit-filter: grayscale(100%);
       -moz-filter: grayscale(100%);
         -o-filter: grayscale(100%);
        -ms-filter: grayscale(100%);
            filter: grayscale(100%); 
}
Run Code Online (Sandbox Code Playgroud)

浏览器支持有点不好,但它是100%的CSS.有关CSS3过滤器属性的精彩文章,请访问:http://blog.nmsdvid.com/css-filter-property/

  • 为了使它更暗,添加`对比度(x%)`属性,例如`灰度(100%)对比度(30%)`. (8认同)
  • 浏览器支持是一个真正的问题,因为它绝对不适用于IE10,IE11,FF26,Safari 5.1.x(Win7 x64),或者基本上不在Chrome之外的任何东西(例如.) (3认同)
  • 这不允许您将其设置为浅灰色,但如果在白色背景上,您可以将其与不透明度结合使用来实现;`img { 过滤器:灰度(100%);不透明度:0.4;}` (2认同)

Sak*_*oki 52

你在这里:

<a href="#"><img src="img.jpg" /></a>
Run Code Online (Sandbox Code Playgroud)

Css Gray:

img{
    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */
    filter: grayscale(100%);
    -moz-filter: grayscale(100%);
    -ms-filter: grayscale(100%);
    -o-filter: grayscale(100%);
    filter: gray; /* IE6-9 */
    -webkit-filter: grayscale(100%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */}
Run Code Online (Sandbox Code Playgroud)

Ungray:

a:hover img{
    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale");
    filter: grayscale(0%);
    -moz-filter: grayscale(0%);
    -ms-filter: grayscale(0%);
    -o-filter: grayscale(0%);
    filter: none ; /* IE6-9 */
    zoom:1; /* needed to trigger "hasLayout" in IE if no width or height is set */
    -webkit-filter: grayscale(0%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */
    }
Run Code Online (Sandbox Code Playgroud)

我发现在:http://zkiwi.com/topic/chuyen-hinh-mau-thanh-trang-den-bang-css-nhu-the-nao

编辑: IE10 +不支持IE9及更早版本的DX过滤器,也不支持灰度过滤器的前缀版本.您可以修复它,使用以下两种解决方案中的一种:

  1. 使用IE9标准模式将IE10 +设置为使用头部中的以下元素元素进行渲染: <meta http-equiv="X-UA-Compatible" content="IE=9">
  2. 在IE10中使用SVG覆盖来完成灰度级Internet Explorer 10 - 如何应用灰度过滤器?


Nat*_*ong 24

如果您不介意使用一些JavaScript,jQuery的fadeTo()可以很好地适用于我尝试过的每个浏览器.

jQuery(selector).fadeTo(speed, opacity);
Run Code Online (Sandbox Code Playgroud)

  • 刚刚在这里偶然发现我的旧答案.我现在无法使用JS.纯CSS更好. (5认同)

ale*_*eia 20

更好地支持所有浏览器:

img.lessOpacity {               
   opacity: 0.4;
   filter: alpha(opacity=40);
   zoom: 1;  /* needed to trigger "hasLayout" in IE if no width or height is set */ 
}
Run Code Online (Sandbox Code Playgroud)


Кон*_*Ван 5

变灰:

“消色差。”

filter: grayscale(100%);
Run Code Online (Sandbox Code Playgroud)

filter: grayscale(100%);
Run Code Online (Sandbox Code Playgroud)
@keyframes achromatization {
	0% {}
	25% {}
	75% {filter: grayscale(100%);}
	100% {filter: grayscale(100%);}
}

p {
	font-size: 5em;
	color: yellow;
	animation: achromatization 2s ease-out infinite alternate;
}
p:first-of-type {
	background-color: dodgerblue;
}
Run Code Online (Sandbox Code Playgroud)

“用灰色填充。”

filter: contrast(0%);
Run Code Online (Sandbox Code Playgroud)

<p>
	? Bzzzt!
</p>
<p>
	? Bzzzt!
</p>
Run Code Online (Sandbox Code Playgroud)
filter: contrast(0%);
Run Code Online (Sandbox Code Playgroud)


有用的笔记