2011-06-13 14 views
5

Bu davranış bu kodla gibi tabloları kullanarak elde edilebilir:Yap genişliği tabanlı ile aynı değeri en geniş üzerinde bir

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

Çıktı istediğim gibi olacaktır:

|Hello    |WWWWWWWWWWWWWWWWWWWWWW| 

Ama Bu çözüm, ekran genişliğine uymuyorsa, içindeki elemanları (bu durumda tds) yeni satıra kaydırmaz! Yani bunu div ve css kullanarak yapmak istiyorum. i kullanıyorsanız:

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

Tabii çalıştığını ve çıkışlar aynı, ama tabii ki Metin ve #eq içindeki elemanların sayısı değişkendir! Yani, eğer metinler "lol" olarak değiştirilirse, öğeler saçma bir şekilde genişler. Diğer tarafta, daha uzun metne değiştirdiğimde, genişlik tanımlanmışsa, diğer tüm küçük elemanların genişliği daha küçük olacaktır. Öyleyse son soru şudur: Tüm elemanların genişliğini, geniş html & css kullanarak ve genişliğini manuel olarak belirtmeden sarmalama yeteneğine sahip en geniş öğe kadar genişlikte nasıl yapabilirim?

+0

Bunun için sadece bir çözüm varsa şaşıracaktım, hesaplama yapmak için JavaScript ya da benzeri olması gerekeceğinden eminim, bu jQuery kullanarak elde etmek için çok basit. – Blowsie

+1

Evet, aynı şekilde düşünüyorum, ama bu sadece css'nin bazı şeylerde tablo gibi arkaik çözümlere karşı hala fakir olduğunu gösteriyor. Ne utanç. Ortak tasarım için Javascript kötülüktür. – gadelat

+1

Tasarımda JavaScript çok yaygındır, modern tarayıcılar JavaScript performansına odaklanır ve JavaScript kütüphanesi JQuery gibi etkili JavaScript yazmayı çok kolaylaştırır. Tarayıcılarında JavaScript devre dışı olan herkes azınlık olacaktır. Modern web sitelerinin çoğunluğu, düzgün çalışması için onlara güveniyor ve JavaScript gerektiriyor. – Blowsie

cevap

2

Tablolar daha kolay seçenek olacaktır. Tablo hücrelerinde forcing wrap denediniz mi?

td { 
    word-wrap: break-word; 
} 

Ben senin DIV fikrine saf CSS/HTML çözüm yoktur sanmıyorum.

+0

Word-wrap, yalnızca öğenin içindeki metni sarar, tüm öğeyi değil. Birçok unsuru olan özel durumlarda, bu elemanlarda sadece bir harfli metin satırları ile sonuçlanırdı. – gadelat

0

geç partiye Biraz, emin olmak için, ama ben JavaScript ile veya olmadan, benim için çok işe yaramış bir çözümün bir JSFiddle gönderdiniz:

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

HTML:

filanca

Wampeter, Foma, Granfalloons

"O İstiridye, gel bizimle yürü!"
The Walrus beseech yaptı.
"keyifli bir yürüyüş, hoş bir konuşma, tuzlu sahilde bulunan
.
Biz
her birine bir el vermek için ve dörtten fazla yapamaz"

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

CSS:

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; 
} 

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

(isteğe bağlı) JS:

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

Bu, öğeleri sarmalamaz, yalnızca yazı ve aynı davranışı, yazılamda gösterdiğim gibi tabloları kullanarak çok daha kolay bir şekilde gerçekleştirebilirsiniz. Bu kesin davranışı istiyorum, ancak hücreleri yeni hatlara otomatik olarak sarmakla. – gadelat

İlgili konular