मुझे एक विधि चाहिए जो केवल सीएसएस संक्रमण का उपयोग करे, प्रभावी रूप से (और आकर्षक) होवर पर सामग्री को छुपाएं/दिखाएं।ऑटो-ऊंचाई सामग्री (संक्रमण के साथ) छिपाने/दिखाने के लिए एक सुरुचिपूर्ण, सीएसएस-केवल विधि की तलाश करना
चेतावनी यह है कि मैं गतिशील (ऑटो) ऊंचाई रखना चाहता हूं।
ऐसा लगता है कि इष्टतम मार्ग fixed height:0
के बीच height:auto
पर संक्रमण करना होगा, लेकिन यह अभी तक ब्राउज़र में संक्रमणों द्वारा समर्थित नहीं है।
टिप्पणी के जवाब में स्पष्टीकरण :: यह इतना इंतजार कर रहे हैं जब तक सभी जीवित ब्राउज़रों हैं CSS3 के संगत है, बल्कि CSS3 के ही एक कथित कमी को संबोधित (जैसे। height:0
की कमी का सवाल नहीं है>height:auto
)
मैंने कुछ अन्य तरीकों की खोज की है, जिन्हें निम्नलिखित पहेली (और नीचे विस्तृत) पर देखा जा सकता है, लेकिन उनमें से कोई भी मुझे संतुष्ट नहीं करता है, और मुझे अन्य दृष्टिकोणों के लिए प्रतिक्रिया/टिप्स पसंद आएंगे।
http://jsfiddle.net/leifparker/PWbXp/1/
बेस सीएसएस
.content{
-webkit-transition:all 0.5s ease-in-out;
-moz-transition:all 0.5s ease-in-out;
transition:all 0.5s ease-in-out;
overflow:hidden;
}
रूपांतर # 1 - अधिकतम ऊंचाई हैक
.content { max-height:0px; }
.activator:hover +.content{ max-height:2000px; }
विपक्ष
ए। आपको मनमाने ढंग से ऊपरी अधिकतम-ऊंचाई सेट करने की आवश्यकता होगी, जो व्यापक गतिशील सामग्री के साथ संभावित रूप से जानकारी काट सकता है।
बी। हैं, (एक) को सावधानी के तौर पर, आप एक बहुत उच्च ऊपरी अधिकतम-ऊंचाई की स्थापना का सहारा, एनीमेशन पर देरी, अजीब, और अस्थिर हो जाता है के रूप में ब्राउज़र अदृश्य रूप से पूरी दूरी बदलाव। यह भी कम दृष्टि से प्रभावी आसान बनाता है।
रूपांतर # 2 - पैडिंग और विकास का भ्रम
.content { padding:0px; height:0px; opacity:0; }
.activator:hover +.content { padding:10px 0px; height:auto; opacity:1; }
विपक्ष
एक। यह जारिंग है। यह कहीं भी सामग्री को पॉप अप करने से निश्चित रूप से थोड़ा बेहतर है, और प्रभाव को अस्पष्टता में परिवर्तित करके और बेचा जाता है, लेकिन कुल मिलाकर यह दृष्टिहीन नहीं है।
रूपांतर # 3 - दोषपूर्ण चौड़ाई केवल दृष्टिकोण
.content { width:0%; }
.activator:hover +.content{ width:100%; }
विपक्ष
एक। चौड़ाई के रूप में, लाइन-रैप बाद की रेखाओं पर किसी भी अतिरिक्त पाठ को मजबूर करता है, और हम एक सुपर लम्बे अदृश्य div के साथ समाप्त होते हैं जो अभी भी अचल संपत्ति की मांग करता है।
रूपांतर # 4 - प्रभावी है, लेकिन चिड़चिड़ा, font-size
.content { font-size:0em; opacity:0; }
.activator:hover +.content{ font-size:1em; opacity:1; }
विपक्ष
एक। हालांकि इसमें एक अच्छा, व्यापक प्रकार का प्रभाव है, लाइन के रूप में लाइन-रैप को स्थानांतरित करने के कारण अपरिवर्तनीय जिटर का कारण बनता है।
बी। यह केवल पाठ के साथ सामग्री के लिए काम करता है। इनपुट, और छवियों के स्केलिंग को प्रबंधित करने के लिए अन्य संक्रमणों को जोड़ने की आवश्यकता होगी, और पूरी तरह व्यवहार्य होने पर, यह सादगी खराब कर देगा।
रूपांतर # 5 - की line-height
.content { line-height:0em; opacity:0; }
.activator:hover +.content{ line-height:1.2em; opacity:1; }
विपक्ष
एक Butteriness। मेरा पसंदीदा सौंदर्यशास्त्र, लेकिन # 4 के साथ, यह टेक्स्ट-केवल सामग्री के साथ सबसे अधिक काम करता है।
रूपांतर # 6 - विरोधी मार्जिन (के रूप में @graphicdivine द्वारा की पेशकश)
.wrapper_6 { min-height: 20px }
.wrapper_6 .activator {z-index:10; position: relative}
.wrapper_6 .content { margin-top: -100%; }
.wrapper_6 .activator:hover +.content{ margin-top: 0 }
विपक्ष
एक। होवर पर देरी है जो इष्टतम नहीं है। यह .content
का परिणाम अदृश्य रूप से काफी दूर स्क्रीन पर टकरा रहा है, और आने से पहले नीचे एनिमेट करने के लिए समय ले रहा है।
बी।margin-top: -100%
युक्त तत्व की चौड़ाई के सापेक्ष है। इसलिए, द्रव डिजाइन के साथ संभावना है कि जब खिड़की काफी कम हो जाती है, margin-top
.content
छिपाने के लिए पर्याप्त नहीं होगा।
जैसा कि मैंने कहा, इससे पहले कि यदि केवल हम
height:0
और
height:auto
के बीच परिवर्तन कर सकता है, यह सब विवादास्पद होगा।
तब तक, कोई सुझाव?
धन्यवाद! लीफ
इस स्थिति में जेएस का उपयोग करने का क्या अर्थ है? – Orbling
हां! उस कहानियों के पर्वत-पर्वतारोही को उद्धृत करने के लिए, _ "क्योंकि यह वहां है" _। - मुझे लगता है, ऐसा लगता है कि यह सुंदर ढंग से करने योग्य होना चाहिए, और इसकी सादगी की इच्छा होना चाहिए। – leifparker
जावास्क्रिप्ट का उपयोग करके आप शायद कुछ क्रॉस-ब्राउज़र और पीछे की संगतता समस्याओं से बचें। चूंकि कई वेबपृष्ठ आजकल jQuery का उपयोग करते हैं, मुझे नहीं लगता कि यह इसका उपयोग करने में हानि होगी। मुझे लगता है कि जब तक अधिक लोग css3 का समर्थन करने वाले ब्राउज़र का उपयोग नहीं करते हैं तब तक प्रतीक्षा करना सबसे अच्छा है :)। सुझावों के बारे में, ऐसा लगता है कि मेरे पास वास्तव में आपकी पोस्ट में कोई अतिरिक्तता नहीं है। – JNDPNT