Kann ich verhindern, dass Text in einem Div-Block überläuft?

132

Kann ich verhindern, dass Text in einem Div-Block überläuft?

Clement Herreman
quelle
1
Warum läuft Ihr Text über?
Virat Kadaru
3
@ViratKadaru ... weil es 360pt Gregorian Chant Serif ist
DukeDidntNukeEm

Antworten:

163

Wenn Sie möchten, dass der überlaufende Text im div automatisch neu geschrieben wird, anstatt ausgeblendet zu werden oder eine Bildlaufleiste zu erstellen, verwenden Sie die

word-wrap: break-word

Eigentum.

Amalgovinus
quelle
Der Benutzer muss dies als Antwort überprüfen. Es hat heute bei mir funktioniert! Danke Kumpel!
Eduardo A. Fernández Díaz
Oh mein Gott, vielen Dank für diesen einen, ich bin buchstäblich verrückt geworden wegen einiger Probleme, die ich durch deine Antwort lösen könnte !! XD
Sven
77

Du kannst es versuchen:

<div id="myDiv">
    stuff 
</div>

#myDiv {
    overflow:hidden;
}

Weitere Informationen finden Sie in den Dokumenten zur Überlaufeigenschaft .

brettkelly
quelle
34
Dies sind keine "Dokumente", sondern eine Website mit einigen grundlegenden Informationen zu HTML / CSS. Die Dokumente sind auf w3.org
DisgruntledGoat
18

Sie können es mit CSS steuern, es gibt einige Optionen:

  • versteckt -> Der gesamte Textüberlauf wird ausgeblendet.
  • sichtbar -> Lassen Sie den überfließenden Text sichtbar werden.
  • scrollen -> Bildlaufleisten setzen, wenn der Text überläuft

Ich hoffe es hilft.

Timothée Martin
quelle
15

Verwenden Sie einfach dies:

white-space: pre-wrap;      /* CSS3 */   
white-space: -moz-pre-wrap; /* Firefox */    
white-space: -pre-wrap;     /* Opera <7 */   
white-space: -o-pre-wrap;   /* Opera 7 */    
word-wrap: break-word;      /* IE */
Pmpr
quelle
11

Es gibt noch eine andere CSS-Eigenschaft:

white-space : normal;

Die Leerraum-Eigenschaft steuert, wie Text auf das Element angewendet wird, auf das er angewendet wird.

div {

  /* This is the default, you don't need to
     explicitly declare it unless overriding
     another declaration */
  white-space: normal; 

}
Sachin
quelle
1
Dies ist in Kombination mit Überlauf sehr hilfreich: versteckt;
Koppor
4

overflow: scroll? Oder automatisch. im Stilattribut.

Bohne
quelle
1

Wenn Ihr Div eine festgelegte Höhe in CSS hat, wird es außerhalb des Div überlaufen.

Sie können dem Div eine Mindesthöhe geben, wenn Sie immer eine Mindesthöhe auf dem Div haben müssen.

Die Mindesthöhe funktioniert in IE6 jedoch nicht. Wenn Sie ein IE6-spezifisches Stylesheet haben, können Sie ihm eine reguläre Höhe für IE6 zuweisen. Die Höhe ändert sich im IE6 je nach Inhalt.

Sir David von Lee
quelle
1

Sie können einfach die Mindestbreite im CSS festlegen, zum Beispiel:

.someClass{min-width: 980px;}

Es wird nicht kaputt gehen, trotzdem haben Sie immer noch die Bildlaufleiste, mit der Sie sich befassen müssen.

Damir Olejar
quelle
1

Empfehlungen, wie Sie feststellen können, welcher Teil Ihres CSS das Problem verursacht:

1) style="height:auto;"auf alle einstellen<div> Elemente und erneut versuchen.

2) Stellen Sie style="border: 3px solid red;"alle <div>Elemente ein, um zu sehen, wie breit ein Bereich ist, den Ihre <div>Box einnimmt .

3) Entfernen Sie alle height:#px;CSS-Eigenschaften aus Ihrem CSS und beginnen Sie von vorne .

Also zum Beispiel:

<div id="I" style="height:auto;border: 3px solid red;">I
    <div id="A" style="height:auto;border: 3px solid purple;">A
        <div id="1A" style="height:auto;border: 3px solid green;">1A
        </div>
        <div id="2A" style="height:auto;border: 3px solid green;">2A
        </div>
    </div>
    <div id="B" style="height:auto;border: 3px solid purple;">B
        <div id="1B" style="height:auto;border: 3px solid green;">1B
        </div>
        <div id="2B" style="height:auto;border: 3px solid green;">2B
        </div>
    </div>
</div>
Gen
quelle
1
.NonOverflow {
    width: 200px; /* Need the width for this to work */
    overflow: hidden;
}
<div class="NonOverflow">
    Long Text
</div>
Kirtan
quelle
Bei mehrsprachigem Text als werden einige Zeichen langer Wörter nicht angezeigt.
Bhupi
0

!! Hart codiert tradoff voraus !! Abhängig vom umgebenden Code und der Bildschirmauflösung kann dies zu unterschiedlichem / unerwünschtem Verhalten führen

Wenn ein versteckter Überlauf nicht in Frage kommt und eine korrekte Silbentrennung erforderlich ist, können Sie die HTML-Entität mit weichem Bindestrich verwenden, bei der das Wort / der Text unterbrochen werden soll. Auf diese Weise können Sie eine Sollbruchstelle manuell vorgeben.

&shy;

Der Bindestrich wird nur angezeigt, wenn das Wort unterbrochen werden muss, damit der umgebende Container nicht überläuft.

Beispiel:

<div class="container">
  foo&shy;bar
</div>

Ergebnis, wenn der Container breit genug ist und der Text den Container nicht überlaufen würde:

foobar

Ergebnis, wenn der Container zu klein ist und der Text den Container tatsächlich überlaufen würde:

foo-
bar

.container{
  background-color: green;
  max-width: 30px;
}
Example 1 - container to small => text overflows container:

<div class="container">
  foobar
</div>

Example 2 - using soft hyphen => text breaks at predetermined break point:

<div class="container">
  foo&shy;bar
</div>

Example 3 - using soft hyphen => text still overflowing because the text before the soft hyphen is to long:

<div class="container">
  foobar&shy;foo
</div>

Weitere Informationen: https://en.wikipedia.org/wiki/Soft_hyphen

janDo
quelle