2012-06-29 26 views
168

Aşağıdaki işaretleme verildiğinde, bir hücreyi (sütundaki tüm hücreler), içeriğin genişliğini değil de (varsayılan davranış) genişliğine sığdırmaya zorlamak için CSS'yi nasıl kullanabilirim?Hücre genişliğini içeriğe sığdır

<style type="text/css"> 
td.block 
{ 
border: 1px solid black; 
} 
</style> 
<table style="width: 100%;"> 
<tr> 
    <td class="block">this should stretch</td> 
    <td class="block">this should stretch</td> 
    <td class="block">this should be the content width</td> 
</tr> 
</table> 

DÜZENLEME: Ben sert genişliği kodu yazabilirsiniz farkındayım ama doğrusu o sütundaki gidecek içeriği dinamik olduğu gibi bunu istemem.

Aşağıdaki resme bakarak, ilk görüntü biçimlendirmenin ürettiği şeydir. İkinci görüntü istediğim şey.

enter image description here

+0

Sorunu anlamıyorum. Son sütunu belirli bir genişlikte mi sınırlamak istiyorsunuz? – MetalFrog

+5

@diEcho Bunun oldukça açık olduğunu düşündüm. Bir resim veya iki tane ekleyeceğim. – Mansfield

+0

[CSS tablo sütunu otomatik genişliği] 'nin olası kopyası (https://stackoverflow.com/questions/4757844/css-table-column-autowidth) – Vadzim

cevap

310

Ben sorunuzu anlamak emin değilim, ama bunun bir bıçak alacağım. JSfiddle of the example.

HTML:

<table style="width: 100%;"> 
<tr> 
    <td class="block">this should stretch</td> 
    <td class="block">this should stretch</td> 
    <td class="block">this should be the content width</td> 
</tr> 
</table> 

CSS:

td{ 
    border:1px solid #000; 
} 

tr td:last-child{ 
    width:1%; 
    white-space:nowrap; 
} 
+1

neden "

' yazabilirsiniz '
diEcho

+9

@diEcho Bu bölümü ben yazmadım, bu örnek koddan. Ne olursa olsun, genişlik özelliğini elemanlarda kullanmak kötü bir uygulamadır. Bu hızlı örnekte, satır içi CSS iyidir, ancak üretim düzeyi koduysa bir dosyaya soyutlanmalıdır. – MetalFrog

+30

Bu IMO'nun daha temiz bir yolu, "nostretch" (ya da bunun gibi bir şey) adında bir stil tanımlamak ve ardından CSS'de nostretch tanımlamak ve genişliği:% 1 ve nowrap. Sonra son TD 'class = "nostretch block"' olacaktır. Bu şekilde istediğiniz herhangi bir hücreyi "sıkıştırabilirsiniz". –

26

sorununuzu çözecektir

max-width:100%; 
white-space:nowrap; 

ayarlanıyor.

+2

Firefox üzerinde denedim ve işe yaramadı. – Adam

1

CSS genişliğini, öğenin tüm özelliklerine göre% 1 veya% 100 olarak ayarlamak, üst öğeyle ilişkilidir. Her ne kadar Blink Rendering Engine (Krom) ve Gecko (Firefox) yazım anında% 1 veya% 100 (sütunları küçültmek veya mevcut alanı doldurmak için bir sütun) yapmak gibi görünüyor olsa da, tüm CSS özelliklerine göre garanti edilmez. Onu düzgün bir şekilde işleyebilirim.

Seçeneklerden biri CSS4 esnek divs tablo değiştirmektir: Yeni tarayıcılarda çalışır

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

yani IE11 + makalenin altındaki tabloya bakınız. Benim için

1

, bu tablo ve sütunlar için iyi AutoFit ve autoresize olan (kullanım css! önemlisi ... sadece olmadan eğer yapabilirsen) tablo için css genişliğini belirtmek etmeyin

.myclass table { 
    table-layout: auto !important; 
} 

.myclass th, .myclass td, .myclass thead th, .myclass tbody td, .myclass tfoot td, .myclass tfoot th { 
    width: auto !important; 
} 

veya tablo sütunları için. Tablo içeriği daha büyükse, ekran boyutuna geçer.

İlgili konular