2011-06-13 35 views
5

यह व्यवहार इस कोड के साथ, टेबल का प्रयोग कर प्राप्त किया जा सकता है जैसे:मेक चौड़ाई आधारित बराबर व्यापक पर एक

इस के
<style> 
table { 
    table-layout:fixed; 
    width:100%; 
} 
td {border:1px solid red;} 
</style> 
<table> 
<tr> 
    <td>Hello</td> 
    <td>WWWWWWWWWWWWWWWWWWWWWW</td> 
</tr> 
</table> 

आउटपुट के रूप में मैं चाहता हूँ होगा:

|Hello    |WWWWWWWWWWWWWWWWWWWWWW| 

लेकिन यह समाधान नई लाइन पर (इस मामले में टीडीएस) के अंदर तत्वों को लपेटता नहीं है अगर यह स्क्रीन चौड़ाई के लिए उपयुक्त नहीं है! तो मैं divs और css का उपयोग करके ऐसा करना चाहता हूं। अगर मैं का उपयोग करें:

<style> 
#eq > div { 
    width: 400px; 
    float: left; 
} 
</style> 
<div id="eq"> 
    <div>Hello</div> 
    <div>WWWWWWWWWWWWWWWWWWWWWW</div> 
</div> 

ज़रूर यह काम करता है और आउटपुट एक ही है, लेकिन निश्चित रूप से पाठ और #eq अंदर तत्वों की संख्या चर रहे हैं! तो अगर पाठ "WWWWWWWWWWWWWWWWWWWWWW" को "lol" में बदल दिया जाएगा, तत्व बेतुका व्यापक होंगे। दूसरी तरफ, यदि मैं इसे लंबे पाठ में बदलता हूं तो परिभाषित चौड़ाई, अन्य सभी छोटे तत्वों की चौड़ाई छोटी होगी। तो अंतिम प्रश्न यह है कि: मैं सभी तत्वों की चौड़ाई को व्यापक HTML के रूप में चौड़ा कैसे कर सकता हूं, शुद्ध HTML & सीएसएस का उपयोग करके लपेटने की क्षमता और चौड़ाई को मैन्युअल रूप से निर्दिष्ट किए बिना?

+0

मुझे आश्चर्य होगा कि सीएसएस केवल इसका समाधान है, मुझे पूरा यकीन है कि आपको जावास्क्रिप्ट की आवश्यकता होगी या गणना करने के समान ही, यह jquery का उपयोग करके हासिल करना बहुत आसान है। – Blowsie

+1

हाँ मैं वही सोचता हूं, लेकिन यह दिखाता है कि सारणी जैसे पुरातन समाधानों के खिलाफ कुछ चीजों में सीएसएस अभी भी खराब है। कितनी शर्म की बात है। सामान्य डिजाइन के लिए जावास्क्रिप्ट बुरा है। – gadelat

+1

डिज़ाइन में जावास्क्रिप्ट बहुत आम है, आधुनिक ब्राउज़र जावास्क्रिप्ट प्रदर्शन पर ध्यान केंद्रित कर रहे हैं और जावास्क्रिप्ट लाइब्रेरी की तरह Jquery प्रभावी जावास्क्रिप्ट लिखना बहुत आसान बनाता है। जावास्क्रिप्ट वाला कोई भी व्यक्ति अपने ब्राउज़र में अक्षम होगा अल्पसंख्यक होगा। अधिकांश आधुनिक वेबसाइटें भरोसा करती हैं और उनके लिए जावास्क्रिप्ट की आवश्यकता होती है ताकि वे ठीक से काम कर सकें। – Blowsie

उत्तर

2

टेबल्स आसान विकल्प होगा। क्या आपने टेबल सेल पर forcing wrap की कोशिश की है?

td { 
    word-wrap: break-word; 
} 

मुझे नहीं लगता कि आपके DIV विचार के लिए एक शुद्ध सीएसएस/एचटीएमएल समाधान है।

+0

वर्ड-रैप केवल तत्व के अंदर पाठ को लपेटता है, पूरे तत्व नहीं। विशेष मामलों में कई तत्वों के साथ यह इन तत्वों में पाठ की केवल एक-अक्षर पंक्तियों के साथ समाप्त होगा। – gadelat

0

पार्टी के लिए देर से एक छोटी सी, सुनिश्चित करने के लिए है, लेकिन मैं एक समाधान की एक JSFiddle कि के साथ या बिना जावास्क्रिप्ट मेरे लिए बहुत अच्छी तरह से काम कर रहा है, पोस्ट किया है:

http://jsfiddle.net/jpgringo/LTEsZ/7/

HTML:

foobar

Wampeter, Foma, Granfalloons

"हे Oysters, आओ और हमारे साथ चलना!"
वालरस ने विनती की थी।
"एक सुखद पैदल दूरी पर, एक सुखद बात,
सागर समुद्र तट के साथ:।
हम चार से अधिक के साथ ऐसा नहीं कर सकते,
प्रत्येक के लिए एक हाथ देने के लिए"

=========================================

सीएसएस:

body { 
    font-family:Verdana, Arial, sans-serif; 
    font-size:10px; 
} 

#myContentSection { 
    display:table; 
    width:100%; 
} 

#myContentSection .content { 
    display:table-row; 
} 

#myContentSection .subsection { 
    display:table-cell; 
    border:solid 1px gray; 
    /* the next line is optional, but gives equal-width columns if you know the 
    number of columns ahead of time */ 
    width:33%; 
    padding:4px 8px; 
} 

===================================== ===

(वैकल्पिक) जे एस:

var sectionID = 'myContentSection'; 
var subsectionClass = 'subsection'; 

var contentSection = document.getElementById(sectionID); 
var colCount = contentSection.getElementsByClassName('subsection').length; 
console.log('# of columns:', colCount); 
var width = Math.floor(100/colCount); 
console.log('column width: ', width,'%'); 
var css = '#' + sectionID + ' .' + subsectionClass + ' { width: ' + width + '%; }'; 
var style = document.createElement('style'); 

style.type = 'text/css'; 
if (style.styleSheet){ 
    style.styleSheet.cssText = css; 
} else { 
    style.appendChild(document.createTextNode(css)); 
} 

document.head.appendChild(style); 
+0

यह तत्वों को लपेटता नहीं है, केवल पाठ और उसी व्यवहार को तालिकाओं का उपयोग करके बहुत आसान किया जा सकता है जैसा कि मैंने अपनी पोस्ट में दिखाया था। मुझे यह सटीक व्यवहार चाहिए, लेकिन स्वचालित रूप से नई लाइनों में कोशिकाओं को लपेटने के साथ। – gadelat

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