Bir ön etikete nasıl metin sarabilirim?


722

pre etiketleri HTML'deki kod blokları ve komut dosyaları yazarken çıktıları hata ayıklamak için çok kullanışlıdır, ancak uzun bir satır yazdırmak yerine metnin sözcük kaydırmasını nasıl yapabilirim?

Yanıtlar:


1012

CSS'deki bu sayfadan cevap :

pre {
    white-space: pre-wrap;       /* Since CSS 2.1 */
    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
    white-space: -pre-wrap;      /* Opera 4-6 */
    white-space: -o-pre-wrap;    /* Opera 7 */
    word-wrap: break-word;       /* Internet Explorer 5.5+ */
}

7
white-space:pre-line;(ve tüm tarayıcı uyumlu lezzetler) bazı durumlarda (örneğin sekmeler olmadan) satırın başındaki alanı (bazı varsa)
kaldırdığı

5
@MediaVince, pre-linetüm boşlukları daraltır (yalnızca satırın başında değil). developer.mozilla.org/en-US/docs/Web/CSS/white-spacewhite-space değerlerin davranışını özetleyen bir tabloya sahiptir .
Paul

1
word-wrap: break-wordsorunun ne istediğini yapmazsa, kelimeler arasında bile satır kaydırmalarının olmasına neden olur. Bu satırı silebilirsiniz. Modern tarayıcılarda, herhangi bir -mozveya diğer öneklere ihtiyacınız yoktur.
Mart'ta Flimm

142

Bu, pre-tag içinde metni sarmak ve beyaz boşluğu korumak için harika çalışır :

pre {
    white-space: pre-wrap;
}

3
Bkz - 's CSS 3 tek nedeni cevabı daha uyumluluk için adambox gelen.
lorem monkey

60

Ön etiketi atlamanın ve beyaz boşluk kullanmanın bir div üzerinde ön sarmanın daha iyi bir çözüm olduğunu buldum.

 <div style="white-space: pre-wrap;">content</div>

3
Popüler cevaptan daha kolay. Teşekkürler!
Ricky

4
Benim durumumda bazı tablo oluşturmak için sekmeler içeren önceden biçimlendirilmiş metin göstermek istedim. Ben senin çözüm kullanılan PLUS tüm sütunlar hizalanmış edildi yüzden bir monspace yazı ekledi:style="white-space: pre-wrap; font-family:monospace;"
Jan

1
Bu daha kolay olsa da, <pre>kod blokları için daha semantik bir değer olabilir .
Angelos Chalaris

2
Bu oyuna geç kaldığımı biliyorum, ama bu çözüm neden stil sayfasında bir kez ayarlamaktan daha iyi? Bunu gerektiren bir HTML çıktı ekranında birden fazla div var. Stil sayfasındaki öğeye tek bir düzeltme gibi görünüyor tüm sorunları giderir.
webfrogs

1
@webfrogs Evet .prewrap sınıfı yapmak en iyisi olacaktır.
Mason240

36

En özünde, bu, içeriği bir "ön" etiketinin içine sözcükleri kırmadan sarmaya zorlar. Şerefe!

pre {
  white-space: pre-wrap;
  word-break: keep-all
}

Buradaki canlı örneğe bakın .


20

Buna ihtiyacım vardı. Kelimelerin kırılmasını engelledi, ancak ön alanda dinamik genişliğe izin verdi.

word-break: keep-all;

17

Ben ön unutmak ve sadece bir textarea koymak öneririz.

Girintilemeniz kalır ve kodunuz bir yolun veya başka bir şeyin ortasında kelime ile sarılmaz.

Panoya kopyalamak istiyorsanız, metin alanındaki metin aralığını seçmek daha kolaydır.

Aşağıdaki bir php alıntı yani sizin php değilse o zaman html özel karakter paketi şekilde değişir.

<textarea style="font-family:monospace;" onfocus="copyClipboard(this);"><?=htmlspecialchars($codeBlock);?></textarea>

Js'de panoya metin kopyalama hakkında bilgi için bkz: JavaScript'te panoya nasıl kopyalayabilirim? .

Ancak...

Ben sadece stackoverflow kod blokları kontrol ve css ile <pre> etiketine sarılmış bir <code> etiketi sarın ...

code {
  background-color: #EEEEEE;
  font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;
}
pre {
  background-color: #EEEEEE;
  font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;
  margin-bottom: 10px;
  max-height: 600px;
  overflow: auto;
  padding: 5px;
  width: auto;
}

Ayrıca stackoverflow kod bloklarının içeriği (sanırım) http://code.google.com/p/google-code-prettify/ kullanılarak sözdizimi vurgulanır .

Bu güzel bir kurulum ama şimdilik sadece textareas ile gidiyorum.


13
Metin alanlarını girdi dışında bir şey için kullanmak anlamsal olarak yanlış olmaz mı? Bana garip bir çözüm gibi görünüyor.
Josh

2
"Pre", içerilen metnin önceden biçimlendirildiğini ve bu nedenle ek biçimlendirme gerektirmediğini ve daha çok olduğu gibi alınmasını istediğinde "pre" etiketine bir grup biçimlendirme stili eklemek kadar anlamsal olarak yanlış değildir;) "işlevsel" yerine "anlambilim" önceliği verin.
ekerner

