Webページの画像が灰色になる3つの実現方法
5306 ワード
.div1 a:hover img{filter:alpha(Opacity=80);-moz-opacity:0.8;opacity: 0.8;}
1、CSS Filter
CSSフィルタプロパティを使用すると、最も簡単な方法で画像を階調にすることができます.従来、IEブラウザには独自のCSS属性があり、フィルタリングアプリケーションと呼ばれるカスタム効果には階調が含まれている.
現在、フィルタ属性はCSS 3仕様の一部であり、一部のブラウザ、Firefox、Chrome、Safariでサポートされています.以前はWebkitフィルタにも言及していましたが、画像をグレーにするだけでなく、褐色やぼかし効果にもなります.
画像をグレーに変更するには、次のCSSスタイルを追加します.
IE 6-9とWebkitブラウザ(Chrome 18+,Safari 6.0+,and Opera 15+)をサポート
(注意:このコードはFirefoxでは効果がありません.)
2、Javascript
2つ目の方法は、JavaScriptテクノロジーを使用して、IE 6以下を含むすべてのJavaScriptをサポートすべきブラウザを使用することです.
3、SVG
第3の方法はSVG Filterから来ている.SVGファイルを作成し、以下のコードを書き込んで、**と名前を付けて保存する必要があります.svg
そしてフィルタの属性を利用して、SVGファイルの中の要素のIDを通じてSVGファイルに接続することができます
CSSファイルに入れることもできます.たとえば、次のようにします.
まとめ
ブラウザにまたがって階調をサポートする効果を越えるために,上記の方法を以下のコードクリップを併用して実現することができる.このコードはFirefox 3.5+,Opera 15+,Safari,Chrome,and IEをサポートします.
上記のコードとJavaScriptメソッドを利用して、JavaScriptが無効にならないようにCSSフィルタのみをバックアップとして提供することができます.このアイデアは容易にModernizrの助けで実現できる.
OK、あなたのブラウザには素晴らしい効果が見られます!!
1、CSS Filter
CSSフィルタプロパティを使用すると、最も簡単な方法で画像を階調にすることができます.従来、IEブラウザには独自のCSS属性があり、フィルタリングアプリケーションと呼ばれるカスタム効果には階調が含まれている.
現在、フィルタ属性はCSS 3仕様の一部であり、一部のブラウザ、Firefox、Chrome、Safariでサポートされています.以前はWebkitフィルタにも言及していましたが、画像をグレーにするだけでなく、褐色やぼかし効果にもなります.
画像をグレーに変更するには、次のCSSスタイルを追加します.
img {
-webkit-filter: grayscale(1);/* Webkit */
filter:gray;/* IE6-9 */
filter: grayscale(1);/* W3C */
}
IE 6-9とWebkitブラウザ(Chrome 18+,Safari 6.0+,and Opera 15+)をサポート
(注意:このコードはFirefoxでは効果がありません.)
2、Javascript
2つ目の方法は、JavaScriptテクノロジーを使用して、IE 6以下を含むすべてのJavaScriptをサポートすべきブラウザを使用することです.
1 varimgObj = document.getElementById('js-image');
2 functiongray(imgObj) {
3 varcanvas = document.createElement('canvas');
4 varcanvasContext = canvas.getContext('2d');
5
6 varimgW = imgObj.width;
7 varimgH = imgObj.height;
8 canvas.width = imgW;
9 canvas.height = imgH;
10
11 canvasContext.drawImage(imgObj, 0, 0);
12 varimgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
13
14 for(vary = 0; y < imgPixels.height; y++){
15 for(varx = 0; x < imgPixels.width; x++){
16 vari = (y * 4) * imgPixels.width + x * 4;
17 varavg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
18 imgPixels.data[i] = avg;
19 imgPixels.data[i + 1] = avg;
20 imgPixels.data[i + 2] = avg;
21 }
22 }
23 canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
24 returncanvas.toDataURL();
25 }
26 imgObj.src = gray(imgObj);
3、SVG
第3の方法はSVG Filterから来ている.SVGファイルを作成し、以下のコードを書き込んで、**と名前を付けて保存する必要があります.svg
1 <svgxmlns=" http://www.w3.org/2000/svg">
2 <filterid="grayscale">
3 <feColorMatrixtype="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"/>
4 </filter>
5 </svg>
そしてフィルタの属性を利用して、SVGファイルの中の要素のIDを通じてSVGファイルに接続することができます
1 img {
2 filter:url('img/gray.svg#grayscale');
3 }
CSSファイルに入れることもできます.たとえば、次のようにします.
1 img {
2 filter:url('url("data:image/svg+xml;utf8,<svg%20xmlns=' http://www.w3.org/2000/svg'><filter%20id='grayscale'><feColorMatrix%20type='matrix'%20values='0.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200%200%200%200%200%201%200'/></filter></svg>#grayscale");')
3 }
まとめ
ブラウザにまたがって階調をサポートする効果を越えるために,上記の方法を以下のコードクリップを併用して実現することができる.このコードはFirefox 3.5+,Opera 15+,Safari,Chrome,and IEをサポートします.
1 img {
2 -webkit-filter: grayscale(100%);
3 -webkit-filter: grayscale(1);
4 filter: grayscale(100%);
5
6 filter:url('../img/gray.svg#grayscale');
7 filter:gray;
8 }
上記のコードとJavaScriptメソッドを利用して、JavaScriptが無効にならないようにCSSフィルタのみをバックアップとして提供することができます.このアイデアは容易にModernizrの助けで実現できる.
.no-js img {
-webkit-filter: grayscale(100%);
-webkit-filter: grayscale(1);
filter: grayscale(100%);
filter:url('../img/gray.svg#grayscale');
filter:gray;
}
OK、あなたのブラウザには素晴らしい効果が見られます!!