जवाबों:
display:none
इसका मतलब है कि प्रश्न में टैग पृष्ठ पर बिल्कुल भी दिखाई नहीं देगा (हालांकि आप अभी भी डोम के माध्यम से इसके साथ बातचीत कर सकते हैं)। अन्य टैग के बीच इसके लिए कोई स्थान आवंटित नहीं किया जाएगा।
visibility:hidden
इसका मतलब है कि इसके विपरीत display:none
, टैग दिखाई नहीं देता है, लेकिन पृष्ठ पर इसके लिए स्थान आवंटित किया जाता है। टैग प्रदान किया गया है, यह सिर्फ पृष्ठ पर नहीं देखा गया है।
उदाहरण के लिए:
test | <span style="[style-tag-value]">Appropriate style in this tag</span> | test
परिणामों के [style-tag-value]
साथ प्रतिस्थापित करना display:none
:
test | | test
परिणामों के [style-tag-value]
साथ प्रतिस्थापित करना visibility:hidden
:
test | | test
visibility: hidden
और display: none
समान रूप से प्रदर्शन के बाद से वे दोनों लेआउट लेआउट, पेंट और समग्र होगा। हालाँकि, opacity: 0
कार्यात्मक रूप से समतुल्य है visibility: hidden
और लेआउट कदम को पीछे नहीं हटाता है, इसलिए मैं इसका उपयोग करने की सलाह दूंगा यदि आपको खाली स्थान अभी भी आवंटित नहीं किया गया है (अन्यथा उपयोग करें display: none
)।
opacity: 0
इनपुट या बटन के साथ काम करते समय सावधानी के साथ प्रयोग किया जाना चाहिए, क्योंकि वे अभी भी मौजूद हैं और संभवतः अजीब उपयोगकर्ता इंटरैक्शन का कारण बन सकते हैं।
वे पर्यायवाची नहीं हैं।
display:none
पृष्ठ के सामान्य प्रवाह से तत्व को निकालता है, जिससे अन्य तत्वों को भरने की अनुमति मिलती है।
visibility:hidden
पृष्ठ के सामान्य प्रवाह में तत्व को छोड़ देता है जैसे कि अभी भी जगह घेरे हुए है।
कल्पना कीजिए कि आप एक मनोरंजन पार्क में सवारी के लिए कतार में हैं और पंक्ति में कोई व्यक्ति इतना उपद्रवी हो जाता है कि सुरक्षा उन्हें लाइन से हटा देती है। लाइन में हर कोई तब खाली स्लॉट भरने के लिए एक स्थान आगे बढ़ेगा। यह जैसा है display:none
।
इसी तरह की स्थिति के साथ विरोधाभास है, लेकिन यह कि आपके सामने कोई व्यक्ति अदृश्यता लाद देता है। लाइन देखते समय, ऐसा लगेगा कि कोई खाली जगह है, लेकिन लोग वास्तव में उस खाली स्थान को नहीं भर सकते क्योंकि कोई अभी भी है। यह जैसा है visibility:hidden
।
जोड़ने लायक एक बात, हालांकि यह नहीं पूछा गया, कि वस्तु को पूरी तरह से पारदर्शी बनाने का एक तीसरा विकल्प है। विचार करें:
1st <a href="http://example.com" style="display: none;">unseen</a> link.<br />
2nd <a href="http://example.com" style="visibility: hidden;">unseen</a> link.<br />
3rd <a href="http://example.com" style="opacity: 0;">unseen</a> link.
(परिणाम देखने के लिए ऊपर "रन कोड स्निपेट" बटन पर क्लिक करें।)
1 और 2 के बीच अंतर पहले ही इंगित किया जा चुका है (अर्थात्, 2 अभी भी जगह लेता है)। हालाँकि, 2 और 3 के बीच अंतर है: 3 के मामले में, माउस अभी भी हाथ पर स्विच करेगा जब लिंक पर मँडरा जाएगा, और उपयोगकर्ता अभी भी लिंक पर क्लिक कर सकता है, और जावास्क्रिप्ट ईवेंट्स लिंक पर अभी भी आग लगाएंगे। यह आमतौर पर वह व्यवहार नहीं है जिसे आप चाहते हैं (लेकिन शायद कभी-कभी ऐसा है?)।
एक अन्य अंतर यह है कि यदि आप पाठ का चयन करते हैं, तो सादे पाठ के रूप में कॉपी / पेस्ट करें, आपको निम्नलिखित मिलते हैं:
1st link.
2nd link.
3rd unseen link.
मामले में 3 पाठ की प्रतिलिपि बनाई जाती है। हो सकता है कि यह कुछ प्रकार के वॉटरमार्किंग के लिए उपयोगी होगा, या यदि आप एक कॉपीराइट नोटिस छिपाना चाहते थे, जो दिखाएगा कि क्या लापरवाह उपयोगकर्ता आपकी सामग्री को कॉपी / पेस्ट करता है?
चाइल्ड नोड्स की बात करें तो इसमें बड़ा अंतर है। उदाहरण के लिए: यदि आपके पास माता-पिता का डिव और नेस्टेड चाइल्ड डिव है। तो अगर आप इस तरह लिखते हैं:
<div id="parent" style="display:none;">
<div id="child" style="display:block;"></div>
</div>
इस मामले में कोई भी विभाजक दिखाई नहीं देगा। लेकिन अगर आप इस तरह लिखते हैं:
<div id="parent" style="visibility:hidden;">
<div id="child" style="visibility:visible;"></div>
</div>
फिर चाइल्ड डिव दिखाई देगा जबकि पैरेंट डिव नहीं दिखाया जाएगा।
display: none
पृष्ठ से तत्व को पूरी तरह से हटा देता है, और पृष्ठ को ऐसे बनाया जाता है जैसे कि तत्व बिल्कुल भी नहीं थे।
Visibility: hidden
दस्तावेज़ प्रवाह में जगह छोड़ देता है, भले ही आप इसे अब नहीं देख सकते।
आप जो कर रहे हैं, उसके आधार पर यह एक बड़ा अंतर हो सकता है या नहीं भी।
visibility:hidden
ऑब्जेक्ट के साथ अभी भी पृष्ठ पर ऊर्ध्वाधर ऊंचाई लेता है। इसके साथ display:none
पूरी तरह से हटा दिया गया है। यदि आपके पास छवि के नीचे पाठ है और आप करते हैं display:none
, तो वह पाठ उस स्थान को भरने के लिए स्थानांतरित हो जाएगा जहां छवि थी। यदि आप दृश्यता करते हैं: छिपा हुआ पाठ उसी स्थान पर रहेगा।
अन्य सभी उत्तरों के अलावा, IE8 के लिए एक महत्वपूर्ण अंतर है: यदि आप उपयोग करते हैं display:none
और तत्व की चौड़ाई या ऊँचाई प्राप्त करने का प्रयास करते हैं, तो IE8 0 लौटता है (जबकि अन्य ब्राउज़र वास्तविक आकार वापस कर देंगे)। IE8 केवल के लिए सही चौड़ाई या ऊंचाई देता है visibility:hidden
।
display: none;
यह पृष्ठ पर उपलब्ध नहीं होगा और किसी स्थान पर कब्जा नहीं करता है।
visibility: hidden;
यह एक तत्व को छुपाता है, लेकिन यह अभी भी पहले की तरह ही जगह लेगा। तत्व छिपा होगा, लेकिन फिर भी, लेआउट को प्रभावित करेगा।
visibility: hidden
अंतरिक्ष को संरक्षित करें, जबकि display: none
अंतरिक्ष को संरक्षित न करें।
कोई भी उदाहरण न दिखाएँ: https://www.w3schools.com/css/tryit.asp?filename=trycss_display_none
दृश्यता छिपी उदाहरण: https://www.w3schools.com/cssref/tryit.asp?filename=trycss_visibility
यदि दृश्यता गुण सेट हो जाता है "hidden"
, तो ब्राउज़र अभी भी सामग्री के लिए पृष्ठ पर जगह लेगा, भले ही वह अदृश्य हो।
लेकिन जब हम एक ऑब्जेक्ट सेट करते हैं "display:none"
, तो ब्राउज़र अपनी सामग्री के लिए पृष्ठ पर जगह आवंटित नहीं करता है।
उदाहरण:
<div style="display:none">
Content not display on screen and even space not taken.
</div>
<div style="visibility:hidden">
Content not display on screen but it will take space on screen.
</div>
एक अन्य अंतर यह है कि visibility:hidden
वास्तव में, वास्तव में पुराने ब्राउज़रों में काम करता है, और display:none
नहीं:
अंतर शैली से परे है और यह प्रतिबिंबित होता है कि जावास्क्रिप्ट के साथ हेरफेर करने पर तत्व कैसे व्यवहार करते हैं।
प्रभाव और दुष्प्रभाव display: none
:
clientWidth
, clientHeight
, offsetWidth
, offsetHeight
, scrollWidth
, scrollHeight
, getBoundingClientRect()
, getComputedStyle()
, सभी वापसी 0
रों।प्रभाव और दुष्प्रभाव visibility: hidden
:
innerText
(लेकिन नहीं innerHTML
) लक्ष्य तत्व और वंशज खाली स्ट्रिंग लौटाते हैं।display:none;
न तो तत्व प्रदर्शित करेगा और न ही पृष्ठ पर तत्व के लिए स्थान आवंटित visibility:hidden;
करेगा जबकि पृष्ठ पर तत्व प्रदर्शित नहीं करेगा लेकिन पृष्ठ पर स्थान आवंटित करेगा। हम दोनों मामलों में DOM में एलिमेंट एक्सेस कर सकते हैं। इसे बेहतर तरीके से समझने के लिए कृपया निम्नलिखित कोड देखें:
प्रदर्शन: कोई नहीं दृश्यता: छिपा हुआ
यहाँ बहुत सारे विस्तृत उत्तर हैं, लेकिन मैंने सोचा कि मुझे इसे अभिगम्यता को संबोधित करने के लिए जोड़ना चाहिए क्योंकि इसके निहितार्थ हैं।
display: none;
और visibility: hidden;
सभी स्क्रीन रीडर सॉफ़्टवेयर द्वारा नहीं पढ़ा जा सकता है। ध्यान रखें कि दृष्टिहीन उपयोगकर्ता क्या अनुभव करेंगे।
सवाल पर्यायवाची के बारे में भी पूछता है। text-indent: -9999px;
एक दूसरे के बराबर है। इसके साथ महत्वपूर्ण अंतर text-indent
यह है कि इसे अक्सर स्क्रीन पाठकों द्वारा पढ़ा जाएगा। यह एक बुरा अनुभव हो सकता है क्योंकि उपयोगकर्ता अभी भी लिंक पर टैब कर सकते हैं।
एक्सेसिबिलिटी के लिए, मैं आज जो कुछ भी देखता हूं, वह स्क्रीन रीडर्स को दिखाई देते हुए किसी तत्व को छिपाने के लिए शैलियों का संयोजन है।
{
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
width: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
}
एक महान अभ्यास सामग्री के मुख्य शरीर के लंगर के लिए "सामग्री पर जाएं" लिंक बनाना है। दृष्टिबाधित उपयोगकर्ता शायद हर एक पृष्ठ पर आपके पूर्ण नेविगेशन ट्री को सुनना नहीं चाहते हैं। लिंक को नेत्रहीन छिपाएं। उपयोगकर्ता लिंक तक पहुंचने के लिए टैब को हिट कर सकते हैं।
पहुँच और छिपी हुई सामग्री पर अधिक जानकारी के लिए, देखें: