2013-04-23 9 views
24

एक तत्व मानना ​​100% संतृप्ति, अस्पष्टता, आदि पर है ... मैं कैसे पृष्ठभूमि आच्छादित होने पर थोड़ा हल्का हो सकता हूं?सीएसएस: होवर पर एक तत्व को हल्का करें

उपयोग का मामला यह है कि मैं किसी उपयोगकर्ता को किसी पृष्ठ पर किसी तत्व पर होवर करने की अनुमति दे रहा हूं। मैं 80% अस्पष्टता के बराबर प्रत्येक रंग को निर्धारित करने के आसपास नहीं जाना चाहता हूं।

एक विधि opacity: 0.4 को बदलने के लिए है, लेकिन मैं केवल पृष्ठभूमि को बदलना चाहता हूं।

+0

मंद सब कुछ। –

+0

अस्पष्टता के बजाय आरजीबीए का प्रयोग करें जब तक कि आप किसी प्रकार की छवि का उपयोग नहीं कर रहे हों। – Michael

+0

क्या यह वह रंग है जिसे आप बदलना चाहते हैं या पृष्ठभूमि छवि? यदि रंग आप एचएसएल() मान का उपयोग कर सकते हैं और लाइटनेस वैल्यू बढ़ा सकते हैं (अंतिम एक)। –

उत्तर

7

आप ऐसा करने RGBA विधि (background-color:rgba(R,G,B,alpha);) का उपयोग करना चाहिए:

.element{ 
    background-color:rgba(0,0,0,1); /*where 1 stands for 100% opacity*/ 
} 
.element:hover{ 
    background-color:rgba(0,0,0,0.5); /*where 0.5 stands for 50% opacity*/ 
} 

FIDDLE

और यह IE8 में काम करते हैं या कम भी यहाँ बनाने के लिए अगर आप दृढ़ता से की जरूरत है कि यह कैसे आता है:

.element:hover{ 
background: transparent; 
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#7F000000,endColorstr=#7F000000)"; /* IE8 */ 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#7F000000,endColorstr=#7F000000); /* IE6 & 7 */ 
     zoom: 1; 
} 

ध्यान दें कि startColorstr और endColorstr मूल्यों इसकी तरह बनाया जाता है(जहां एए अल्फा चैनल है) और यदि आप रंग से दूसरे रंग में ढाल प्रभाव नहीं चाहते हैं तो यह वही होना चाहिए।

+0

यह मेरा से बेहतर समाधान है, लेकिन 'rgba()' IE8 में समर्थित नहीं है: http://caniuse.com/#search=rgba –

+0

@Ghodmode इस प्रश्न को टैग किया गया है 'CSS3' –

+0

@roXon दोनों छद्म- तत्व और 'rgba()' CSS3 विनिर्देशन में शामिल हैं। CSS3 का उपयोग करना आवश्यक नहीं है IE8 के लिए समर्थन को रोकें। मैं बस 'rgba() 'का उपयोग करने की संभावित कमी को इंगित कर रहा था। –

3

मैं पारंपरिक पृष्ठभूमि की बजाय :after छद्म तत्व का उपयोग करूंगा। यह आईई 8 में समर्थित है, जहां rgba() नहीं है।

HTML:

<div class="hoverme"> 
    <p>Lorem ipsem gimme a dollar!</p> 
</div> 

सीएसएस:

.hoverme { 
    position: relative; 
} 
.hoverme:after { 
    content: ""; 
    position: absolute; 
    top: 0; 
    left: 0; 
    bottom: 0; 
    right: 0; 
    background-color: #fff; 
    z-index: -1; 
} 

.hoverme:hover:after { 
    background-color: #ddd; 
} 

या कुछ इस तरह।

http://caniuse.com/#search=%3Aafter

एक चिकनी परिणाम के लिए, एक CSS3 के संक्रमण जोड़ें:

.hoverme:after { 
    -webkit-transition: all 0.3s ease-out; /* Chrome 1-25, Safari 3.2+ */ 
    -moz-transition: all 0.3s ease-out; /* Firefox 4-15 */ 
     -o-transition: all 0.3s ease-out; /* Opera 10.50–12.00 */ 
      transition: all 0.3s ease-out; /* Chrome 26, Firefox 16+, IE 10+, Opera 12.10+ */ 
} 

पिछले टुकड़ा की नकल की और http://css3please.com

http://jsfiddle.net/ghodmode/6sE9E/

2

से चिपकाया गया था आप background-color बदलना चाहते हैं अस्पष्टता का उपयोग किये बिना किसी भी तत्व की हल्कीता। दुर्भाग्य से । मुझे नहीं लगता कि यह आपके hovers के लिए विशिष्ट background-color मान सेट किए बिना संभव है।

उपयोग के मामले है कि मैं एक उपयोगकर्ता एक पृष्ठ पर किसी भी तत्व पर होवर करने के लिए अनुमति कर रहा हूँ है। मैं 80% अस्पष्टता पर प्रत्येक रंग समतुल्य को निर्धारित करने के आसपास नहीं जाना चाहता हूं।

एक विकल्प है जिसे मैं सोच सकता हूं लेकिन इसे पूरे तत्व पर एक पारदर्शी पीएनजी ओवरले की आवश्यकता होगी, जिसमें किसी तत्व की सामग्री भी शामिल होगी। इस प्रकार आपकी समस्या को हल नहीं किया जा रहा है।

संबंधित प्रश्न: Dynamically change color to lighter or darker by percentage CSS (Javascript)

3

आप केवल filter: brightness(); का उपयोग कर सीएसएस के साथ ऐसा कर सकते हैं लेकिन यह केवल वर्तमान में वेबकिट ब्राउज़रों में समर्थित है। देखें http://jsfiddle.net/jSyK7/

+1

ध्यान दें कि यह तत्व के बच्चों की चमक को भी बदलता है। –

41

यह एक लंबे समय पहले है, लेकिन आप कुछ इस तरह कर सकते हैं:

.element { 
    background-color: red; 
} 
.element:hover { 
    box-shadow: inset 0 0 100px 100px rgba(255, 255, 255, 0.1); 
} 

आप एक नंबर आप चाहते हैं में 100px बदल सकते हैं। मैंने पूरे तत्व को कवर करने के लिए एक बड़ा लिया।

यह एक बहुत ही सुंदर समाधान नहीं है लेकिन यह काम करता है!

एक उदाहरण यहाँ: http://jsfiddle.net/6nkh3u7k/5/

+2

यह बिल्कुल मीठा है! सबसे अच्छी बात यह है कि यह किसी भी प्रकार की पृष्ठभूमि या ढाल आदि वाले तत्वों पर काम करती है। यह स्वीकार्य उत्तर आईएमओ होना चाहिए। ध्यान दें कि 'इंसेट' मान पहले नहीं होना चाहिए हालांकि। – beercohol

+0

यह बहुत समय पहले है, लेकिन धन्यवाद। आज इसका इस्तेमाल किया –

9

यहाँ एक आसान तरीका यह करना है: तत्व पहले से ही के रूप में उज्ज्वल के बाद से यह हो सकता है के रूप में,

.myElement:hover { 
    filter: brightness(150%); 
} 
+0

यदि आपको IE11 का समर्थन करने की आवश्यकता नहीं है तो यह वास्तव में एक अच्छा त्वरित और आसान समाधान है। छद्म तत्व हैक का उपयोग करने के बजाए फ़िल्टर निश्चित रूप से भविष्य के लिए भविष्य हैं। हालांकि -वेबिट उपसर्ग को हटाने के लिए उत्तर संपादित किया जाना चाहिए। – Trevor

संबंधित मुद्दे