HTML + CSS: Wie kann man zwingen, dass div-Inhalte in einer Zeile bleiben?

258

Ich habe einen langen Text in einem divmit definiertemwidth :

HTML:

<div>Stack Overflow is the BEST !!!</div>

CSS:

div {
    border: 1px solid black;
    width: 70px;
}

Wie könnte ich die Zeichenfolge zwingen, in einer Zeile zu bleiben (dh in der Mitte von "Überlauf" geschnitten zu werden)?

Ich habe versucht zu verwenden overflow: hidden, aber es hat nicht geholfen.

Mischa Moroshko
quelle
12
white-space: nowrapFügen Sie dies in Ihr Style-Tag ein.
Moshii

Antworten:

522

Versuche dies:

div {
    border: 1px solid black;
    width: 70px;
    overflow: hidden;
    white-space: nowrap;
}
Bazzz
quelle
71

Verwenden Sie white-space:nowrapundoverflow:hidden

http://jsfiddle.net/NXchy/8/

Anothershrubery
quelle
34
In text-overflow:ellipsis;oben für eine bessere Optik.
TJ-Pause
Kann dies ohne CSS erreicht werden?
Nilon
51

in Ihrem CSS verwenden white-space:nowrap;

Rob Agar
quelle
14

Ihr HTML-Code: <div>Stack Overflow is the BEST !!!</div>

CSS:

div {
    width: 100px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}

Jetzt sollte das Ergebnis sein:

Stack Overf ...
Bozlur Rahman
quelle
12

Alle sind auf diesen gesprungen !!! Ich habe auch eine Geige gemacht:

http://jsfiddle.net/audetwebdesign/kh4aR/

RobAgar bekommt einen Punkt, um zuerst darauf hinzuweisen white-space:nowrap.

Einige Dinge, die Sie hier benötigen, overflow: hiddenwenn Sie nicht möchten, dass die zusätzlichen Zeichen in Ihr Layout hineinragen.

Wie bereits erwähnt, können Sie auch white-space: pre(siehe EnderMB) berücksichtigen, dass der preLeerraum nicht kollabiert, während dies der Fall white-space: nowrapist.

Marc Audet
quelle
4

Probieren Sie es aus. Es verwendet preeher als nowrapwie ich annehmen würde, dass Sie möchten, dass dies ähnlich abläuft, <pre>aber beides wird gut funktionieren:

div {
    border: 1px solid black;
    max-width: 70px;
    white-space:pre;
}

http://jsfiddle.net/NXchy/11/

Mike B.
quelle
4

Ich bin hierher gesprungen und habe nach dem gleichen gesucht, aber keiner hat für mich funktioniert.

Es gibt Fälle, in denen divs unabhängig von Ihrer Tätigkeit und je nach System (Oracle Designer: Oracle 11g - PL / SQL) immer zur nächsten Zeile wechselt. In diesem Fall sollten Sie stattdessen das span-Tag verwenden.

Das hat Wunder für mich gewirkt.

<span float: left; white-space: nowrap; overflow: hidden; onmouseover="rollOverImageSectionFiveThreeOne(this)">
    <input type="radio" id="radio4" name="p_verify_type" value="SomeValue"  />
</span> 
Just Your Text || 
<span id="headerFiveThreeOneHelpText" float: left; white-space: nowrap; overflow: hidden;></span>
Dököll
quelle
Riesige Hilfe dabei, das war alles, was für mich funktioniert hat, wahrscheinlich 30 Minuten damit verbracht, lol. Seltsamerweise verwende ich nichts von dem, was Sie erwähnt haben, CSS, Javascript, Bootstrap und einige benutzerdefinierte CSS.
Edencorbin
3

füge dies deinem div hinzu

white-space: nowrap;

http://jsfiddle.net/NXchy/1/

stephenmurdoch
quelle
1
Sie können hinzufügen: Überlauf: Auto, um eine horizontale Bildlaufleiste anzuzeigen
Sarah West
1
div {
    display: flex;
    flex-direction: row; 
}

war die Lösung, die für mich funktioniert hat. In einigen Fällen mit div-lists ist dies erforderlich.

Einige alternative Richtungswerte sind row-reverse, column, column-reverse, unset, initial, inherit die, die die Dinge tun, die Sie von ihnen erwarten

Pingger Shikkoken
quelle
0

Versuchen Sie, eine Höhe festzulegen, damit der Block nicht an Ihren Text angepasst werden kann, und behalten Sie den overflow: hiddenParameter bei

BEARBEITEN: Hier ist ein Beispiel dafür, was Ihnen gefallen könnte, wenn Sie 2 Zeilen hoch anzeigen müssen:

div {
    border: 1px solid black;
    width: 70px;
    height: 2.2em;
    overflow: hidden;
}
Wouter Simons
quelle
In Ihrem Fall ist die Nowrap-Option wahrscheinlich besser, aber ich habe meine Antwort hinterlassen, weil ich manchmal einen Block benötige, in dem einige Zeilen umbrochen werden, bis er wie folgt überläuft: jsfiddle.net/NXchy/7 (Link von Stephenmurdochs Version geändert, danke!)
Wouter Simons
Dies ist nicht erforderlich. Was passiert, wenn der Benutzer die Textgröße mit Strg + erhöhen möchte? Die Höhe flexibel zu halten ist besser.
Marc Audet
Wenn der Benutzer die Größe des Textes mit Strg- + ändert, sollte dies nur funktionieren: jsfiddle.net/kpKW3
Wouter Simons
Die Verwendung von em's in the heighthält es flexibel, ein wichtiger Punkt, der hier in Ihrem Beispiel gut dargestellt wird.
Marc Audet