2014-09-23 9 views
6

तो मेरे पास निम्न फ़िल्ड है जिसने टेक्स्ट में इलिप्सिस को दो पंक्तियों में सेट किया है। फिर मैं पाठ के साथ 'अधिक' लिंक इनलाइन करना चाहता हूं।सीएसएस टेक्स्ट इलिप्सिस "अधिक" लिंक सहित

http://jsfiddle.net/csYjC/2876/

तो अगर हमारे पाठ दो से अधिक लाइनों है, यह इस तरह दिखना चाहिए:

enter image description here

यह सही है। हालांकि:

enter image description here

सही नहीं है यही कारण है कि (पाठ के साथ इनलाइन होना चाहिए)।

<div class="text"> 
    <div>Lorem ipsum dolor sit amet, Lorem Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem Lorem i</div> 
    <a href="#">More</a> 
</div> 

और सीएसएस:

.text{ 
    display: inline; 
    overflow: hidden; 
    text-overflow: ellipsis; 
    display: -webkit-box; 
    line-height: 24px;  /* fallback */ 
    max-height: 48px;  /* fallback */ 
    -webkit-line-clamp: 2; /* number of lines to show */ 
    -webkit-box-orient: vertical; 
} 

.text a { 
    position: absolute; 
} 

मुझे लगता है कि आसान होना चाहिए ... अग्रिम धन्यवाद

कोड इस प्रकार की तरह है।

+0

क्या आप उस 'div' में 'a' नहीं डाल सकते? –

+0

'यदि हमारे टेक्स्ट में दो से अधिक पंक्तियां हैं = => जावास्क्रिप्ट की तरह लगता है। और जब आप विंडो का आकार बदलते हैं (सही व्यवहार रखने के लिए) –

+0

यह इलिप्सिस संपत्ति 2 लाइनों के बारे में परवाह कर रही है ... यदि मैं div के अंदर एक लिखता हूं ... http://jsfiddle.net/ सीएसवाईजेसी/2879/यह ठीक है अगर "अधिक" एक ही पंक्ति में है लेकिन यदि नहीं, तो यह नहीं है। –

उत्तर

0

.text के अंदर div अभी भी ब्लॉक तत्व के रूप में प्रदर्शित किया जा रहा है। ठीक करने के लिए इस का उपयोग करें:

.text > div { display: inline; } 

http://jsfiddle.net/csYjC/2880/

+0

हाय, जिसने पाठ के साथ "अधिक" इनलाइन को सही तरीके से रखा है।लेकिन ध्यान दें कि यदि आप खिड़कियों का आकार बदलते हैं, तो अधिक सही जगह पर नहीं है (थोड़ा पागल हो जाता है)। इसके अलावा, मुझे अभी एहसास हुआ कि फ़ायरफ़ॉक्स में, इलिप्सिस काम नहीं कर रहा है। –

+0

@ फेरननेगर '.text में बदलें {स्थिति: रिश्तेदार;}' http://jsfiddle.net/hegsgwrv/ – OJFord

+0

हाय। मैंने कोशिश की। अभी भी काम नहीं कर रहा है। अब पाठ के साथ हमेशा इनलाइन है (जब मैं इसे दो पंक्तियों को पूरा कर लेता हूं)। यदि आप इसे बहुत आकार देते हैं, तो आप देखेंगे कि 'अधिक' लिंक गायब हो जाता है। और अभी भी फ़ायरफ़ॉक्स के साथ इलिप्सिस नहीं है ... यह एक और बात हो सकती है। –

0

डेमो: http://jsbin.com/hatuv/1/edit

<div class="text"> 
    <p>Lorem ipsum dolor sit amet, Lorem Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem Lorem i </p> <a href="#">More</a> 
    </div> 

सीएसएस

.text { 
    overflow: hidden /* just for clearing */ 
} 
.text p { 
    display: inline-block; 
    text-overflow: ellipsis; 
    width: 100%; 
    white-space: nowrap; 
    overflow: hidden; 
    margin-top: 0; 
    box-sizing: border-box; 
    padding-right: 40px; 
    margin-right: -40px; 
} 
.text a { 
    float: right 
} 
+0

यह अच्छा लग रहा है। क्या टेक्स्ट के नीचे "अधिक" बटन जा रहा है जब टेक्स्ट पहले से ही सभी लाइनों को फिट कर रहा है? इसके अलावा, आप केवल 1 लाइन का उपयोग कर रहे हैं, मैं 2 लाइनों के साथ कोशिश कर रहा हूँ। –

+0

मुझे jQuery स्क्रिप्ट के बिना काम करने के लिए बहु-पंक्ति नहीं मिल सका, यही वह है जिसका मैंने उपयोग समाप्त कर दिया। jQuery संक्षिप्त प्लगइन – Christina

