2017-07-10 16 views
5

मैं एक <div> जो मैं पर निम्नलिखित गुण निर्धारित किया है के अंदर एक <p> टैग है: <p> टैग पाठ का एक बहुत कुछ शामिल हैशब्द का पता लगाने का कारण बनता है अतिप्रवाह

div { 
    height: 105px; 
    width: 60px; 
    overflow: hidden; 
} 

तो इसके बारे में कुछ काट दिया जाएगा ।

मेरा लक्ष्य यह पता लगाने के लिए है कि पहला शब्द क्या नहीं दिखाया जा रहा है।

उदाहरण के लिए

, इस परिदृश्य में:

div { 
 
    height: 105px; 
 
    width: 60px; 
 
    overflow: hidden; 
 
}
<div> 
 
    <p>People assume I'm a boiler ready to explode, but I actually have very low blood pressure, which is shocking to people.</p> 
 
</div>

समारोह शब्द "विस्फोट" लौट आते हैं।

मुझे this question से पता है कि अगर ओवरफ्लो है तो पता लगाना बहुत आसान है, लेकिन क्या हम इसे एक कदम आगे ले सकते हैं और पता लगा सकते हैं कि कौन सा शब्द छुपाया जा सकता है?

+2

इसे प्राप्त करने के दो तरीके मेरे दिमाग में आते हैं। बिल्कुल जेएस के साथ। सबसे पहले आपको पैरेंट डिवी चौड़ाई प्राप्त करने की आवश्यकता होगी, फिर आप प्रत्येक शब्द को '' टैग के अंदर लपेट सकते हैं और उन्हें तब तक अपनी स्थिति को देख सकते हैं जब तक आप चौड़ाई से अधिक x समन्वय नहीं पाते। दूसरी विधि एक और 'पी' तत्व बनाना और चौड़ाई के लिए अक्षर जांच द्वारा अक्षर जोड़ना होगा, जब तक कि चौड़ाई पैरेंट div से बड़ी न हो। –

+0

धन्यवाद मार्क, मैं बस आपके दूसरे सुझाव को लागू कर रहा था। क्या आपको लगता है कि एक समय में एक शब्द को प्रस्तुत करना और चौड़ाई की जांच करना महंगा है? – MarksCode

+0

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

उत्तर

4

कई दृष्टिकोण के बाद मुझे लगता है कि सबसे आसान एक के बाद एक शब्द जोड़ने है, तो जाँच लें कि पैरा अतिप्रवाह:

window.onload=function(){ 
 

 
var el=document.getElementById("el"); 
 
var words=el.textContent.split(" "); 
 
el.textContent=""; 
 

 
var thatword=words.find(function(word,i){ 
 
    el.textContent+=(i?" ":"")+word; 
 
    //console.log(el.clientWidth,el.scrollWidth,el.clientHeight,el.scrollHeight); 
 
    return el.clientWidth < el.scrollWidth || el.clientHeight < el.scrollHeight; 
 
}); 
 

 
alert(thatword); 
 

 
};
#el { 
 
    height: 105px; 
 
    width: 60px; 
 
    overflow: hidden; 
 
}
<div> 
 
    <p id="el">People assume I'm a boiler ready to explode, but I actually have very low blood pressure, which is shocking to people.</p> 
 
</div>

यह वास्तव में सुधार बाद में spead रेंडरिंग सकता है के रूप में सभी उमड़ती सामग्री है फिर कभी नहीं जोड़ा

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