फ़ोकस और: सक्रिय के बीच क्या अंतर है?


जवाबों:


413

:focusऔर :activeदो अलग-अलग राज्य हैं।

  • :focus जब तत्व वर्तमान में इनपुट प्राप्त करने के लिए चुना जाता है और राज्य का प्रतिनिधित्व करता है
  • :active उस स्थिति का प्रतिनिधित्व करता है जब उपयोगकर्ता द्वारा वर्तमान में तत्व सक्रिय किया जा रहा है।

उदाहरण के लिए मान लें कि हमारे पास ए <button><button>किसी भी राज्य के साथ शुरू नहीं होगा। यह अभी मौजूद है। यदि हम Tab"फ़ोकस" देने के लिए उपयोग करते हैं <button>, तो यह अब अपने :focusराज्य में प्रवेश करता है। यदि आप तब क्लिक करते हैं (या दबाते हैं space), तो आप बटन को दर्ज करते हैं (:active ) स्थिति ।

उस नोट पर, जब आप किसी तत्व पर क्लिक करते हैं, तो आप उस पर ध्यान केंद्रित करते हैं, जो भ्रम पैदा करता है :focusऔर :activeजो समान हैं। वे एक जैसे नहीं हैं। जब क्लिक किया बटन :focus:activeराज्य में है।

एक उदाहरण:

<style type="text/css">
  button { font-weight: normal; color: black; }
  button:focus { color: red; }
  button:active { font-weight: bold; }
</style>
  
<button>
  When clicked, my text turns red AND bold!<br />
  But not when focused only,<br />
 where my text just turns red
</button>

संपादित करें: jsfiddle


2
यह भी ध्यान दें कि आप नामांकित document.activeElementसंपत्ति का उपयोग करके केंद्रित तत्व प्राप्त कर सकते हैं, हालांकि इसे एक कोशिश की पकड़ में होना चाहिए क्योंकि IE8 एक अपवाद फेंक सकता है। और ध्यान रखें कि ब्राउज़र के पुराने संस्करण इलाज कर सकते हैं: सक्रिय और: अलग तरह से ध्यान केंद्रित करते हैं। function activeElement() { try { return document.activeElement; /* can get exeption in IE8 */ } catch(e) { } }
रोबोकट

6
मैंने आपके उदाहरण का एक JSField यहां बनाया है: jsfiddle.net/NCwvj क्रोम (v24) में परीक्षण मैंने देखा है कि बटन पर क्लिक करने से केवल :activeराज्य में प्रवेश होता है
Zaki Aziz

3
Nit: फोकस और सक्रिय का क्रम HTML बटन की स्थिति को प्रभावित करता है यदि कोई नहीं है: सक्रिय: फोकस स्थिति - पुटिंग: सक्रिय स्थिति के बाद: फोकस, जब मैं टैब हिट करता हूं और स्पेस मारा जाता है तो मुझे सक्रिय बदलाव मिलते हैं। यदि: फोकस अंतिम है, तो मैं कभी भी सक्रिय स्थिति नहीं देख सकता।
मैट गंट

@GauntFace, आप किस ब्राउज़र का उपयोग कर रहे हैं? Chrome पर, आपकी focusऔर activeघोषणा का क्रम मायने नहीं रखता है। यह तभी मायने रखता है जब वे एक-दूसरे का खंडन करते हैं जैसे ( color:redऔर color:blueफिर अंतिम एक जीत)।
पचेरियर

संबंधित सवाल-जवाब, यह एक के आधार पर: stackoverflow.com/a/48597351/5587480 । मेरे दृष्टिकोण से, समझने में बहुत आसान है
जॉन cj

59
:active       Adds a style to an element that is activated
:focus        Adds a style to an element that has keyboard input focus
:hover        Adds a style to an element when you mouse over it
:lang         Adds a style to an element with a specific lang attribute
:link         Adds a style to an unvisited link
:visited      Adds a style to a visited link

स्रोत: सीएसएस छद्म कक्षाएं


10
संबंधित होने पर, यह प्रश्न का उत्तर नहीं देता है
ग्रेगर वेबर

6
@GregorWeber यह परिभाषा दिखा कर अंतर को उजागर करता है
Kamil Kiełczewski

