2013-10-22 7 views
7

WCAG 2.0:focus का उपयोग करने की अनुशंसा करता है जब :hover कुंजीपटल नेविगेशन का समर्थन करने के लिए लिंक तत्वों पर उपयोग किया जाता है। यह लिंक तत्वों के लिए अच्छी तरह से काम करता है, लेकिन दोनों के बीच कुछ अंतर हैं।उपयोग: कीबोर्ड के नेविगेशन के लिए होवर प्रतिस्थापन

  • किसी भी तत्व :hover राज्य हो सकता है, जबकि केवल बहुत कम ध्यान केंद्रित किया जा सकता है
  • जब एक तत्व पर मँडरा, आप भी अपनी मूल तत्वों के सभी पर होवर करें। फोकस

यह प्रश्न सख्ती से सीएसएस के बारे में नहीं है। कुंजीपटल नेविगेशन के लिए :hover (ऊपर वर्णित अनुसार) के व्यवहार को अनुकरण करने का कोई तरीका है? या क्या कोई मजबूत कारण हैं कि कोई ऐसा क्यों नहीं चाहेगा?

इसे और अधिक यहाँ स्पष्ट करने के लिए एक उदाहरण है:

एचटीएमएल:

<div id="box"> 
    foo bar 
    <a href="#">click me</a> 
</div> 

सीएसएस:

#box { 
    opacity: 0.3; 
} 
#box:hover { 
    opacity: 1; 
} 
#box a:focus { 
    opacity: 1; 
} 

एक माउस मैं इसे उपयोग करने से पहले लिंक तत्व पर होवर जाएगा का उपयोग करते समय । चूंकि :hover राज्य प्रचारित करता है #box पूरी तरह से अपारदर्शी होगा।

कीबोर्ड का उपयोग करते समय मैं इसका उपयोग करने से पहले लिंक तत्व पर ध्यान केंद्रित करूंगा। चूंकि :focus राज्य ऊपर 0,प्रसारित करेगा पूरी तरह से अपारदर्शी नहीं होगा।

+0

बहुत रोचक .. लेकिन मुझे पूरा यकीन है कि 'अस्पष्टता' सिर्फ 'फोकस' पर काम नहीं कर रही है, न कि दूसरी तरफ। मुझे जो पता है, उसके आधार पर, आप केवल ': सक्रिय'/': focus' /': देखी गई 'जैसी घटनाओं पर कुछ गुणों को बदल सकते हैं .. हालांकि मैं गलत हो सकता हूं .. http://jsfiddle.net/8G4bY देखें/... संपादित करें ... ऐसा लगता है कि 'अस्पष्टता' कुछ मामलों में काम करता है .. http://jsfiddle.net/GcxMk/ –

+0

[कोणीय-गहरे धुंध] (https://github.com/ Myplanet/कोणीय-गहरे धुंध) कुछ हद तक संबंधित है।यह जांचता है कि केंद्रित तत्व निर्दिष्ट उपखंड में है या उस उप-धारा से प्रत्येक धुंध घटना पर लगातार कोड निष्पादित करता है या नहीं। – tobib

उत्तर

1

यह focusin/focusout घटनाओं के साथ जावास्क्रिप्ट में किया जा सकता का उपयोग करने के (वे focus और blur वे बुलबुला को छोड़कर जैसे हैं)। Here एक पहेली है।

यह यह फ़ंक्शन करने पर निर्भर करता:

var deepFocus = function(element, cls) { 
    cls = cls || 'deep-focus'; 

    element 
     .on('focusin', function() { 
      element.addClass(cls); 
     }) 
     .on('focusout', function() { 
      var value = !!element.find(':focus').length; 
      element.toggleClass(cls, value); 
     }); 
}; 

अद्यतन: यहां एक मसौदा कल्पना कि :focus-within चयनकर्ता जो वास्तव में यहाँ क्या आवश्यक है क्या करना होगा होता है।

0

बनाने के लिए: elemnts पर फ़ोकस प्रभाव लिंक नहीं करते हैं और उन तत्वों को बनाते हैं जिन्हें आपको टैबिंडेक्स विशेषताओं में उपयोग करने की आवश्यकता होती है। जब आप इसे प्रत्येक तत्व पर डालते हैं तो आप इसे असाइन कर सकते हैं: फोकस पेसोडो तत्व।

आपके उदाहरण में आपको यह समझने की आवश्यकता है कि अगर लिंक अस्पष्टता बदलती है तो अस्पष्टता भी पैर div पर रहती है।

आप काम कर रहे नमूना here देख सकते हैं। या नमूना tabindex

<div tabindex="1">Touch the Div</div> 
+0

उत्तर के लिए धन्यवाद। फिर भी मैं अपने प्रश्न के दूसरे भाग के जवाब के लिए आशा करता हूं। – tobib

+0

किसी तत्व पर होवर करते समय मुझे अपना दूसरा भाग –

+0

दोबारा समझाएं, आप इसके सभी मूल तत्वों पर भी होवर करते हैं। यह फोकस के मामले में नहीं है। फोकस के लिए होवर व्यवहार अनुकरण करने का कोई तरीका है? – tobib

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