2013-10-25 5 views
5

के साथ एक छवि के एक भाग को ग्रे करें मैं एक छवि के एक खंड (बाएं और दाएं दो पट्टियों) को भूरे रंग की कोशिश कर रहा हूं। क्या सीएसएस का उपयोग करके ऐसा करने का कोई तरीका है?सीएसएस

मुझे पता है कि मैं फ़िल्टर का उपयोग कर सकता हूं (यानी filter: grayscale(100%)), लेकिन मैं नहीं चाहता कि पूरी छवि ग्रे हो।

उत्तर

6

बिना किसी अतिरिक्त मार्कअप के साथ शुद्ध सीएसएस समाधान

JSFIDDLE DEMO

एचटीएमएल

<div class="image-container"> 
    <img class="image-grey" src="http://placekitten.com/200/150" /> 
</div> 

सीएसएस

.image-container { 
    position:relative; 
    display:inline-block; 
} 

.image-grey { 
    display:block; 
    -webkit-filter: grayscale(100%); 
} 

.image-container:after { 
    position:absolute; 
    content:""; 
    top:0; 
    left:50%; 
     width:50%; 
    height:100%; 
    background-image:url(http://placekitten.com/200/150); 
    background-position:top right; 
} 
+0

यह वही है जो मैं खोज रहा था। – kunde

+0

मैंने अंतिम प्रभाव देखा जब मैंने टिप्पणी की, लेकिन यह बिल्कुल ठीक नहीं है (इसकी आधा)। मुझे छवि में दो ग्रे स्ट्रिप जोड़ने की ज़रूरत है, केवल एक ही नहीं। मैं इस तकनीक के साथ अलग-अलग चीजों की कोशिश कर रहा हूं, लेकिन मुझे दाईं ओर एक और ग्रे पट्टी जोड़ने का कोई तरीका नहीं मिला। हो सकता है कि मैं जो करने की कोशिश कर रहा हूं वह जावास्क्रिप्ट या कुछ और के साथ किया जाना चाहिए। – kunde

+0

दो पट्टियों के साथ त्वरित अद्यतन JSFiddle: http://jsfiddle.net/gmU9y/2/ –

2

इसे एक div पर रखो।

<div id="wrapper"> 
    <img src="path/to/file.jpg" /> 
    <div id="filter"> 
</div> 
<style> 
#wrapper {position: relative;} 
#filter { 
    position: absolute; 
    top: 123px; 
    left: 123px; 
    width: 42px; 
    height: 42px; 
    background: rgba(255,0,0,0.5); 
} 
</style> 

http://jsfiddle.net/BQ7J3/

+0

+1 मैं बस (केवल मैं PlaceCage इस्तेमाल किया इस के लिए एक JSFiddle करने की प्रक्रिया में था :) http://jsfiddle.net/jM7S6/ –

+0

@JasonSperske:) – bjb568

+0

बेशक यह छवि को भूरे रंग से बाहर नहीं कर रहा है, यह वहां मौजूद रंगों को अंधेरा कर रहा है। http://jsfiddle.net/W4tY6/। हालांकि, यह इसके बजाय पर्याप्त हो सकता है। –

2

आप वास्तव में ग्रेस्केल फिल्टर का उपयोग करने के लिए आप एक दूसरे के ऊपर पर दो छवियों की आवश्यकता होगी चाहते हैं, तो ग्रेस्केल फिल्टर के साथ एक आवेदन किया है और आकार आप चाहते करने के लिए काटा गया।

<div class="image-container"> 
    <img class="image-grey clip" src="http://placekitten.com/200/150" /> 
    <img class="image-coloured" src="http://placekitten.com/200/150" /> 
</div> 

और

.image-coloured { 
    z-index: 0; 
    position: absolute; 
} 

.image-grey { 
    z-index: 1; 
    position: absolute; 
    -webkit-filter: grayscale(100%); 
} 

.clip { 
    clip: rect(0px,60px,150px,0px) 
} 

Fiddle

+0

ओपी: "क्या सिर्फ सीएसएस का उपयोग करके ऐसा करने का कोई तरीका है?" – bjb568

+0

हां, लेकिन मुझे समझ में नहीं आता कि आप इसे मेरे लिए क्यों इंगित कर रहे हैं? –

+0

आप केवल सीएसएस का उपयोग नहीं कर रहे हैं। आपको एक और छवि की आवश्यकता है। – bjb568