2013-12-11 4 views
9

के बीच अंतर मुझे आश्चर्य है कि परिणाम में कोई अंतर है जब जावास्क्रिप्ट विशेषता या सीएसएस शैली के साथ तत्व छिपाना है।एक तत्व छुपाएं: जावास्क्रिप्ट विशेषता और सीएसएस शैली

उदाहरण के लिए:

element.setAttribute("hidden", true); 

बनाम

element.style.visibility = "hidden"; 

मैं उन दो संभावनाओं के साथ एक सा प्रयोग किया। मेरी धारणा यह है कि, जब इसे जावास्क्रिप्ट से छुपाते हैं, तो तत्व वास्तव में छिपा हुआ होता है और प्रवाह से बाहर निकाला जाता है; और जब सीएसएस स्टाइल के साथ छिपाते हैं तो तत्व अभी नहीं दिखाया जाता है लेकिन फिर भी वहां होता है।

अधिकांशतः यह मेरे प्रयोगों में सही लग रहा था, लेकिन कभी-कभी नहीं। तो, उन दो संभावनाओं के बीच वास्तविक अंतर क्या है?

+1

पूरी तरह से अलग जानवरों है कि, वास्तव में। असल में, आप 'छुपे हुए 'attr के साथ' प्रदर्शन: none' शैली 'की तुलना बेहतर ढंग से करेंगे। – raina77ow

+0

अच्छा और बेहतर के बीच का अंतर जवाब होगा –

उत्तर

9

दो बुनियादी तरीकों है सीएसएस के साथ तत्व छिपाने के लिए:

सबसे पहले, visibility: hidden; (या element.style.visibility = "hidden";) है। यह बस आइटम अदृश्य बनाता है। यह अभी भी दस्तावेज़ में जगह लेता है, यह अभी भी प्रवाह का हिस्सा है।

फिर display: none; (या element.style.display = "none";) है। यह तत्व को पूरी तरह से दस्तावेज़ के प्रवाह से हटा देता है। यह अभी भी डोम में मौजूद है, यह सिर्फ पृष्ठ पर प्रस्तुत नहीं किया गया है।

एचटीएमएल 5 के hidden attribute (या element.setAttribute("hidden", true);) लगभग display: none; के बराबर है।

वास्तव में, विशेषता के साथ पुराने ब्राउज़र संगतता देने के लिए, यह अक्सर स्टाइलशीट में जोड़ा जाता है:

[hidden] { display: none; } 
+1

अभ्यास में, हाँ, वे बराबर होंगे। सिद्धांत रूप में, 'छुपा' विशेषता किसी तत्व को असाइन की जाती है जिसे किसी उपयोगकर्ता को कभी नहीं दिखाया/पढ़ा नहीं जा सकता है - और 'कभी भी' का मतलब किसी भी परिस्थिति में संभव नहीं है। [डॉक्टर] का उद्धरण (http://www.w3.org/html/wg/drafts/html/master/single-page।एचटीएमएल # छुपा-विशेषता), "छिपी हुई विशेषता का उपयोग सामग्री को छिपाने के लिए नहीं किया जाना चाहिए जो वैध रूप से किसी अन्य प्रस्तुति में दिखाया जा सके"। – raina77ow

3

कोड की इन दो पंक्तियों के बीच का अंतर यह है कि उनमें से एक तत्व को दिए गए मान के साथ तत्व में एक विशेषता जोड़ता है, जबकि दूसरा स्टाइल घोषणा के भीतर एक संपत्ति सेट करता है।

उदाहरण के लिए:

मान लें कि आपके तत्व चर एक div था करते हैं। जब आप

element.setAttribute("hidden", true); 

फोन तत्व अब इस तरह दिखेगा:

<div hidden="true"></div> 

जब आप फोन

element.style.visibility = "hidden"; 

आप मिल जाएगा:

<div style="visibility: hidden;"></div> 
+2

'सत्य' का उपयोग न करें, इसके बजाय स्मृति के 8 बाइट्स को बचाने के लिए '' 'का उपयोग करें। क्षमा करें, मैं एक माइक्रो-प्रदर्शन सनकी हूं इसलिए मुझे बस इतना कहना पड़ा। –

+0

वाह, मुझे लगता है कि आप हैं। अच्छा कॉल आउट मुझे इसे वोट देना होगा। धन्यवाद – MDiesel

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