に画像のグレースケールバージョンを表示する方法が必要mouseoverです。これはブラウザのCanvas機能を使用して実装されているのを見てきましたが、すべてのブラウザにCanvasが実装されるまでにはしばらく時間がかかるため、この方法は使用したくありません。
誰かがそのようなことをしましたか?
に画像のグレースケールバージョンを表示する方法が必要mouseoverです。これはブラウザのCanvas機能を使用して実装されているのを見てきましたが、すべてのブラウザにCanvasが実装されるまでにはしばらく時間がかかるため、この方法は使用したくありません。
誰かがそのようなことをしましたか?
reko_t がコメントしているように、何らかの理由でサーバー上で画像のグレースケール バージョンを作成することはできないと仮定すると、IE では独自のfilterCSS 属性であるBasicImage with grayScaleを使用して可能です。これを行うために JS は必要ありません。CSS で宣言できます。
a {
    display: block;
    width: 80px;
    height: 15px;
    background-image: url(http://www.boogdesign.com/images/buttons/microformat_hcard.png);
}
a:hover {
    filter:progid:DXImageTransform.Microsoft.BasicImage(grayScale=1);
}
Firefox では、SVG マスクを適用するか、canvas 要素を使用してみてください。
ただし、最も簡単な解決策は、画像のグレースケール バージョンを手動で作成するか、サーバー側でGDのようなものを使用することです。
ネットで見つけた:
HTML 5 では、画像の描画と操作に使用できる Canvas オブジェクトが導入されました
スクリプト:
function grayscale(image, bPlaceImage)
{
  var myCanvas=document.createElement("canvas");
  var myCanvasContext=myCanvas.getContext("2d");
  var imgWidth=image.width;
  var imgHeight=image.height;
  // You'll get some string error if you fail to specify the dimensions
  myCanvas.width= imgWidth;
  myCanvas.height=imgHeight;
  //  alert(imgWidth);
  myCanvasContext.drawImage(image,0,0);
  // This function cannot be called if the image is not rom the same domain.
  // You'll get security error if you do.
  var imageData=myCanvasContext.getImageData(0,0, imgWidth, imgHeight);
  // This loop gets every pixels on the image and 
    for (j=0; j<imageData.height; i++)
    {
      for (i=0; i<imageData.width; j++)
      {
         var index=(i*4)*imageData.width+(j*4);
         var red=imageData.data[index];   
         var green=imageData.data[index+1];
         var blue=imageData.data[index+2];    
         var alpha=imageData.data[index+3];  
         var average=(red+green+blue)/3;      
        imageData.data[index]=average;    
         imageData.data[index+1]=average;
         imageData.data[index+2]=average;
         imageData.data[index+3]=alpha;       
       }
     }
    if (bPlaceImage)
    { 
      var myDiv=document.createElement("div"); 
         myDiv.appendChild(myCanvas);
      image.parentNode.appendChild(myCanvas);
    }
    return myCanvas.toDataURL();
  }
使用法:
<img id="myImage" src="image.gif" 
   onload="javascript:grayscale(this, true);"></img> 
以下を使用して合格したテスト:
以下を使用して失敗したテスト:
リソース: http://www.permadi.com/tutorial/jsCanvasGrayscale/index.html
Canvas を使用せず、ブラウザ固有の機能を利用したくない場合は、サーバー上でグレースケール イメージを生成する必要があります。事前でもオンデマンドでも構いません。SOの他の場所で回答されている方法
img {
    mix-blend-mode: luminosity;
    background: #000;
}