2015-01-20 12 views
6

के माध्यम से सभी होवर प्रभाव हटाएं जब मैं स्पर्श उपकरणों पर आ जाता हूं तो मुझे होवर व्यवहार नहीं चाहिए। क्या पूरी वेबसाइट के लिए एक बार में सभी होवर प्रभाव अक्षम करना संभव है?सीएसएस

यह देखते हुए कि आप मॉडर्नज़्र का उपयोग स्पर्श करने और कक्षा को सेट करने के लिए करते हैं।

यह है कि मैं क्या के साथ आया है, लेकिन यह विसंगति का एक बहुत देता है:

html.touch *:hover { 
    color: inherit !important; 
    background: inherit !important; 
} 

वहाँ शुद्ध सीएसएस के साथ ऐसा करने के लिए एक रास्ता है? यदि नहीं, तो जावास्क्रिप्ट के साथ यह कैसे किया जा सकता है?

+0

http://stackoverflow.com/questions/8291517/disable-hover-effects-on-mobile-browsers – atmd

उत्तर

9

यह अच्छा है, लेकिन नहीं supported बहुत अच्छी तरह से:

html.touch *:hover { 
    all:unset!important; 
} 

लेकिन यह एक बहुत अच्छा support है:

html.touch *:hover { 
    pointer-events: none !important; 
} 

मेरे लिए निर्दोष काम करता है, यह सब हॉवर प्रभाव बनाता है जैसे कि जब आप बटन पर स्पर्श करते हैं तो यह हल्का हो जाएगा लेकिन माउस घटनाओं के प्रारंभिक होवर प्रभाव के रूप में छोटी गाड़ी को समाप्त नहीं करेगा।

+2

बस एक नोट: यह उस तत्व में आपके किसी भी लिंक या बटन को निष्क्रिय कर देगा। –

+1

'पॉइंटर-इवेंट्स:' होवर 'इवेंट चयनकर्ता पर कोई भी नहीं लागू किया जाना चाहिए, लेकिन तत्व चयनकर्ता पर ही यह होवर ईवेंट को म्यूट करके काम करता है। –

1

का प्रयास कर रहा एक कैच-ऑल समाधान शायद मुश्किल होने जा रहा है की कोशिश करो। मैं सिर्फ अपने सीएसएस में कहीं भी बदल जाएगा जहाँ आप एक मंडराना परिभाषित:

.thing:hover {} 

Modernizr वर्ग में शामिल करने के:

html.no-touch .thing:hover {} 

हालांकि आप जानते हैं कि किसी भी समाधान का उपयोग करता है Modernizr एक नहीं होगा 'होना चाहिए शुद्ध सीएसएस समाधान 'के रूप में, Modernizr जावास्क्रिप्ट है।