Bir tablo hücresinde çok satırlı metin nasıl gösterilir


119

Veritabanından bir tablo hücresine bir paragraf göstermek istiyorum.

Sonuç, veritabanında nasıl organize edildiğini göz ardı eden büyük bir 1 satırdır. örneğin 'girişleri' yok saymak (yeni satırlar)

Tam olarak veritabanına nasıl yazıldığına göre göstermek istiyorum.

Örneğin paragraf şu şekilde kaydedilirse:

hello ,
my name is x.

Bunun yerine tam olarak böyle gösterilmesini istiyorum:

hello, myname is x.

Yanıtlar:


164

white-space:preUygun olana uygulanan CSS'yi kullanmak istiyorsunuz <td>. Bunu tüm tablo hücrelerine yapmak için, örneğin:

td { white-space:pre }

Alternatif olarak, işaretlemenizi değiştirebiliyorsanız <pre>, içeriğinizin etrafında bir etiket kullanabilirsiniz . Varsayılan olarak web tarayıcıları, aynı white-space:prekuralı bu öğeye uygulamak için kendi kullanıcı aracısı stil sayfasını kullanır .

PRE öğesi, görsel kullanıcı aracılarına ekteki metnin "önceden biçimlendirilmiş" olduğunu söyler. Önceden biçimlendirilmiş metni işlerken görsel kullanıcı aracıları:

  • Beyaz alanı olduğu gibi bırakabilir.
  • Metni sabit aralıklı yazı tipiyle işleyebilir.
  • Otomatik kelime kaydırmayı devre dışı bırakabilir.
  • Çift yönlü işlemeyi devre dışı bırakmamalıdır.

Beğenme, white-spaceyaygın olarak desteklenen bir CSS 2.1 özelliğidir. IE8'de test edildi, harika çalışıyor.
leesei

Şimdi white-space: pre;bir <td>etikete uygulandığında göz ardı edilen bir durumdayım . <pre></pre>İçeriğimizi sarmak için kullanmak iyi çalışır, ancak bu tablonun (excel'e dışa aktarım) kullanılması nedeniyle, çok sayıda sütun ve satır dışa aktarılan dosyanın boyutunu balonlar ve excel'in dosyayı okurken çökmesine neden olur. (garip, biliyorum). Bunu gören veya bir çözüm fikri olan başka biri var mı?
JoeBrockhaus

1
Bu çözüm mükemmel olmaktan uzaktır. Excel'in satır sonu olan hücreler için birden çok satır ürettiği sonucunu verir. Tek doğru cevap burada bulunabilir: bennadel.com/blog/…
Elmue

55
style="white-space:pre-wrap; word-wrap:break-word"

Bu yeni hat sorununu çözecektir. ön etiket, gerekenden daha fazla CSS ekler.


1
Bu güzel, hedefli bir çözüm. <pre>Etiket sadece izin satır karakterleri ötesinde sürü şey yok, ama bu stil ayarları tek sorun takdim çözmek.
hamle

Verilerimin yeni satır içerdiği bir sorun yaşadım. Metni <br/> veya <div> veya <pre> ile değiştirmek gibi diğer çözümler yalnızca metin olarak değerlendiriliyordu. Bu çözüm, bu sorunun üstesinden gelmek için mükemmel çalışıyor.
Anshuman Goel

Fantastik!! Bu benim için çok iyi çalışıyor. Birden çok metni listeleyen bir JDataTable'ım vardı ve metni düzgün bir şekilde kaydırmak için css'e ihtiyacım vardı! Gün kurtarıcı Çok teşekkürler!
PatsonLeaner

1
Bu benim için satır sonlarını korumak açısından işe yarıyor, ancak her hücrenin üstüne bir satır sonu ekliyor ... herhangi bir çözüm var mı?
jtr13

30

İçeriği bir <pre>(önceden biçimlendirilmiş metin) etiketine sarın

<pre>hello ,
my name is x.</pre>

3
Ancak bu, yazı tipinin üzerine tek aralıklı yazılır.
hardmooth

23

Bu sorunu çözmek için iki öneri:

ÇÖZÜM 1: <div style="white-space:pre;">{database text}</div>veya<pre>{database text}</pre>

Metninizin html etiketleri veya css özellikleri yoksa bu iyi bir çözümdür. Ayrıca, örneğin sekmelerin korunmasına izin verir.

ÇÖZÜM 2: Değiştir \nile<p></p> or <br/>

Bu, diğer metin özelliklerini veya biçimlendirmesini kaybetmeden yalnızca kesme satırları eklemek istiyorsanız bir çözümdür. Php'de bir örnek şöyle olacaktır:$text = str_replace("\n","<br />",$database_text);

Ayrıca <p></p>veya kullanabilirsiniz <div></div>, ancak bu biraz daha fazla metin ayrıştırma gerektirir.


7

Sunucu tarafı kodunuzda, yeni satırları ( \n) ile değiştirin <br/>.

PHP kullanıyorsanız, kullanabilirsiniz nl2br()


6

Merhaba ben de aynı şeyi yapmam gerekiyordu! Neden diye sormayın ama python kullanarak bir html oluşturuyordum ve bir listedeki öğeler arasında döngü yapmak ve her öğenin bir tablonun TEK HÜCRESİ İÇİNDE kendi satırını almasını sağlamak için bir yönteme ihtiyacım vardı.

Br etiketinin benim için iyi çalıştığını buldum. Örneğin:

<!DOCTYPE html>
<HTML>
    <HEAD>
        <TITLE></TITLE>
    </HEAD>
    <BODY>
  <TABLE>
            <TR>
                <TD>
                    item 1 <BR>
                    item 2 <BR>
                    item 3 <BR>
                    item 4 <BR>
                </TD>
            </TR>
        </TABLE>
  </BODY>

Bu istediğim çıktıyı üretecek.


5

Her satırdan sonra html kod etiketini kullanıyorum (aşağıya bakın) ve benim için çalışıyor.

George Benson </br> 123 Main Street </br> New York, Ny 12344 </br>


2
bir cevap değil bir yorum olmalıdır.
Deep Sharma

<br> tablo semantiğini bozar. Tabloyu metin tabanlı bir tarayıcı kullanarak görüntülerken, yeni satırlar tablo satırları gibi gösterilir.
JAT86

3

aşağıdaki kod bana sihir gibi çalışıyor >>

td { white-space:pre-line }

1

Sadece <br>içini ekledim <td>ve iyi çalışıyor, çizgiyi kır!


0

\nİçine koymak istediğiniz bir dize değişkeniniz tdvarsa, deneyebilirsiniz

<td>
    {value
        .split('\n')
        .map((s, index) => (
            <React.Fragment key={index}>
                {s}
                <br />
            </React.Fragment>
        ))}
</td>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.