60 votes

Comment faire défiler horizontalement les blocs <pre> de Twitter Bootstrap ?

Selon les exemples https://getbootstrap.com/docs/4.3/content/code/#code-blocks , bootstrap ne prend en charge que les textes à défilement vertical et les textes enveloppés de mots. <pre> blocs hors de la boîte. Comment faire pour avoir à la place des blocs de code non enveloppés et pouvant défiler horizontalement ?

85voto

Suan Points 3768

L'astuce réside dans le fait que bootstrap remplace à la fois les white-space et la norme CSS3 word-wrap pour les attributs <pre> élément. Pour obtenir un défilement horizontal, assurez-vous de la présence de cet élément dans votre CSS :

pre {
  overflow: auto;
  word-wrap: normal;
  white-space: pre;
}

13 votes

Je ne recommanderais pas d'outrepasser les classes bootstrap. A la place, je créerais un nouveau fichier CSS appelé par exemple bootstrap-extras.css et définirais une nouvelle classe par exemple pre-x-scrollable (similaire à leur pre-scrollable) qui appliquerait votre comportement ci-dessus. De cette façon, vous n'obtiendrez pas de classes contradictoires lorsque vous mettrez à jour bootstrap à partir des sources à l'avenir.

5 votes

Pour bootstrap3 : pre code et retirer le overflow:auto

0 votes

Juste un petit conseil, word-wrap est changeant à overflow-wrap en CSS3.

25voto

Matt Morey Points 336

Cela a fonctionné pour moi :

pre {
    overflow-x: auto;
}
pre code {
    overflow-wrap: normal;
    white-space: pre;
}

0 votes

overflow-wrap a toujours une mise en œuvre inégale . Pour l'instant, vous devriez utiliser l'ancienne version de word-wrap qui est pris en charge par tous les navigateurs.

4 votes

@KyleMit Pour l'instant, vous devriez utiliser les deux. Ensuite, lorsque overflow-wrap commence à bénéficier d'un soutien, vous n'aurez pas à revenir en arrière et à mettre à jour toutes vos feuilles de style CSS.

16voto

Rick Glos Points 565

Je reviens toujours à cette réponse lorsque je commence de nouveaux projets et que je dois lire les commentaires pour me rappeler, oh oui, ne pas surcharger la classe bootstrap et ne pas oublier overflow-wrap, etc...

Vous avez donc le stock pre-scrollable , qui est un défilement vertical uniquement, vous pouvez également souhaiter :

Défilement horizontal uniquement

.pre-x-scrollable {
    overflow: auto;
    -ms-word-wrap: normal;
    word-wrap: normal;
    overflow-wrap: normal;
    white-space: pre;
}

Défilement vertical et horizontal

.pre-xy-scrollable {
    overflow: auto;
    -ms-word-wrap: normal;
    word-wrap: normal;
    overflow-wrap: normal;
    white-space: pre;
    max-height: 340px;
}

2voto

jarhill0 Points 555

Les versions plus récentes de Bootstrap appliquent des styles à la fois à pre y code qui enveloppent les mots. En ajoutant ceci à ma feuille de style, j'ai résolu le problème :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X