CSS और फिर से माउस पर रंग के साथ छवि Greyscale?


86

मैं एक आइकन देख रहा हूं जो रंगीन है (और एक लिंक होगा) और इसे greyscale चालू करें जब तक कि उपयोगकर्ता अपने माउस को आइकन पर नहीं रखता (जहां यह तब छवि को रंग देगा)।

क्या ऐसा करना संभव है, और इस तरह से IE और Firefox समर्थित है?


2
लगभग डुप्लिकेट ... stackoverflow.com/q/609273/670377
टॉम सरदयू

यदि आप इसे अन्य तरीके से करते हैं तो यह अधिक दिलचस्प प्रभाव नहीं होगा? माउस कर्सर को जादू की छड़ी की तरह होने दें जो एक अंधेरी दुनिया में रंग लाता है?
X10D

जवाबों:


242

इसे पूरा करने के कई तरीके हैं, जिन्हें मैं नीचे कुछ उदाहरणों के साथ विस्तार करूंगा।

शुद्ध CSS (केवल एक रंगीन छवि का उपयोग करके)

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 (ग्रेस्केल और रंगीन चित्रों का उपयोग करके)

इस दृष्टिकोण को एक छवि की दो प्रतियों की आवश्यकता होती है: एक ग्रेस्केल में और दूसरा पूर्ण रंग में। CSS :hoverpsuedoselector का उपयोग करके , आप दोनों के बीच टॉगल करने के लिए अपने तत्व की पृष्ठभूमि को अपडेट कर सकते हैं:

#yourimage { 
    background: url(../grayscale-image.png);
}
#yourImage:hover { 
    background: url(../color-image.png};
}

यह जावास्क्रिप्ट-आधारित हॉवर प्रभाव का उपयोग करके भी पूरा किया जा सकता है जैसे कि jQuery के hover()फ़ंक्शन को उसी तरीके से।

थर्ड-पार्टी लाइब्रेरी पर विचार करें

Desaturate पुस्तकालय एक आम पुस्तकालय आप आसानी से एक ग्रेस्केल संस्करण और किसी दिए गए तत्व या छवि का पूरा रंग संस्करण के बीच स्विच करने की अनुमति देता है।


अगर कहा जाता है कि छवियों को अन्य वेबसाइट के साथ जोड़ा जाना चाहिए, अगर छवियों को पृष्ठभूमि के रूप में सेट किया जाता है तो यह कैसे किया जा सकता है?
मेटा

1
यह उसी तरह से काम करेगा, धारा 1 के तहत डेमो की जाँच करें। यदि आपके कोई अन्य प्रश्न हैं तो मुझे मदद करने में खुशी होगी।
रियोन विलियम्स

1
दोस्तों, क्या किसी ने देखा कि यह सफारी में काम नहीं कर रहा है? मैंने अभी इस मुद्दे को जांचा और पाया है, क्या इसे हल करने का कोई तरीका है?
गजेन

13

यहां उत्तर दिया गया: 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>

6

मैं 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);
    }

वेबकिट ब्राउज़र में बढ़िया काम करता है! फ़ायरफ़ॉक्स ब्राउज़र में आपका कोड मेरे लिए काम नहीं करता है, लेकिन फिर, मुझे लगता है कि यह एक SVG फ़ाइल के साथ कुछ करना है और मैं इस fiddle jsfiddle.net/coolwebs/num04rya/10 में एक बिटमैप का उपयोग कर रहा हूं, हालांकि कुछ अजीब है - संक्रमण सफारी में प्रभाव रोलओवर पर छवि को 'झटका' देता है ....
रयान कूलवेब्स

0

आप एक स्प्राइट का उपयोग कर सकते हैं जिसमें दोनों संस्करण हैं - रंगीन और मोनोक्रोम-इसमें संग्रहीत।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.