HTML + CSS: Comment forcer le contenu div à rester sur une seule ligne?

259

J'ai un long texte dans un divavec définiwidth :

HTML:

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

CSS:

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

Comment pourrais-je forcer la chaîne à rester sur une ligne (c'est-à-dire à être coupée au milieu de "Overflow")?

J'ai essayé d'utiliser overflow: hidden, mais cela n'a pas aidé.

Misha Moroshko
la source
12
white-space: nowrapmettez ceci dans votre étiquette de style.
Moshii

Réponses:

524

Essaye ça:

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

Utiliser white-space:nowrapetoverflow:hidden

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

anothershrubery
la source
34
Ajoutez text-overflow:ellipsis;à ci-dessus pour un meilleur look.
tj-recess
cela peut-il être réalisé sans CSS?
nilon
51

dans votre utilisation css white-space:nowrap;

Rob Agar
la source
14

Votre code HTML: <div>Stack Overflow is the BEST !!!</div>

CSS:

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

Maintenant, le résultat devrait être:

Stack Overf ...
Bozlur Rahman
la source
12

Tout le monde a sauté sur celui-ci !!! Moi aussi j'ai fait un violon:

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

RobAgar obtient un point pour avoir souligné en white-space:nowrappremier.

Deux choses ici, vous avez besoin overflow: hiddensi vous ne voulez pas voir les caractères supplémentaires pénétrer dans votre mise en page.

En outre, comme mentionné, vous pouvez utiliser white-space: pre(voir EnderMB) en gardant à l'esprit que precela n'effondrera pas l'espace blanc alors qu'il le white-space: nowrapfera.

Marc Audet
la source
4

Essayez ceci. Il utilise preplutôt que nowrapcomme je suppose que vous voudriez que cela fonctionne de la même manière, <pre>mais l'un ou l'autre fonctionnera très bien:

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

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

Mike B
la source
4

J'ai sauté ici à la recherche de la même chose, mais aucune n'a fonctionné pour moi.

Il y a des cas où, quoi que vous fassiez et selon le système (Oracle Designer: Oracle 11g - PL / SQL), les divs iront toujours à la ligne suivante, auquel cas vous devriez utiliser la balise span à la place.

Cela a fait des merveilles pour moi.

<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
la source
Une aide énorme à ce sujet, c'est tout ce qui a fonctionné pour moi, j'ai probablement passé 30 minutes là-dessus, lol. Curieusement, je n'utilise aucun de ce que vous avez mentionné, css, javascript, bootstrap et certains css personnalisés.
edencorbin
3

ajoutez ceci à votre div

white-space: nowrap;

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

stephenmurdoch
la source
1
vous pouvez ajouter: débordement: auto pour afficher une barre de défilement horizontale
Sarah West
1
div {
    display: flex;
    flex-direction: row; 
}

était la solution qui a fonctionné pour moi. Dans certains cas, avec div-lists, cela est nécessaire.

certaines valeurs de direction alternatives sont celles row-reverse, column, column-reverse, unset, initial, inherit qui font les choses que vous attendez qu’elles fassent

Pingger Shikkoken
la source
0

Essayez de définir une hauteur afin que le bloc ne puisse pas s'agrandir pour accueillir votre texte et conservez le overflow: hiddenparamètre

EDIT: Voici un exemple de ce que vous pourriez aimer si vous devez afficher 2 lignes de haut:

div {
    border: 1px solid black;
    width: 70px;
    height: 2.2em;
    overflow: hidden;
}
Wouter Simons
la source
Dans votre cas, l'option nowrap est probablement meilleure, mais j'ai laissé ma réponse car j'ai parfois besoin d'un bloc qui peut contenir des lignes jusqu'à ce qu'il déborde comme ceci: jsfiddle.net/NXchy/7 (a changé le lien depuis la version de Stephenmurdoch, merci!)
Wouter Simons
Pas besoin de cela, que se passe-t-il si l'utilisateur veut augmenter la taille du texte en utilisant ctrl- +? Il est préférable de garder la hauteur flexible.
Marc Audet
Si l'utilisateur redimensionne le texte avec ctrl- +, cela devrait fonctionner: jsfiddle.net/kpKW3
Wouter Simons
L'utilisation de em's dans le heightreste flexible, point clé bien illustré ici dans votre exemple.
Marc Audet