1
आप शायद यह जानते हैं, लेकिन अगर आप उन्हें उस क्रम में परिभाषित करते हैं, तो visitedलिंक को हॉवर या क्लिक करने पर शैली नहीं बदलेगी क्योंकि उनकी "विज़िटनेस" अन्य छद्म वर्गों को ओवरराइड कर देगी। LVHFA वह आदेश है जो अधिकांश लोग अधिकांश मामलों में उपयोग करना चाहते हैं। यकीन नहीं होता कि आपने क्यों शामिल किया lang...
मेंटलिस्ट

22

चार मामले हैं।

  1. डिफ़ॉल्ट रूप से, सक्रिय और फ़ोकस दोनों बंद हैं।
  2. जब आप ध्यान देने योग्य तत्वों के माध्यम से चक्र करने के लिए टैब करते हैं , तो वे प्रवेश करेंगे :focus(सक्रिय के बिना)।
  3. जब आप एक गैर-फ़ोकस करने योग्य तत्व पर क्लिक करते हैं , तो यह (फ़ोकस किए बिना) प्रवेश करता है ।:active
  4. जब आप ध्यान देने योग्य तत्व पर क्लिक करते हैं तो यह प्रवेश करता है (सक्रिय और एक साथ फोकस)।:active:focus

उदाहरण:

<div>
  I cannot be focused.
</div>

<div tabindex="0">
  I am focusable.
</div>

div:focus {
  background: green;
}

div:active {
  color: orange;
}

div:focus:active {
  font-weight: bold;
}

जब पृष्ठ लोड होता है तो दोनों स्थिति में होते हैं। 1. जब आप टैब दबाते हैं तो आप दूसरी div पर ध्यान केंद्रित करेंगे और इसे प्रदर्शित करेंगे मामले 2. जब आप पहले div पर क्लिक करते हैं तो आपको मामला दिखाई देता है। 3. जब आप दूसरा div क्लिक करते हैं, तो आप केस 4 देखते हैं ।


एक तत्व ध्यान देने योग्य है या नहीं यह एक और सवाल है । अधिकांश डिफ़ॉल्ट रूप से नहीं हैं। लेकिन, यह मान लेना सुरक्षित है <a>, <input>, <textarea>डिफ़ॉल्ट रूप से फ़ोकस करने योग्य हैं।


यह बताने के लिए धन्यवाद कि तत्व कैसे हो सकते हैं :activeलेकिन नहीं :focus। यह एक बात है कि मैं इस बारे में उलझन में था कि अन्य उत्तरों को संबोधित नहीं किया गया था।
बी-स्टीवर्ट

6

: फ़ोकस तब होता है जब कोई तत्व इनपुट को स्वीकार करने में सक्षम होता है - इनपुट बॉक्स में कर्सर या लिंक जिसे टैब किया गया है।

: सक्रिय तब होता है जब उपयोगकर्ता द्वारा एक तत्व सक्रिय किया जा रहा है - जब उपयोगकर्ता माउस बटन दबाता है और फिर इसे जारी करता है।


2
नमस्ते! क्या "वर्तमान में क्लिक किया गया" के लिए एक राज्य है? बता दें कि नेवी मेन्यू में तीन लिंक होते हैं, आपको "लिंक पर" वर्तमान में एक निश्चित रंग रखने के लिए कैसे मिलता है? उपयोगकर्ता को दिखाने के लिए कि वह वर्तमान में कहां है। जैसे: सक्रिय केवल तब तक काम करता है जब तक लिंक (इस मामले में) पर क्लिक किया जा रहा है, लेकिन माउस बटन-रिलीज़ पर वापस बदल जाता है।
केसर याकुजा

0

सक्रिय उस समय होता है जब उपयोगकर्ता उस बिंदु को सक्रिय कर रहा होता है (जैसे माउस क्लिक करना, अगर हम फ़ील्ड-से-फ़ील्ड से टैब का उपयोग करते हैं, तो सक्रिय शैली से कोई भी नहीं है। शायद अधिक समय की आवश्यकता है, बस उस बिंदु पर क्लिक करने की कोशिश करें), इसके बाद फोकस किया जाता है। बिंदु सक्रिय है। इसे इस्तेमाल करे :

<style type="text/css">
  input { font-weight: normal; color: black; }
  input:focus { color: green; outline: 1px solid green; }
  input:active { color: red; outline: 1px solid red; }
