2013-11-26 8 views
5

इसलिए, मैंने jQuery में एक सरल एनिमेटेड प्रगति पट्टी बनाई। you can view it here.बदलते सीएसएस ओवरफ्लो छुपे व्यवहार

मैं इस पोस्ट में कुछ कोड की जरूरत है, इसलिए यहाँ मेरी सीएसएस है:

.progress { 
    height: 14px; 
    width: 300px; 
    background: #111; 
    border-radius: 5px; 
    vertical-align: middle; 
    display: inline-block; 
    overflow: hidden; 
    color: white;   
} 

.filename { 
    font-size: 10px; 
    color: white; 
    position: relative; 
} 

.progresstop { 
    padding: 4px; 
    width: 40px; 
    border-top-left-radius: 5px; 
    border-bottom-left-radius: 5px; 
    height: 8px; 
    float: left; 
    background: #c44639; 
    vertical-align: middle; 
    display: inline-block; 
} 

.arrow-right { 
    width: 0px; 
    height: 0px; 
    border-style: solid; 
    background: #111; 
    border-width: 7px 7px 7px ; 
    border-color: transparent transparent transparent #c44639; 
    float: left; 
    display: inline-block; 
} 

मेरे सवाल: प्रगति बार के रूप में अंत तक पहुँच जाता है, तत्वों "पॉप" अस्तित्व के बाहर जब वे div अतिप्रवाह और जब तक वे पूरी तरह से div से बाहर नहीं हो जाते हैं, तब तक दिखाई देने के बजाय छुपाए जाते हैं। विशेष रूप से, जब सीएसएस तीर गायब हो जाता है क्योंकि यह अंत तक पहुंच जाता है, प्रगति पट्टी का अंत एक त्रिकोण से एक रेखा में बदल जाता है, जो वास्तव में दृष्टि से झटकेदार होता है। तत्वों को "आसानी से" छिपाने के लिए, या तो सीएसएस या jQuery में, इस व्यवहार को बदलने का कोई तरीका है?

+0

एक बात का उल्लेख से भी बड़ा है, वहाँ 'प्रदर्शन की आवश्यकता नहीं है : इनलाइन-ब्लॉक; 'और' फ्लोट: बाएं; 'उसी तत्व पर। जब तक इसके लिए कोई कारण नहीं है? –

+0

@ जोशपावेल मैंने अतीत में कई बार एक ही चीज़ देखी है। यदि यह उद्देश्य पर किया गया है तो ऐसा हो सकता है क्योंकि आईई 7 इनलाइन-ब्लॉक का समर्थन नहीं करता है, इसलिए यह फॉलबैक के रूप में काम कर सकता है? बस एक अनुमान है, हालांकि मुझे नहीं पता कि यह या तो फ्लोट का समर्थन करता है .. –

+0

@ जोशसी हम्म जो देखने लायक है। मैं आईई 7 का समर्थन करने वाला नहीं हूं लेकिन अगर मुझे कभी भी ध्यान रखना है तो यह ध्यान में रखना एक अच्छी बात होगी। –

उत्तर

5

Altenatively JoshC के जवाब देने के लिए,

आप की तरह this fiddle

एचटीएमएल

एक कंटेनर में लपेट कर सकता है
<div id="progress-container"> 
    <div class='progress'> 
     <div class='progresstop'></div> 
     <div class='arrow-right'></div> 
     <div class='filename'>FILENAME</div> 
    </div> 
</div> 

सीएसएस

#progress-container { 
    height: 14px; 
    width: 300px; 
    background: #111; 
    border-radius: 5px; 
    vertical-align: middle; 
    display: inline-block; 
    overflow: hidden; 
    color: white; 
} 

.progress { 
    height: 14px; 
    width: 500px; /* large value */ 
} 

बस सुनिश्चित करें कि .progess चौड़ाई आप (पाठ, तीर, और बार) क्या जरूरत

+0

यह वास्तव में तीर झटका से छुटकारा पाता है, जो इसे और भी बेहतर बनाता है। – gotohales

+0

यह भी एक अच्छा समाधान है।धन्यवाद – amagumori

+0

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

5

आप white-space: pre देख रहे हैं।

Here is an updated example - यह काम करता है कि आप इसे अभी कैसे करना चाहते हैं।

.filename { 
    white-space: pre; 
} 

संपादित

आप एनीमेशन (जहां तीर एक नई लाइन के लिए कूदता है) के अंत में गड़बड़ दूर करने के लिए चाहते हैं, तो निम्न मार्कअप/सीएसएस का उपयोग करें:

jsFiddle example - कम अब HTML, चूंकि तीर एक छद्म तत्व है।

एचटीएमएल

<div class='progress'> 
    <div class='progresstop'></div> 
    <div class='arrow-right'></div> /* Removed this, and made the arrow a psuedo element. */ 
    <div class='filename'>FILENAME</div> 
</div> 

सीएसएस

.filename:before { 
    content:"\A"; 
    width: 0px; 
    height: 0px; 
    border-style: solid; 
    border-width: 7px 7px 7px; 
    border-color: transparent transparent transparent #c44639; 
    position:absolute; 
} 
+0

अनुभव हमेशा मायने रखता है :) – thenewseattle

+1

@ जोशसी यह अच्छा है, मुझे सफेद स्पेस प्री नहीं लगता था, ... – PSL

+0

हाँ, यह एक बहुत अच्छा समाधान है। धन्यवाद! मुझे सफेद अंतरिक्ष विशेषता के बारे में कोई जानकारी नहीं थी। – amagumori

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