+0

@ फेरननेगर - फ़ायरफ़ॉक्स और बहु-पंक्ति ने मुझे समस्याएं दीं इसलिए मैंने छोड़ दिया और jQuery संक्षिप्त प्लगइन का उपयोग करके समाप्त हो गया – Christina

-2

बस कुछ वर्ग div और देने के लिए जोड़ने यह display:inline;:

<div class="text"> 
    <div class="loremclass">Lorem ipsum dolor sit amet, Lorem Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem Lorem ipsum dolor sit amet</div> 
    <a href="#">More</a> 
</div> 

और

body { 
    margin: 20px; 
} 

.text{ 
    display: inline; 
    overflow: hidden; 
    text-overflow: ellipsis; 
    display: -webkit-box; 
    line-height: 24px;  /* fallback */ 
    max-height: 48px;  /* fallback */ 
    -webkit-line-clamp: 2; /* number of lines to show */ 
    -webkit-box-orient: vertical; 
} 

.text a { 
    position: absolute; 
} 
.loremclass{display:inline;} 
+0

जब पाठ 2 सभी लाइनों को फ़िट नहीं कर रहा है तो 'अधिक' लिंक टेक्स्ट को इनलाइन नहीं करता है। –

+0

अब मैंने अपडेट किया। कृपया अब कोशिश करो। – developppper

+0

हाँ अब जैसा हमने पहले कोशिश की थी। टेक्स्ट के साथ इनलाइन नहीं होने पर 'मोर' पागल स्थिति में आता है (इसे देखने के लिए विंडो को फिर से आकार दें)। –

-1

-webkit-लाइन-क्लैंप पर एक शुद्ध सीएसएस विधि आधार है, और आप कर सकते हैं कस्टम एक मालिक की तरह ... और अधिक सामग्री:

@-webkit-keyframes ellipsis {/*for test*/ 
 
    0% { width: 622px } 
 
    50% { width: 311px } 
 
    100% { width: 622px } 
 
} 
 
.ellipsis { 
 
    max-height: 40px;/* h*n */ 
 
    overflow: hidden; 
 
    background: #eee; 
 

 
    -webkit-animation: ellipsis ease 5s infinite;/*for test*/ 
 
    /** 
 
    overflow: visible; 
 
    /**/ 
 
} 
 
.ellipsis .content { 
 
    position: relative; 
 
    display: -webkit-box; 
 
    -webkit-box-orient: vertical; 
 
    -webkit-box-pack: center; 
 
    font-size: 50px;/* w */ 
 
    line-height: 20px;/* line-height h */ 
 
    color: transparent; 
 
    -webkit-line-clamp: 2;/* max row number n */ 
 
    vertical-align: top; 
 
} 
 
.ellipsis .text { 
 
    display: inline; 
 
    vertical-align: top; 
 
    font-size: 14px; 
 
    color: #000; 
 
} 
 
.ellipsis .overlay { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 50%; 
 
    width: 100%; 
 
    height: 100%; 
 
    overflow: hidden; 
 

 
    /** 
 
    overflow: visible; 
 
    left: 0; 
 
    background: rgba(0,0,0,.5); 
 
    /**/ 
 
} 
 
.ellipsis .overlay:before { 
 
    content: ""; 
 
    display: block; 
 
    float: left; 
 
    width: 50%; 
 
    height: 100%; 
 

 
    /** 
 
    background: lightgreen; 
 
    /**/ 
 
} 
 
.ellipsis .placeholder { 
 
    float: left; 
 
    width: 50%; 
 
    height: 40px;/* h*n */ 
 

 
    /** 
 
    background: lightblue; 
 
    /**/ 
 
} 
 
.ellipsis .more { 
 
    position: relative; 
 
    top: -20px;/* -h */ 
 
    left: -50px;/* -w */ 
 
    float: left; 
 
    color: #000; 
 
    width: 50px;/* width of the .more w */ 
 
    height: 20px;/* h */ 
 
    font-size: 14px; 
 

 
    /** 
 
    top: 0; 
 
    left: 0; 
 
    background: orange; 
 
    /**/ 
 
}
<div class='ellipsis'> 
 
    <div class='content'> 
 
     <div class='text'>text text text text text text text text text text text text text text text text text text text text text </div> 
 
     <div class='overlay'> 
 
      <div class='placeholder'></div> 
 
      <div class='more'>...<a href="http://hai.li">more</a></div> 
 
     </div> 
 
    </div> 
 
</div>

+0

अच्छा है, लेकिन केवल वेबकिट ब्राउज़र में काम करता है। तो उत्पादन के लिए उपयोग करने योग्य नहीं है। – Teetrinker

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