2017-06-08 24 views
5

मेरे पास नीचे एक ग्रिड लेआउट है जो header में से एक है। Div में एक पाठ है जिसका चौड़ाई 1fr है। मैं उस div के अंदर पाठ को बहुत लंबा होने पर छोटा कर देना चाहता हूं। text-overflow को ellpsis के रूप में जोड़ना काम नहीं कर रहा है। कोई विचार यह कैसे करना है?मैं सीएसएस ग्रिड लेआउट में इलिप्सिस में टेक्स्ट-ओवरफ्लो कैसे सेट करूं?

इसे ग्रिड होना चाहिए और मैं इसे बदलने का कोई तरीका नहीं हूं।

html, 
 
body { 
 
    height: 100%; 
 
    width: 100%; 
 
    overflow: hidden; 
 
} 
 

 
body { 
 
    display: flex; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex: 1; 
 
} 
 

 
content { 
 
    flex: 1; 
 
    background-color: red; 
 
} 
 

 
header { 
 
    background-color: limegreen; 
 
    display: grid; 
 
    grid-template-columns: 0fr 1fr 0fr; 
 
} 
 

 
header div { 
 
    border: 1px solid orange; 
 
} 
 

 
.long { 
 
    text-overflow: ellipsis; 
 
}
<div class="container"> 
 
    <header> 
 
    <div>Left</div> 
 
    <div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> 
 
    <div>Right</div> 
 
    </header> 
 
    <content> 
 
    </content> 
 
</div>

+0

इस संपत्ति को .long {white-space: nowrap; overflow: hidden; text-overflow: elipses;} उम्मीद है कि यह यहां एक संदर्भ लिंक है https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/ –

+0

@Michael_B यह मेरे लिए अद्वितीय प्रतीत होता है और यह एक डुप्लिकेट नहीं है, ओपी सीएसएस ग्रिड का उपयोग करके एक पंक्ति में छंटनी के बारे में पूछ रहा है, बहु-रेखा गैर-ग्रिड समाधान की तुलना में एक अलग जानवर जुड़े डुप्लिकेट प्रश्न – Lounge9

+0

@ लाउंज 9, यह वास्तव में सवाल नहीं है। यह जवाब है। और इस प्रश्न का डुप्लिकेट में एक पूर्ण जवाब है। (इसलिए, उपर्युक्त राज्यों में नोट: ** इस प्रश्न का उत्तर यहां दिया गया है **)। –

उत्तर

5

परिवर्तन .long ग white-space सेट नीचे

.long { 
    text-overflow: ellipsis; 
    white-space: nowrap; 
    overflow: hidden; 
} 

कारण है कि आप सफेद sapce और अतिप्रवाह जोड़ने की जरूरत के लिए एस एस के नीचे है:

  1. आप white-space: nowrap जरूरत ब्राउज़रों बताने के लिए रैप नहीं करने के लिए जब पाठ की लंबाई ब्लॉक चौड़ाई, white-space गुण युक्त से अधिक डिफ़ॉल्ट मान सामान्य है, जो इंगित करता है कि यह लपेट सकता है, इसलिए यह उस स्थिति में मौजूद नहीं होगा जहां टेक्स्ट ओवरफ़्लो;
  2. overflow डिफ़ॉल्ट मान जब पाठ खंड युक्त से अधिक है, यह सिर्फ प्रदर्शित करते हैं, दिखाई दे रहा है, तो प्रदर्शित करने के लिए पाठ से ऊपर जाने का है, तो आप hidden को overflow सेट ही अगर कोई जरूरत नहीं है। फिर, जब पाठ पूरी तरह से प्रदर्शित नहीं हो सकता है, तो यह text-overflow संपत्ति का उपयोग करेगा।
+4

यह मेरे लिए काम नहीं करता है। एक ग्रिडलेआउट में एफआर-इकाइयों का उपयोग करते समय ऐसा लगता है कि यह सिर्फ बॉक्स को फैलाता है। या मुझ से कुछ गलत हो रहा है? आमतौर पर उपर्युक्त कोड काम करता है, लेकिन पहली बार मैंने ग्रिड लेआउट में कोशिश की। –

+0

क्या यह मूल रूप से वही उत्तर नहीं है एहसान ने दिया? –

3

जोड़े overflow: hidden और white-space: nowrap जब आप इस्तेमाल किया text-overflow

html, 
 
body { 
 
    height: 100%; 
 
    width: 100%; 
 
    overflow: hidden; 
 
} 
 

 
body { 
 
    display: flex; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex: 1; 
 
} 
 

 
content { 
 
    flex: 1; 
 
    background-color: red; 
 
} 
 

 
header { 
 
    background-color: limegreen; 
 
    display: grid; 
 
    grid-template-columns: 0fr 1fr 0fr; 
 
} 
 

 
header div { 
 
    border: 1px solid orange; 
 
} 
 

 
.long { 
 
    text-overflow: ellipsis; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
}
<div class="container"> 
 
    <header> 
 
    <div>Left</div> 
 
    <div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> 
 
    <div>Right</div> 
 
    </header> 
 
    <content> 
 
    </content> 
 
</div>

+0

यह वह चाल है जो क्रोम में काम करती है, लेकिन फ़ायरफ़ॉक्स (वर्तमान में v57) विशेष रूप से सीएसएस ग्रिड के साथ छिड़काव को संभाल नहीं पाती है। '.long' तत्व सिर्फ '.container' व्यापक को धक्का देता है। – Lounge9

2

1) जब उपयोग text-overflow: ellipsis; को overflow: hidden; का भी उपयोग करना चाहिए।

2) white-space: nowrap; नई लाइन में टेक्स्ट ब्रेक की अनुमति नहीं देता है।

तो, यह की तरह बदलें:

.long { 
    text-overflow: ellipsis; 
    overflow: hidden;/*/<------------new/*/ 
    white-space: nowrap;/*/<---------new/*/ 
} 
0

ऊंचाई को परिभाषित करें, nowrap और overflow: hidden

html, 
 
body { 
 
    height: 100%; 
 
    width: 100%; 
 
    overflow: hidden; 
 
} 
 

 
body { 
 
    display: flex; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex: 1; 
 
} 
 

 
content { 
 
    flex: 1; 
 
    background-color: red; 
 
} 
 

 
header { 
 
    background-color: limegreen; 
 
    display: grid; 
 
    grid-template-columns: 0fr 1fr 0fr; 
 
} 
 

 
header div { 
 
    border: 1px solid orange; 
 
} 
 

 
.long { 
 
    height: 20px; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    text-overflow: ellipsis; 
 
}
<div class="container"> 
 
    <header> 
 
    <div>Left</div> 
 
    <div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> 
 
    <div>Right</div> 
 
    </header> 
 
    <content> 
 
    </content> 
 
</div>

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

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