"दृश्यता: पतन" और "प्रदर्शन: कोई नहीं" के बीच अंतर


जवाबों:


99

लघु संस्करण:

पूर्व का उपयोग तालिका तत्वों को पूरी तरह से छिपाने के लिए किया जाता है। बाद वाले का उपयोग पूरी तरह से बाकी सब कुछ छिपाने के लिए किया जाता है।

लंबा संस्करण :

visibility: collapseएक तत्व को पूरी तरह से छुपाता है (ताकि यह लेआउट में किसी भी स्थान पर कब्जा न करे), लेकिन केवल तब जब तत्व तालिका तत्व हो

यदि तालिका तत्वों के अलावा अन्य तत्वों पर उपयोग किया जाता है, तो visibility: collapseयह कार्य करेगा visibility: hidden। यह एक तत्व को अदृश्य बनाता है, लेकिन यह अभी भी लेआउट में स्थान पर कब्जा कर लेगा।

display: noneएक तत्व को पूरी तरह से छुपाता है , इसलिए यह लेआउट में किसी भी स्थान पर कब्जा नहीं करता है, लेकिन इसका उपयोग टेबल तत्वों पर नहीं किया जाना चाहिए।

W3C संदर्भ


7
यह उपयोगी है, लेकिन दावे के लिए एक उद्धरण या स्पष्टीकरण जो कि display: noneटेबल तत्वों पर उपयोग नहीं किया जाना चाहिए, एक अच्छा जोड़ होगा।
मार्क एमी

@MarkAmery उपयोग न करने display: none;का एक अच्छा कारण यह है कि यह उपयोग करने वाली तालिकाओं को तोड़ता है colspanऔर rowspan
दाई

34

visibility: collapsevisibility: hiddenअधिकांश स्वरूपण संदर्भों में बिल्कुल वैसा ही व्यवहार करता है : तत्व के लिए आवश्यक स्थान लेआउट में 'आरक्षित' है, लेकिन तत्व खुद को प्रदान नहीं किया जाता है, खाली स्थान छोड़कर जहां यह होता है।

तीन अपवाद हैं जो मुझे पता है: टेबल-पंक्तियाँ, टेबल-कॉलम और फ्लेक्स आइटम, जिसमें visibility: collapseव्यवहार होता है display: none, लेकिन एक प्रमुख अंतर के साथ: 'अकड़'। आप अकड़ को शून्य-आकार के प्लेसहोल्डर के रूप में सोच सकते हैं, जो लेआउट प्रक्रिया में स्वयं के किसी भी स्थान का दावा नहीं करता है, लेकिन फिर भी प्रारूपण संरचना का हिस्सा है और कुछ आकार की गणनाओं में भाग लेता है।

उदाहरण के लिए, एक ढह गई तालिका-पंक्ति, तालिका में किसी भी ऊर्ध्वाधर स्थान पर कब्जा नहीं करेगी, लेकिन तालिका स्तंभ अभी भी ढल चुकी पंक्ति के रूप में 'as-if' आयामित होंगे और उनकी सामग्री वास्तव में दिखाई दे रही थी। यह कॉलम को 'वॉबलिंग' से रोकने के लिए है क्योंकि पंक्तियों को अंदर और बाहर टॉगल किया जाता है। इसी तरह, एक ध्वस्त फ्लेक्स आइटम मुख्य अक्ष के साथ किसी भी स्थान पर कब्जा नहीं करता है, लेकिन फिर भी फ्लेक्स लाइन क्रॉस-आकार में योगदान देता है।

' display: noneतालिकाओं के साथ उपयोग न करें ' अंगूठे का एक मूल्यवान नियम है, लेकिन यह पूरी कहानी नहीं बताता है।

  • display: noneयदि आप अपने छिपे हुए तत्वों को तालिका (या फ्लेक्स लाइन) लेआउट प्रक्रिया में किसी भी तरह से भाग नहीं लेना चाहते हैं तो उपयोग करें ।
  • visibility: collapseयदि आप तालिका (या फ्लेक्स लाइन) लेआउट को अस्थिर किए बिना तत्वों को गतिशील रूप से दिखाना और छिपाना चाहते हैं तो उपयोग करें ।

यहां एक टेबल स्निपेट एक टेबल रो के बीच display: noneऔर उसके बीच के अंतर को प्रदर्शित करता है visibility: collapse:


2
पूरी कहानी बताने वाला केवल एक। @ मैथ्यू रेंडा आपको इस सभी ज्ञान को जोड़ते हुए मुख्य उत्तर को संपादित करना चाहिए।
16एक्सल कोस्टास पेना

visibility:collapseसफारी में तालिकाओं के लिए काम नहीं करता है। मुझे display:noneटेबल की पंक्तियों पर (सफारी सहित) ठीक काम करने के लिए मिला, हालांकि स्तंभ की चौड़ाई के बारे में उपरोक्त टिप्पणियां सही हैं
सड़क

19

visibility:collapseकेवल तालिकाओं पर उपयोग किया जाना चाहिए। अन्य तत्वों पर यह एक के रूप में कार्य करेगा visibility:hidden

visibility:hiddenतत्व को छिपाएं लेकिन फिर भी तत्व का स्थान ले लें, जबकि display:noneवह स्थान भी नहीं रखेगा।


संसाधन:

उसी विषय पर:


3

visibility:collapsedisplay:noneकेवल तालिका तत्वों के लिए एक व्यवहार है। अन्य तत्वों पर, इसे प्रस्तुत करना चाहिए hidden


0

आप visibility: collapseएक फ्लेक्सबॉक्स कंटेनर (एक फ्लेक्स आइटम) के तहत एक तत्व पर भी आवेदन कर सकते हैं । जैसे ही आप इसे किसी तत्व पर display: table-rowया उसके साथ लागू कर रहे हैं यह कार्य करेगाdisplay: table-column

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.