मैं एक आइकन देख रहा हूं जो रंगीन है (और एक लिंक होगा) और इसे greyscale चालू करें जब तक कि उपयोगकर्ता अपने माउस को आइकन पर नहीं रखता (जहां यह तब छवि को रंग देगा)।
क्या ऐसा करना संभव है, और इस तरह से IE और Firefox समर्थित है?
मैं एक आइकन देख रहा हूं जो रंगीन है (और एक लिंक होगा) और इसे greyscale चालू करें जब तक कि उपयोगकर्ता अपने माउस को आइकन पर नहीं रखता (जहां यह तब छवि को रंग देगा)।
क्या ऐसा करना संभव है, और इस तरह से IE और Firefox समर्थित है?
जवाबों:
इसे पूरा करने के कई तरीके हैं, जिन्हें मैं नीचे कुछ उदाहरणों के साथ विस्तार करूंगा।
img.grayscale {
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 3.5+ */
filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
}
img.grayscale:hover {
filter: none;
-webkit-filter: grayscale(0%);
}
आप इस तकनीक से संबंधित एक लेख यहां पा सकते हैं ।
इस दृष्टिकोण को एक छवि की दो प्रतियों की आवश्यकता होती है: एक ग्रेस्केल में और दूसरा पूर्ण रंग में। CSS :hover
psuedoselector का उपयोग करके , आप दोनों के बीच टॉगल करने के लिए अपने तत्व की पृष्ठभूमि को अपडेट कर सकते हैं:
#yourimage {
background: url(../grayscale-image.png);
}
#yourImage:hover {
background: url(../color-image.png};
}
यह जावास्क्रिप्ट-आधारित हॉवर प्रभाव का उपयोग करके भी पूरा किया जा सकता है जैसे कि jQuery के hover()
फ़ंक्शन को उसी तरीके से।
Desaturate पुस्तकालय एक आम पुस्तकालय आप आसानी से एक ग्रेस्केल संस्करण और किसी दिए गए तत्व या छवि का पूरा रंग संस्करण के बीच स्विच करने की अनुमति देता है।
यहां उत्तर दिया गया: HTML / CSS में एक छवि को ग्रेस्केल में बदलें
आपको दो छवियों का उपयोग करने की आवश्यकता नहीं है जो एक दर्द या एक छवि हेरफेर लाइब्रेरी की तरह लगती है, आप इसे क्रॉस ब्राउज़र समर्थन (वर्तमान संस्करण) के साथ कर सकते हैं और बस CSS का उपयोग कर सकते हैं। यह एक प्रगतिशील संवर्द्धन दृष्टिकोण है जो अभी पुराने ब्राउज़र पर रंग संस्करणों में वापस आता है:
img {
filter: url(filters.svg#grayscale);
/* Firefox 3.5+ */
filter: gray;
/* IE6-9 */
-webkit-filter: grayscale(1);
/* Google Chrome & Safari 6+ */
}
img:hover {
filter: none;
-webkit-filter: none;
}
और filter.svg फ़ाइल को इस तरह:
<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>
मैं http://www.diagnomics.com/ पर निम्न कोड का उपयोग करता हूं
आवर्धक प्रभाव (स्केल) के साथ बी / डब्ल्यू से रंग में चिकना संक्रमण
img.color_flip {
filter: url(filters.svg#grayscale); /* Firefox 3.5+ */
filter: gray; /* IE5+ */
-webkit-filter: grayscale(1); /* Webkit Nightlies & Chrome Canary */
-webkit-transition: all .5s ease-in-out;
}
img.color_flip:hover {
filter: none;
-webkit-filter: grayscale(0);
-webkit-transform: scale(1.1);
}
आप एक स्प्राइट का उपयोग कर सकते हैं जिसमें दोनों संस्करण हैं - रंगीन और मोनोक्रोम-इसमें संग्रहीत।
यहाँ एक डेमो है। IE7 में भी काम करता है:
http://james.padolsey.com/demos/grayscale/
तथा
http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/