2014-07-11 22:34:47 -07:00
---
2015-08-14 22:45:55 -07:00
layout: docs
2014-07-11 22:34:47 -07:00
title: Typography
2017-05-27 22:16:44 -07:00
description: Documentation and examples for Bootstrap typography, including global settings, headings, body text, lists, and more.
2015-08-09 23:38:16 -07:00
group: content
2017-05-27 22:16:44 -07:00
toc: true
2014-07-11 22:34:47 -07:00
---
2014-07-09 23:06:16 -07:00
2014-07-14 08:34:56 -07:00
## Global settings
2017-07-01 19:34:24 -07:00
Bootstrap sets basic global display, typography, and link styles. When more control is needed, check out the [textual utility classes ]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/text/ ).
2014-07-14 08:34:56 -07:00
2017-05-29 11:38:06 -07:00
- Use a [native font stack ]({{ site.baseurl }}/docs/{{ site.docs_version }}/content/reboot/#native-font-stack ) that selects the best `font-family` for each OS and device.
2020-10-25 19:21:42 +00:00
- For a more inclusive and accessible type scale, we use the browser's default root `font-size` (typically 16px) so visitors can customize their browser defaults as needed.
2016-02-06 13:32:53 -08:00
- Use the `$font-family-base` , `$font-size-base` , and `$line-height-base` attributes as our typographic base applied to the `<body>` .
- Set the global link color via `$link-color` and apply link underlines only on `:hover` .
- Use `$body-bg` to set a `background-color` on the `<body>` (`#fff` by default).
2014-07-14 08:34:56 -07:00
2017-10-02 18:59:07 -07:00
These styles can be found within `_reboot.scss` , and the global variables are defined in `_variables.scss` . Make sure to set `$font-size-base` in `rem` .
2014-07-14 08:34:56 -07:00
2014-07-09 23:06:16 -07:00
## Headings
2016-05-08 15:13:53 -07:00
All HTML headings, `<h1>` through `<h6>` , are available.
2014-07-09 23:06:16 -07:00
2017-05-27 22:40:00 -07:00
< table >
< thead >
< tr >
< th > Heading< / th >
< th > Example< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td >
2018-01-19 18:30:17 +01:00
{{ "`<h1></h1>` " | markdownify }}
2017-05-27 22:40:00 -07:00
< / td >
< td > < span class = "h1" > h1. Bootstrap heading< / span > < / td >
< / tr >
< tr >
< td >
2018-01-19 18:30:17 +01:00
{{ "`<h2></h2>` " | markdownify }}
2017-05-27 22:40:00 -07:00
< / td >
< td > < span class = "h2" > h2. Bootstrap heading< / span > < / td >
< / tr >
< tr >
< td >
2018-01-19 18:30:17 +01:00
{{ "`<h3></h3>` " | markdownify }}
2017-05-27 22:40:00 -07:00
< / td >
< td > < span class = "h3" > h3. Bootstrap heading< / span > < / td >
< / tr >
< tr >
< td >
2018-01-19 18:30:17 +01:00
{{ "`<h4></h4>` " | markdownify }}
2017-05-27 22:40:00 -07:00
< / td >
< td > < span class = "h4" > h4. Bootstrap heading< / span > < / td >
< / tr >
< tr >
< td >
2018-01-19 18:30:17 +01:00
{{ "`<h5></h5>` " | markdownify }}
2017-05-27 22:40:00 -07:00
< / td >
< td > < span class = "h5" > h5. Bootstrap heading< / span > < / td >
< / tr >
< tr >
< td >
2018-01-19 18:30:17 +01:00
{{ "`<h6></h6>` " | markdownify }}
2017-05-27 22:40:00 -07:00
< / td >
< td > < span class = "h6" > h6. Bootstrap heading< / span > < / td >
< / tr >
< / tbody >
< / table >
2014-07-09 23:06:16 -07:00
{% highlight html %}
< h1 > h1. Bootstrap heading< / h1 >
< h2 > h2. Bootstrap heading< / h2 >
< h3 > h3. Bootstrap heading< / h3 >
< h4 > h4. Bootstrap heading< / h4 >
< h5 > h5. Bootstrap heading< / h5 >
< h6 > h6. Bootstrap heading< / h6 >
{% endhighlight %}
2016-05-08 15:13:53 -07:00
`.h1` through `.h6` classes are also available, for when you want to match the font styling of a heading but cannot use the associated HTML element.
2018-03-14 16:44:38 +01:00
{% capture example %}
2016-05-08 15:13:53 -07:00
< p class = "h1" > h1. Bootstrap heading< / p >
< p class = "h2" > h2. Bootstrap heading< / p >
< p class = "h3" > h3. Bootstrap heading< / p >
< p class = "h4" > h4. Bootstrap heading< / p >
< p class = "h5" > h5. Bootstrap heading< / p >
< p class = "h6" > h6. Bootstrap heading< / p >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2016-05-08 15:13:53 -07:00
2015-08-12 20:45:21 -07:00
### Customizing headings
2014-07-09 23:06:16 -07:00
2015-08-12 20:45:21 -07:00
Use the included utility classes to recreate the small secondary heading text from Bootstrap 3.
2014-07-09 23:06:16 -07:00
2018-10-21 22:02:45 +03:00
{% capture example %}
2015-08-12 20:45:21 -07:00
< h3 >
Fancy display heading
< small class = "text-muted" > With faded secondary text< / small >
< / h3 >
2018-10-21 22:02:45 +03:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
2015-08-09 21:17:27 -07:00
## Display headings
2019-02-07 23:32:05 +01:00
Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading** —a larger, slightly more opinionated heading style. Keep in mind these headings are not responsive by default, but it's possible to enable [responsive font sizes ](#responsive-font-sizes ).
2015-08-09 21:17:27 -07:00
< div class = "bd-example bd-example-type" >
< table class = "table" >
< tbody >
< tr >
2017-05-27 22:40:00 -07:00
< td > < span class = "display-1" > Display 1< / span > < / td >
2015-08-09 21:17:27 -07:00
< / tr >
< tr >
2017-05-27 22:40:00 -07:00
< td > < span class = "display-2" > Display 2< / span > < / td >
2015-08-09 21:17:27 -07:00
< / tr >
< tr >
2017-05-27 22:40:00 -07:00
< td > < span class = "display-3" > Display 3< / span > < / td >
2015-08-09 21:17:27 -07:00
< / tr >
< tr >
2017-05-27 22:40:00 -07:00
< td > < span class = "display-4" > Display 4< / span > < / td >
2015-08-09 21:17:27 -07:00
< / tr >
< / tbody >
< / table >
< / div >
2015-08-19 15:10:44 -07:00
{% highlight html %}
< h1 class = "display-1" > Display 1< / h1 >
2015-09-01 21:11:53 -07:00
< h1 class = "display-2" > Display 2< / h1 >
< h1 class = "display-3" > Display 3< / h1 >
< h1 class = "display-4" > Display 4< / h1 >
2015-08-19 15:10:44 -07:00
{% endhighlight %}
2014-07-09 23:06:16 -07:00
## Lead
Make a paragraph stand out by adding `.lead` .
2018-03-14 16:44:38 +01:00
{% capture example %}
2014-07-09 23:06:16 -07:00
< p class = "lead" >
Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.
< / p >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
## Inline text elements
2014-08-05 17:21:13 -07:00
Styling for common inline HTML5 elements.
2014-07-09 23:06:16 -07:00
2018-03-14 16:44:38 +01:00
{% capture example %}
2014-07-09 23:06:16 -07:00
< p > You can use the mark tag to < mark > highlight< / mark > text.< / p >
< p > < del > This line of text is meant to be treated as deleted text.< / del > < / p >
< p > < s > This line of text is meant to be treated as no longer accurate.< / s > < / p >
< p > < ins > This line of text is meant to be treated as an addition to the document.< / ins > < / p >
< p > < u > This line of text will render as underlined< / u > < / p >
< p > < small > This line of text is meant to be treated as fine print.< / small > < / p >
< p > < strong > This line rendered as bold text.< / strong > < / p >
< p > < em > This line rendered as italicized text.< / em > < / p >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
2016-01-20 17:50:08 -08:00
`.mark` and `.small` classes are also available to apply the same styles as `<mark>` and `<small>` while avoiding any unwanted semantic implications that the tags would bring.
2014-07-09 23:06:16 -07:00
2016-01-20 17:50:08 -08:00
While not shown above, feel free to use `<b>` and `<i>` in HTML5. `<b>` is meant to highlight words or phrases without conveying additional importance while `<i>` is mostly for voice, technical terms, etc.
2016-01-21 10:28:05 +10:00
2016-02-06 15:53:10 -08:00
## Text utilities
2017-11-24 21:35:16 +09:00
Change text alignment, transform, style, weight, and color with our [text utilities ]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/text/ ) and [color utilities ]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/colors/ ).
2016-02-06 15:53:10 -08:00
2014-07-09 23:06:16 -07:00
## Abbreviations
Drop Normalize, port relevant parts to Reboot (#21741)
* Get this party started by removing mention of Normalize.css
* Nuke the old comment, consolidate to a single line and number as appropriate
* Bring over styles for HTML element from Normalize to Reboot
* Move margin override for body element from Normalize to Reboot
* Drop the block reset for HTML5 elements in IE9- from Normalize given we dropped IE9 support
* Building on previous commit, do the same thing for figure, figcaption, and main
* Remove IE9- display from Normalize given our browser support
* Drop IE8 figure margin because we're IE10+
* No need for the h1 overrides because we reset these font and margin styles anyway in _type.scss already
* Drop Safari 6 b and strong normalization because we're Safari 8+
* Remove mark styles for IE9- from Normalize
* Remove old iOS audio fixes from Normalize
* Remove IE9- display for progress from Normalize
* Remove more IE9- rules from Normalize
* One more IE9- display removal for canvas element
* Move pre overrides from Normalize to Reboot
* Move over some link resets to Reboot, drop others
- Move over background-color and text-decoration
- Drop focus outline change given it affects the offset on hover of
focused links
* Move over more code element resets, consolidate with pre overrides, too
* Move over sub and sup wholesale
* Move over img normalization to Reboot
* Move over SVG override too
* - Drop dupe hidden, but add comment for it
- Move over template
- Move over summary
* Remove bulk of @viewport comment
* edit down that code comment
* consolidate html-based normalizations
* update comments
* Consolidate abbr styles
* move over more type elements
* move over hr changes
* move over form controls and more
* move over button resets
* move over firefox button changes
* move over search changes and more
* we nuke all these styles for fieldsets anyway, so outright remove them
* no need for those, we override them
* move over legend, fieldset, progress
* line break
* delete normalize file
* linting
* update comment
* clarify docs mentions of normalize and reboot
* remove normalize excludes from linter
* remove normalize excludes from cli task
* linting
* callout license since we forked part of normalize
* Improve comments, move table background reset to .table class instead of in reboot
* trailing space
2017-01-21 14:14:25 -08:00
Stylized implementation of HTML's `<abbr>` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations have a default underline and gain a help cursor to provide additional context on hover and to users of assistive technologies.
2014-07-09 23:06:16 -07:00
Add `.initialism` to an abbreviation for a slightly smaller font-size.
2018-03-14 16:44:38 +01:00
{% capture example %}
2015-04-17 17:18:36 -07:00
< p > < abbr title = "attribute" > attr< / abbr > < / p >
< p > < abbr title = "HyperText Markup Language" class = "initialism" > HTML< / abbr > < / p >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
## Blockquotes
2015-12-07 23:36:35 -08:00
For quoting blocks of content from another source within your document. Wrap `<blockquote class="blockquote">` around any < abbr title = "HyperText Markup Language" > HTML</ abbr > as the quote.
2014-07-09 23:06:16 -07:00
2018-03-14 16:44:38 +01:00
{% capture example %}
2015-11-03 10:25:17 +01:00
< blockquote class = "blockquote" >
2016-09-08 22:16:28 -07:00
< p class = "mb-0" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.< / p >
2014-07-09 23:06:16 -07:00
< / blockquote >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
2015-04-17 17:18:36 -07:00
### Naming a source
2014-07-09 23:06:16 -07:00
2015-11-03 10:25:17 +01:00
Add a `<footer class="blockquote-footer">` for identifying the source. Wrap the name of the source work in `<cite>` .
2014-07-09 23:06:16 -07:00
2018-03-14 16:44:38 +01:00
{% capture example %}
2015-08-12 18:47:15 -07:00
< blockquote class = "blockquote" >
2016-09-08 22:16:28 -07:00
< p class = "mb-0" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.< / p >
2015-11-03 10:25:17 +01:00
< footer class = "blockquote-footer" > Someone famous in < cite title = "Source Title" > Source Title< / cite > < / footer >
2014-07-09 23:06:16 -07:00
< / blockquote >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
2017-06-30 14:22:11 -07:00
### Alignment
2014-07-09 23:06:16 -07:00
2017-06-30 14:22:11 -07:00
Use text utilities as needed to change the alignment of your blockquote.
2014-07-09 23:06:16 -07:00
2018-03-14 16:44:38 +01:00
{% capture example %}
2017-06-30 14:22:11 -07:00
< blockquote class = "blockquote text-center" >
< p class = "mb-0" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.< / p >
< footer class = "blockquote-footer" > Someone famous in < cite title = "Source Title" > Source Title< / cite > < / footer >
< / blockquote >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2017-06-30 14:22:11 -07:00
2018-03-14 16:44:38 +01:00
{% capture example %}
2017-06-30 14:22:11 -07:00
< blockquote class = "blockquote text-right" >
2016-09-08 22:16:28 -07:00
< p class = "mb-0" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.< / p >
2015-11-03 10:25:17 +01:00
< footer class = "blockquote-footer" > Someone famous in < cite title = "Source Title" > Source Title< / cite > < / footer >
2014-07-09 23:06:16 -07:00
< / blockquote >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
## Lists
### Unstyled
Remove the default `list-style` and left margin on list items (immediate children only). **This only applies to immediate children list items** , meaning you will need to add the class for any nested lists as well.
2018-03-14 16:44:38 +01:00
{% capture example %}
2014-07-09 23:06:16 -07:00
< ul class = "list-unstyled" >
< li > Lorem ipsum dolor sit amet< / li >
< li > Consectetur adipiscing elit< / li >
< li > Integer molestie lorem at massa< / li >
< li > Facilisis in pretium nisl aliquet< / li >
< li > Nulla volutpat aliquam velit
< ul >
< li > Phasellus iaculis neque< / li >
< li > Purus sodales ultricies< / li >
< li > Vestibulum laoreet porttitor sem< / li >
< li > Ac tristique libero volutpat at< / li >
< / ul >
< / li >
< li > Faucibus porta lacus fringilla vel< / li >
< li > Aenean sit amet erat nunc< / li >
< li > Eget porttitor lorem< / li >
< / ul >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
### Inline
2016-04-08 20:41:44 -05:00
Remove a list's bullets and apply some light `margin` with a combination of two classes, `.list-inline` and `.list-inline-item` .
2014-07-09 23:06:16 -07:00
2018-03-14 16:44:38 +01:00
{% capture example %}
2014-07-09 23:06:16 -07:00
< ul class = "list-inline" >
2015-11-03 01:57:37 +01:00
< li class = "list-inline-item" > Lorem ipsum< / li >
< li class = "list-inline-item" > Phasellus iaculis< / li >
< li class = "list-inline-item" > Nulla volutpat< / li >
2014-07-09 23:06:16 -07:00
< / ul >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2014-07-09 23:06:16 -07:00
2015-12-24 21:26:24 -07:00
### Description list alignment
2014-07-09 23:06:16 -07:00
2014-12-11 14:12:10 -08:00
Align terms and descriptions horizontally by using our grid system's predefined classes (or semantic mixins). For longer terms, you can optionally add a `.text-truncate` class to truncate the text with an ellipsis.
2014-07-09 23:06:16 -07:00
2018-03-14 16:44:38 +01:00
{% capture example %}
2015-12-24 21:26:24 -07:00
< dl class = "row" >
2014-12-11 14:12:10 -08:00
< dt class = "col-sm-3" > Description lists< / dt >
< dd class = "col-sm-9" > A description list is perfect for defining terms.< / dd >
< dt class = "col-sm-3" > Euismod< / dt >
2017-07-01 10:42:36 -07:00
< dd class = "col-sm-9" >
< p > Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.< / p >
< p > Donec id elit non mi porta gravida at eget metus.< / p >
< / dd >
2015-01-03 20:08:58 -08:00
2014-12-11 14:12:10 -08:00
< dt class = "col-sm-3" > Malesuada porta< / dt >
< dd class = "col-sm-9" > Etiam porta sem malesuada magna mollis euismod.< / dd >
2015-01-03 20:08:58 -08:00
2014-12-11 14:12:10 -08:00
< dt class = "col-sm-3 text-truncate" > Truncated term is truncated< / dt >
< dd class = "col-sm-9" > Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.< / dd >
2016-01-06 16:56:27 -08:00
< dt class = "col-sm-3" > Nesting< / dt >
< dd class = "col-sm-9" >
< dl class = "row" >
2016-02-06 20:01:37 -08:00
< dt class = "col-sm-4" > Nested definition list< / dt >
< dd class = "col-sm-8" > Aenean posuere, tortor sed cursus feugiat, nunc augue blandit nunc.< / dd >
2016-01-06 16:56:27 -08:00
< / dl >
< / dd >
2014-07-09 23:06:16 -07:00
< / dl >
2018-03-14 16:44:38 +01:00
{% endcapture %}
{% include example.html content=example %}
2015-08-22 18:56:28 -07:00
2019-02-07 23:32:05 +01:00
## Responsive font sizes
2015-08-22 18:56:28 -07:00
2020-09-25 17:58:11 +03:00
As of v4.3.0, Bootstrap ships with the option to enable responsive font sizes, allowing text to scale more naturally across device and viewport sizes. < abbr title = "Responsive font sizes" > RFS</ abbr > can be enabled by changing the `$enable-responsive-font-sizes` Sass variable to `true` and recompiling Bootstrap.
2015-08-22 18:56:28 -07:00
2019-10-28 07:41:08 +01:00
To support < abbr title = "Responsive font sizes" > RFS</ abbr > , we use a Sass mixin to replace our normal `font-size` properties. Responsive font sizes will be compiled into `calc()` functions with a mix of `rem` and viewport units to enable the responsive scaling behavior. More about < abbr title = "Responsive font sizes" > RFS</ abbr > and its configuration can be found on its [GitHub repository ](https://github.com/twbs/rfs/tree/v8.0.4 ).