Per the examples https://getbootstrap.com/docs/4.3/content/code/#code-blocks, bootstrap only supports vertically-scrollable and word-wrapped <pre>
blocks out of the box. How do I make it so that I have horizontally-scrollable, unwrapped code blocks instead?
Asked
Active
Viewed 4.2k times
61

Vadim Kotov
- 8,084
- 8
- 48
- 62

Suan
- 34,563
- 13
- 47
- 61
4 Answers
86
The trick is that bootstrap overrides both the white-space
and the CSS3 word-wrap
attributes for the <pre>
element. To achieve horizontal scrolling, ensure there's this in your CSS:
pre {
overflow: auto;
word-wrap: normal;
white-space: pre;
}

Suan
- 34,563
- 13
- 47
- 61
-
13I would not recommend over-riding bootstrap classes. Instead I would create a new CSS file called eg. bootstrap-extras.css and define a new class eg. pre-x-scrollable (similar to their pre-scrollable) that applies your behavior above. That way you don't get clashing classes when you upgrade bootstrap from source in the future. – tatlar Dec 28 '12 at 21:27
-
5for bootstrap3: `pre code` and remove the `overflow:auto` – Davy Landman Mar 13 '14 at 15:01
-
Just a heads up, `word-wrap` is [changing](https://developer.mozilla.org/en-US/docs/Web/CSS/word-wrap) to `overflow-wrap` in CSS3. – Alex W Jul 17 '14 at 00:19
-
Setting `white-space: pre-wrap` was the trick for me to have the pre block actually wrap as desired – UnionP Aug 29 '17 at 01:16
25
This worked for me:
pre {
overflow-x: auto;
}
pre code {
overflow-wrap: normal;
white-space: pre;
}

KyleMit
- 30,350
- 66
- 462
- 664

Matt Morey
- 984
- 1
- 11
- 14
-
[`overflow-wrap`](http://dev.w3.org/csswg/css-text/#overflow-wrap) still has [spotty implementation](http://css3clickchart.com/#overflow-wrap). For now, you should use the older [`word-wrap`](https://developer.mozilla.org/en-US/docs/Web/CSS/word-wrap) which is supported by all browsers. – KyleMit Jan 02 '14 at 01:02
-
4@KyleMit For now, you should use both. Then, when `overflow-wrap` starts gaining support you won't have to go back and update all of your CSS. – Alex W Jul 17 '14 at 00:24
16
I keep coming back to this answer when I start new projects and have to read through comments to remember, oh yea, don't override the bootstrap class and don't forget overflow-wrap, etc...
So you have the stock pre-scrollable
, which is vertical only scrolling, you may also want:
Horizontal only scrolling
.pre-x-scrollable {
overflow: auto;
-ms-word-wrap: normal;
word-wrap: normal;
overflow-wrap: normal;
white-space: pre;
}
Vertical and Horizontal scrolling
.pre-xy-scrollable {
overflow: auto;
-ms-word-wrap: normal;
word-wrap: normal;
overflow-wrap: normal;
white-space: pre;
max-height: 340px;
}

Rick Glos
- 2,466
- 2
- 29
- 30
2
Newer versions of Bootstrap apply styles to both pre
and code
that wrap words. Adding this to my stylesheet fixed the issue for me:
pre code {
white-space: pre;
word-wrap: normal;
}

jarhill0
- 1,559
- 1
- 11
- 19