</style>

<input type="text"/>
<input type="text"/>

-3

फोकस केवल कीबोर्ड इनपुट द्वारा दिया जा सकता है, लेकिन एक एलीमेंट को माउस या कीबोर्ड दोनों द्वारा सक्रिय किया जा सकता है।

यदि कोई उपयोग करेगा: एक लिंक पर ध्यान केंद्रित करें, तो स्टाइल नियम केवल कीबोर्ड पर एक बोटन को दबाने के साथ लागू होगा।


1
:focusउस तरह काम नहीं करता है। वर्तमान में मैं जिस textarea टाइप कर रहा हूं, उसमें फोकस है क्योंकि मैंने एक बटन क्लिक किया है। यह बाहर से क्लिक करके और इसे फिर से फोकस में खो सकता है और पुनर्स्थापित कर सकता है। केवल एक सेकंड में, मैं उस पर क्लिक करके दाईं ओर Add टिप्पणी बटन पर ध्यान देने जा रहा हूं। बिना कीबोर्ड इनपुट के यह सब ध्यान केंद्रित करता है।
जोएल मेलन

यदि आपके पास किसी लिंक पर फोकस नहीं हो सकता है, तो यह केवल इसलिए है क्योंकि किसी लिंक को तब तक फोकस नहीं किया जा सकता जब तक कि आप उसे एंकर पर नहीं डालते हैं, या आप टैबइंडेक्स विशेषता नहीं जोड़ते हैं। लेकिन आप div या आदानों जैसे DOM तत्वों पर ध्यान केंद्रित कर सकते हैं।
एलेक्स

-5

"फ़ोकस" का उपयोग करने से कीबोर्ड उपयोगकर्ताओं को वही प्रभाव मिलेगा जो माउस उपयोगकर्ताओं को माउस के साथ मंडराने पर मिलता है। "Internet Explorer में समान प्रभाव प्राप्त करने के लिए सक्रिय" आवश्यक है।

वास्तविकता यह है कि ये राज्य उतने काम नहीं करते जितने कि सभी उपयोगकर्ताओं के लिए होने चाहिए। सभी तीन चयनकर्ताओं का उपयोग नहीं करने से कई कीबोर्ड-केवल उपयोगकर्ताओं के लिए पहुँच क्षमता समस्याएँ पैदा होती हैं जो माउस का उपयोग करने में शारीरिक रूप से असमर्थ हैं। मैं आपको #nomouse Challenge (nomouse dot org) लेने के लिए आमंत्रित करता हूं।


1
: होवर और: फोकस एक ही चीज नहीं हैं। : होवर एक विशिष्ट स्थिति है और: फोकस एक विशिष्ट स्थिति है। उन्हें बराबरी देना थोड़ा भ्रामक और भ्रामक है।
गैरी पोली

1
मुझे आपकी विशेषज्ञता पर संदेह नहीं है। मैं यह इंगित करने की कोशिश कर रहा हूं कि: हॉवर और: सक्रिय समान चीज नहीं हैं। और यह वेब और पहुंच के लिए नए लोगों के लिए भ्रामक है जब इसे बस के रूप में रखा जाता है: होवर लगभग समान है: कीबोर्ड उपयोग के लिए सक्रिय। मैं उत्तर की सराहना करता हूं, लेकिन शायद थोड़ी और गहराई से मदद मिलेगी?
गैरी पोली

बेशक वे एक ही बात नहीं कर रहे हैं! मैंने कहा कि वे लगभग समान थे। (कृपया मेरे पोस्ट फिर से पढ़ें।) मैं माउस का उपयोग करने और उसी कार्य को पूरा करने के लिए कीबोर्ड का उपयोग करने के बीच अंतर के बारे में बात कर रहा हूं। मैं कह रहा हूं कि आपको उपयोगकर्ताओं के दोनों सेटों को समान अनुभव देने के लिए उन सभी का उपयोग करना होगा। अन्यथा केवल उपयोगकर्ता जो माउस का उपयोग करने में असमर्थ हैं, उन्हें यह देखने में कठिनाई होगी कि उन्होंने पृष्ठ पर कहां टैब किया है। यह पृष्ठ को नेविगेट करने में इन लोगों के लिए एक पहुंच का मुद्दा बनाता है।
एएमजी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.