2012-03-12 5 views
8

मान लीजिए मैं अज्ञात निर्धारित चौड़ाई के एक बाहरी कंटेनर, और एक आंतरिक तत्व है, तो तरह है:सीएसएस: तत्व को छिपाने जब कंटेनर बहुत संकीर्ण जाने के लिए यह अपनी संपूर्णता में देखा जा

<div id="outer"><div id="inner">hide me when #outer is too small</div></div> 

वहाँ एक रास्ता है मैं #inner पूरी तरह छुपाया जा सकता है (केवल क्लिप नहीं) जब #outer शुद्ध सीएसएस का उपयोग करके इसे पूरी तरह से दिखाने के लिए पर्याप्त नहीं है?

+0

# विजेता की सामग्री क्या है और आप यह कैसे निर्धारित करते हैं कि यह क्लिप किया गया है? क्या यह पाठ, छवि, iframe ... है? –

+0

@remibreton: मेरे विशिष्ट मामले में, यह सिर्फ पाठ है। – rampion

उत्तर

8

यह शुद्ध सीएसएस के माध्यम से संभव नहीं है, क्योंकि आप शर्तों को प्रदान नहीं कर सकते हैं (यदि आप IE .htc फ़ाइलों का उपयोग नहीं करते हैं;))। आपको इसके लिए जेएस का उपयोग करने और दोनों तत्वों की चौड़ाई की तुलना करने की आवश्यकता है।

पाठ के लिए आप का उपयोग कर सकते हैं: text-overflow:clip|ellispis;

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

#inner { 
    width: 100%; 
    overflow: hidden; 
    text-overflow: ellipsis; 
} 

उपयोगी हो सकता है।

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

मैं prepared a fiddle rampion के समाधान के लिए। ध्यान दें कि कस्टम स्ट्रिंग के साथ text-overflow केवल एफएफ में काम कर रहा है। इसके अतिरिक्त, text-overflow अभी तक मानकीकृत नहीं है। W3C वर्तमान में इसे text-overflow-modeits working draft में बताता है। interesting article at MDN भी देखें।

+0

+1 टेक्स्ट-ओवरफ्लो के बारे में मुझे सिखाने के लिए धन्यवाद। आपके जवाब ने मुझे [मेरे हैक] (http://stackoverflow.com/a/9669980/9859) को समझने का नेतृत्व किया। – rampion

+0

मैं आम तौर पर 1-शब्द ग्रंथों के लिए दिखाने के लिए "सेल-स्पेस: नाओपैप" का उपयोग करता हूं। – alexandroid

1

Christoph's answer शायद सामान्य मामले में सबसे अच्छा है, लेकिन मेरे मामले में, मैं पाठ सामग्री नहीं बल्कि कंटेनर चौड़ाई है, जो मुझे प्रवंचना की एक अतिरिक्त परत जोड़ने जानता था:

थोड़ा एचटीएमएल फेरबदल:

<div id="first" class="container"> 
    <div><span>first_text_section</span></div> 
</div> 
<div id="second" class="container"> 
    <div><span>second_text_section</span></div> 
</div> 
<div id="third" class="container"> 
    <div><span>third_text_section</span></div> 
</div> 

और निम्नलिखित सीएसएस का उपयोग कर:

.container > div { 
    color: transparent; /* don't show the text-overflow content */ 
    overflow: hidden; 
    height: 1em; 
    width: 100%; 
} 
/* use the actual text to get the measurement right for hiding */ 
#first > div { text-overflow: "first_text_section"; } 
#second > div { text-overflow: "second_text_section"; } 
#third > div { text-overflow: "third_text_section"; } 
.container > div > span { 
    color: black; /* do show the span when possible */ 
} 

फिर कंटेनर परिवर्तन की चौड़ाई के रूप में, पूरा टेक्स्ट या तो छिपा या दिखाया अनुप्रयोग है ropriately। यदि निहित पाठ एक से अधिक शब्द है, तो पाठ शब्द से छिपा शब्द है, इसलिए यह जानना कुछ है।

+0

ईमानदार होने के लिए, मुझे नहीं पता कि आपका कोड क्या करना है। अतिप्रवाह पाठ को छिपाने के लिए आपको उन सभी फैंसी नियमों की आवश्यकता नहीं है। आम तौर पर 'ओवरफ्लो: छुपा;' आपको बस इतना ही चाहिए। – Christoph

+0

@ क्रिस्टोफ: फैंसी नियम किसी भी संक्षिप्त शब्द को अदृश्य बनाते हैं। – rampion

+0

सबसे पहले: आपके टेक्स्ट-ओवरफ़्लो नियम अमान्य हैं। केवल मूल्य क्लिप या इलिप्सिस की अनुमति है। दूसरा, नियम: 'रंग: पारदर्शी; 'कभी लागू नहीं होता है, क्योंकि इसे' रंग: काला 'से ओवरराइड किया जाता है। पाठ को छिपाने वाली एकमात्र चीज आपका 'ओवरफ्लो: छुपा;' नियम है। – Christoph

14

यह तैरता के माध्यम से जे एस के बिना संभव है और एक सहायक आंतरिक तत्व जोड़:

<div class="outer"> 
    <div class="helper"></div> 
    <div class="inner">hide me when .outer is too small</div> 
</div> 

और सीएसएस:

.outer { 
    overflow: hidden; 
} 

.helper { 
    width: 1px; 
    height: 100%; 
    float: left; 
} 

.inner { 
    float: left; 
} 

भीतरी तत्व अब सहायक के तहत लपेट अगर यह फिट नहीं करता होगा बाहरी तत्व की चौड़ाई के भीतर, जिसमें .helperheight: 100% और .outer वाले overflow: hidden परिणामस्वरूप आंतरिक तत्व दिखाई नहीं दे रहा है।

आप बजाय width: 0.01px का उपयोग करके 1px सहायक चौड़ाई को दूर कर सकता है, लेकिन मुझे यकीन है कि अगर ब्राउज़र संगतता मुद्दों में चलाता है नहीं कर रहा हूँ।

+1

मेरा मानना ​​है कि यह स्वीकार्य उत्तर होना चाहिए क्योंकि यह बताए गए समस्या को हल करता है और यह पोस्टर द्वारा अनुरोध किए गए "सीएसएस समाधान" है। –

+0

हाय नेमुरी। तो जब बाहरी बहुत संकीर्ण होता है तो आप तत्वों को छुपा सकते हैं। क्या आप विपरीत कर सकते हैं? मेरा मतलब है कि जब आप शुद्ध सीएसएस का उपयोग कर बाहरी होते हैं तो क्या आप तत्वों को छुपा सकते हैं? –

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