Puis-je empêcher le texte d'un bloc div de déborder?


Réponses:


163

Si vous voulez que le texte débordant dans le div soit automatiquement nouveau à la ligne au lieu d'être masqué ou de créer une barre de défilement, utilisez le

word-wrap: break-word

propriété.



L'utilisateur doit vérifier cela comme réponse. Cela a fonctionné pour moi aujourd'hui! Merci mon pote!
Eduardo A. Fernández Díaz

oh mon Dieu merci beaucoup pour celui-ci, je suis littéralement devenu fou à cause de certains problèmes que je pourrais résoudre par votre réponse !! XD
Sven



18

Vous pouvez le contrôler avec CSS, il y a quelques options:

  • caché -> Tout le texte qui déborde sera caché.
  • visible -> Laisser le texte débordant visible.
  • scroll -> mettre des barres de défilement si le texte déborde

J'espère que ça aide.


15

Utilisez simplement ceci:

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 */

11

il existe une autre propriété css:

white-space : normal;

La propriété d'espace blanc contrôle la manière dont le texte est traité sur l'élément auquel il est appliqué.

div {

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

}

1
Ceci est vraiment utile en combinaison avec le débordement: caché;
koppor




1

Si votre div a une hauteur définie en css, cela le fera déborder en dehors du div.

Vous pouvez donner à la div une hauteur min si vous avez besoin qu'elle soit une hauteur minimale sur la div à tout moment.

Cependant, la hauteur minimale ne fonctionnera pas dans IE6, si vous avez une feuille de style spécifique à IE6, vous pouvez lui donner une hauteur régulière pour IE6. La hauteur change dans IE6 en fonction du contenu à l'intérieur.


1

Vous pouvez simplement définir la largeur min dans le css, par exemple:

.someClass{min-width: 980px;}

Il ne cassera pas, néanmoins vous aurez toujours la barre de défilement à gérer.


1

Recommandations pour savoir quelle partie de votre CSS est à l'origine du problème:

1) mis style="height:auto;"sur tous les <div>éléments et réessayer.

2) Définissez style="border: 3px solid red;"tous les <div>éléments pour voir la largeur de la zone occupée <div>par votre boîte.

3) Retirez toutes les height:#px;propriétés css de votre CSS et recommencez.

Donc par exemple:

<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>

1
.NonOverflow {
    width: 200px; /* Need the width for this to work */
    overflow: hidden;
}
<div class="NonOverflow">
    Long Text
</div>

dans un texte multilingue autre que, cela provoque le masquage de certains caractères de mots longs.
Bhupi

0

!! Un compromis codé en dur à venir !! En fonction du code environnant et de la résolution de l'écran, cela peut entraîner un comportement différent / indésirable

Si le débordement masqué est hors de question et qu'une césure correcte est nécessaire, vous pouvez utiliser l'entité HTML à trait d'union souple à l'endroit où vous voulez que le mot / texte se coupe. De cette façon, vous pouvez prédéterminer manuellement un point de rupture.

&shy;

Le trait d'union n'apparaîtra que lorsque le mot doit se rompre pour ne pas déborder de son conteneur environnant.

Exemple:

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

Résultat si le conteneur est suffisamment large et que le texte ne débordera pas le conteneur:

foobar

Résultat si le conteneur est trop petit et que le texte débordera réellement le conteneur:

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>

Plus d'informations: https://en.wikipedia.org/wiki/Soft_hyphen

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.