1
<pre>Semantik bir anlamı olduğunu düşünmüyorum (aksine <code>), basitçe yeni satırların ve çoklu alanların korunması gerektiği anlamına gelir.
14'te

1
"Önceden biçimlendirilmiş" kısaltması. Önceden biçimlendirilmiş yeni satırlar ve yalnızca birden çok boşluk için kısaca olduğunu mu düşünüyorsunuz?
ekerner

İçerik türü, önceden biçimlendirilmiş metnin türüne bağlı olarak bir iç etiketle belirtilmelidir. Arkadaşlarımı w3c ön etiket wiki sayfasına yönlendirirdim: w3.org/wiki/HTML/Elements/pre
joshperry

14

@Richelectron ve @ user1433454 yanıtlarını birleştirdim.
Çok iyi çalışır ve metin biçimlendirmesini korur.

<pre  style="white-space: pre-wrap; word-break: keep-all;">

</pre>

13

Şunlardan birini yapabilirsiniz:

pre { white-space: normal; }

tek aralıklı yazı tipini korumak ancak word-wrap eklemek için veya:

pre { overflow: auto; }

uzun çizgiler için yatay kaydırma ile sabit bir boyuta izin verir.


Oh, taşma hatırlatıcısı için teşekkürler! Mobil ekranlar için harika.
XTL

6

Kullanmayı deneyin

<pre style="white-space:normal;">. 

Veya daha iyi bir CSS atın.


Bu bir IE 7 çalışıyor gibi görünüyor ama 6 değil. Bu IE için umut verici görünüyordu tek öneri ... diğer tüm öneriler diğer tarayıcılar için iyi ...
topwik

nevermind bir tarayıcı önbellekleme şey olmalı. IE 6 yeniden başladı ve her şey yolunda. şerefe.
topwik

2
Bu çözümün problemi, yeni satır karakterlerini de çözmesi ... Örneğin, metnin paragraflara ayrılması kaybolacak.
Chris W.

4

white-space: pre-wrapİçinde otomatik satır kesme için ve bazı önekler kullanın pre.

Kullanmayın word-wrap: break-wordçünkü bu, elbette, muhtemelen istemediğiniz bir şey olan bir kelimeyi ikiye böler.


3

En İyi Çapraz Tarayıcı Yolu satır sonları almak için çalıştı ve tam kodu veya metni gösteriyor: (chrome, internet explorer, Firefox)

CSS:

xmp{ white-space:pre-wrap; word-wrap:break-word; }

HTML:

<xmp> your text or code </xmp>

Benim için harika çalıştı :-)
Wesley Tuzza

7
xmp, HTML 3.2'den beri kullanımdan kaldırılmıştır, HTML5'ten tamamen kaldırılmıştır ve başlamak için hiçbir zaman düzgün çalışmadı. Çeşitli tarayıcılar arasında tutarlı bir şekilde uygulanmadı.
PeterToTheThird

Beyaz boşluk kullanma: ön sarma; ve kelime kaydırma: kesme sözcüğü; benim css, (json) parçacıkları girinti tutar, ön satır bunu kaldırır. (Chrome)
Peter Visser

1

Aşağıdakiler bana yardımcı oldu:

pre {
    white-space: normal;
    word-wrap: break-word;
}

Teşekkürler


3
white-space: pre-wrap;Beyaz boşluklara saygı duyduğundan daha iyi olduğunu düşünüyorum
Ivan Ferrer Villa

-1

<pre>-Eleman "önceden biçimlendirilmiş metin" anlamına gelir ve onun etiketleri arasındaki metin (ya da her neyse) biçimlendirmesi de tutmak için tasarlanmıştır. Bu nedenle aslında içinde otomatik kelime sarma veya satır sonu inteded değildir <pre>Etiketleme-

Bir öğedeki metin sabit genişlikli bir yazı tipinde (genellikle Courier) görüntülenir ve hem boşlukları hem de satır sonlarını korur .

kaynak: w3schools.com , kendim tarafından yapılan vurgulamaktadır.


Sadece, ön etiketin otomatik sarma niyetinde olmasa da, bir ön etiket içindeki metni otomatik olarak sarmanın mümkün olduğu gerçeğini belirtir.
rob_st

Yazarın sorusuna tek doğru cevap budur. Başka bir yanıt veya olası bir "çözüm" <pre> öğesinin kötüye kullanılmasını teşvik eder. Temel olarak, türü bir <pre> öğesinin içine koymak ve sarmak istiyorsanız, bunun yerine bir <p> etiketi kullanın ve bunu bir CSS sınıfıyla istediğiniz şekilde biçimlendirin.
Markus

İnsanların neden bu tür "Senden daha zekiyim" tavsiyesini vermeyi yararlı bulduklarından emin değilim. Hayır, bir <p> etiketi uygun bir yedek değildir: boşluk veya satır sonlarını korumaz. Bir <pre> etiketi satır sonlarını korumak için kullanışlıdır, ancak bazen herhangi bir kod düzenleyicisinin hem satır sonlarını koruyabileceği hem de uzun satırlara sarma ekleyebileceği gibi ek sarma eklemek de gereklidir.
dwk
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.