Перезагрузка
Reboot — коллекция специфичных для элементов изменений CSS в одном файле, запускает Bootstrap для предоставления элегантной, последовательной и простой базы для построения.
Подход
Reboot строится на Normalize, предоставляя многим HTML элементам несколько субъективные стили, используя только селекторы элементов. Дополнительная стилизация выполняется только с классами. Например, мы перезагружаем некоторые стили <table>
для более простой базы и позже предоставляем .table
, .table-bordered
и другие.
Вот наши рекомендации и причины выбора того, что переопределить в Reboot:
- Обновить некоторые значения браузера по умолчанию для использования
rem
ов вместоem
ов для масштабируемого интервала компонентов. - Избегать
margin-top
. Вертикальные отступы могут схлопываться, давая неожиданные результаты. Что более важно, однонаправленныйmargin
— это более простая ментальная модель. - Для более легкого масштабирования между размерами устройств, блочные элементы должны использовать
rem
ы дляmargin
ов. - Свести к минимуму объявления свойств, связанных с
font
, используяinherit
везде, где это возможно.
CSS переменные
Добавлено в v5.2.0С v5.1.1 мы стандартизировали наши необходимые @import
ы во всех наших CSS пакетах (включая bootstrap.css
, bootstrap-reboot.css
и bootstrap-grid.css
), чтобы включить _root.scss
. Это добавляет CSS переменные уровня :root
во все пакеты, независимо от того, сколько из них используется в этом пакете. В конечном итоге Bootstrap 5 будет продолжать видеть больше CSS переменных, добавляемых со временем, чтобы обеспечить больше настройки в реальном времени без необходимости всегда перекомпилировать Sass. Наш подход состоит в том, чтобы взять наши исходные переменные Sass и преобразовать их в CSS переменные. Таким образом, даже если вы не используете CSS переменные, у вас все еще есть вся мощь Sass. Это все еще в процессе и потребует времени для полной реализации.
Например, рассмотрите эти CSS переменные :root
для общих стилей <body>
:
@if $font-size-root != null {
--#{$prefix}root-font-size: #{$font-size-root};
}
--#{$prefix}body-font-family: #{inspect($font-family-base)};
@include rfs($font-size-base, --#{$prefix}body-font-size);
--#{$prefix}body-font-weight: #{$font-weight-base};
--#{$prefix}body-line-height: #{$line-height-base};
@if $body-text-align != null {
--#{$prefix}body-text-align: #{$body-text-align};
}
--#{$prefix}body-color: #{$body-color};
--#{$prefix}body-color-rgb: #{to-rgb($body-color)};
--#{$prefix}body-bg: #{$body-bg};
--#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};
--#{$prefix}emphasis-color: #{$body-emphasis-color};
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};
--#{$prefix}secondary-color: #{$body-secondary-color};
--#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};
--#{$prefix}secondary-bg: #{$body-secondary-bg};
--#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};
--#{$prefix}tertiary-color: #{$body-tertiary-color};
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
--#{$prefix}tertiary-bg: #{$body-tertiary-bg};
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
На практике эти переменные затем применяются в Reboot следующим образом:
body {
margin: 0; // 1
font-family: var(--#{$prefix}body-font-family);
@include font-size(var(--#{$prefix}body-font-size));
font-weight: var(--#{$prefix}body-font-weight);
line-height: var(--#{$prefix}body-line-height);
color: var(--#{$prefix}body-color);
text-align: var(--#{$prefix}body-text-align);
background-color: var(--#{$prefix}body-bg); // 2
-webkit-text-size-adjust: 100%; // 3
-webkit-tap-highlight-color: rgba($black, 0); // 4
}
Что позволяет вам делать настройки в реальном времени, как вам нравится:
<body style="--bs-body-color: #333;">
<!-- ... -->
</body>
Настройки страницы по умолчанию
Элементы <html>
и <body>
обновлены для предоставления лучших настроек по умолчанию для всей страницы. Более конкретно:
box-sizing
глобально установлен на каждом элементе — включая*::before
и*::after
, вborder-box
. Это гарантирует, что объявленная ширина элемента никогда не будет превышена из-за отступов или границ.- Базовый
font-size
не объявлен на<html>
, но предполагается16px
(браузер по умолчанию).font-size: 1rem
применяется на<body>
для легкого отзывчивого масштабирования типа через медиа-запросы, при этом уважая предпочтения пользователя и обеспечивая более доступный подход. Этот браузерный по умолчанию может быть переопределен путем изменения переменной$font-size-root
.
- Базовый
<body>
также устанавливает глобальныеfont-family
,font-weight
,line-height
иcolor
. Это наследуется позже некоторыми элементами форм для предотвращения несоответствий шрифтов.- Для безопасности
<body>
имеет объявленныйbackground-color
, по умолчанию#fff
.
Нативный стек шрифтов
Bootstrap использует "нативный стек шрифтов" или "системный стек шрифтов" для оптимального рендеринга текста на каждом устройстве и ОС. Эти системные шрифты были разработаны специально с учетом современных устройств, с улучшенным рендерингом на экранах, поддержкой переменных шрифтов и многим другим. Читайте больше о нативных стеках шрифтов в этой статье Smashing Magazine.
$font-family-sans-serif:
// Cross-platform generic font family (default user interface font)
system-ui,
// Safari for macOS and iOS (San Francisco)
-apple-system,
// Windows
"Segoe UI",
// Android
Roboto,
// older macOS and iOS
"Helvetica Neue",
// Linux
"Noto Sans",
"Liberation Sans",
// Basic web fallback
Arial,
// Sans serif fallback
sans-serif,
// Emoji fonts
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
Обратите внимание, что поскольку стек шрифтов включает шрифты с поддержкой эмодзи, многие распространённые символы и знаки Unicode будут отображаться как многоцветные пиктограммы. Их внешний вид будет отличаться в зависимости от стиля, используемого в нативном шрифте эмодзи браузера или платформы, и они не будут подчиняться никаким CSS-стилям color
.
Этот font-family
применяется к элементу <body>
и автоматически наследуется глобально во всём Bootstrap. Чтобы изменить глобальный font-family
, обновите переменную $font-family-base
и перекомпилируйте Bootstrap.
Заголовки
Все элементы заголовков — <h1>
—<h6>
имеют удаленный margin-top
, установленный margin-bottom: .5rem
и сжатый line-height
. Хотя заголовки наследуют свой color
по умолчанию, вы также можете переопределить его через необязательную CSS переменную --bs-heading-color
.
Заголовок | Пример |
---|---|
<h1></h1> | h1. Bootstrap heading |
<h2></h2> | h2. Bootstrap heading |
<h3></h3> | h3. Bootstrap heading |
<h4></h4> | h4. Bootstrap heading |
<h5></h5> | h5. Bootstrap heading |
<h6></h6> | h6. Bootstrap heading |
Параграфы
Все элементы <p>
имеют удаленный margin-top
и установленный margin-bottom: 1rem
для удобного интервала.
Это пример параграфа.
<p>Это пример параграфа.</p>
Ссылки
Ссылки имеют применяемый по умолчанию color
и подчеркивание. Хотя ссылки изменяются при :hover
, они не изменяются в зависимости от того, :visited
ли кто-то ссылку. Они также не получают специальных стилей :focus
.
<a href="#">This is an example link</a>
Начиная с v5.3.x, цвет ссылки устанавливается с помощью rgba()
и новых CSS переменных -rgb
, что позволяет легко настраивать прозрачность цвета ссылки. Измените прозрачность цвета ссылки с помощью CSS переменной --bs-link-opacity
:
<a href="#" style="--bs-link-opacity: .5">Это пример ссылки</a>
Ссылки-заполнители — те, у которых отсутствует атрибут href
, — выбираются с помощью более специфичного селектора, и их color
и text-decoration
сбрасываются к значениям по умолчанию.
<a>Это пример ссылки</a>
Горизонтальные линии
Элемент <hr>
был упрощен. Подобно браузерным дефолтам, <hr>
стилизуются через border-top
, имеют по умолчанию opacity: .25
и автоматически наследуют свой border-color
через color
, включая когда color
устанавливается через родителя. Они могут быть изменены с помощью текста, границ и утилит прозрачности.
<hr>
<div class="text-success">
<hr>
</div>
<hr class="border border-danger border-2 opacity-50">
<hr class="border border-primary border-3 opacity-75">
Списки
Все списки — <ul>
, <ol>
и <dl>
— имеют удаленный margin-top
и margin-bottom: 1rem
. Вложенные списки не имеют margin-bottom
. Мы также сбросили padding-left
на элементах <ul>
и <ol>
.
- All lists have their top margin removed
- And their bottom margin normalized
- Nested lists have no bottom margin
- This way they have a more even appearance
- Particularly when followed by more list items
- The left padding has also been reset
- Here’s an ordered list
- With a few list items
- It has the same overall look
- As the previous unordered list
For simpler styling, clear hierarchy, and better spacing, description lists have updated margin
s. <dd>
s reset margin-left
to 0
and add margin-bottom: .5rem
. <dt>
s are bolded.
- Description lists
- A description list is perfect for defining terms.
- Term
- Definition for the term.
- A second definition for the same term.
- Another term
- Definition for this other term.
Инлайновый код
Оберните инлайновые фрагменты кода с помощью <code>
. Убедитесь, что экранируете угловые скобки HTML.
<section>
should be wrapped as inline. For example, <code><section></code> should be wrapped as inline.
Блоки кода
Используйте <pre>
для нескольких строк кода. Опять же, убедитесь, что экранируете любые угловые скобки в коде для правильного рендеринга. Элемент <pre>
сбрасывается для удаления его margin-top
и использует rem
единицы для его margin-bottom
.
<p>Sample text here...</p>
<p>And another line of sample text here...</p>
<pre><code><p>Sample text here...</p>
<p>And another line of sample text here...</p>
</code></pre>
Переменные
Для обозначения переменных используйте тег <var>
.
<var>y</var> = <var>m</var><var>x</var> + <var>b</var>
Пользовательский ввод
Используйте <kbd>
для обозначения ввода, который обычно вводится через клавиатуру.
To edit settings, press Ctrl + ,
To switch directories, type <kbd>cd</kbd> followed by the name of the directory.<br>
To edit settings, press <kbd><kbd>Ctrl</kbd> + <kbd>,</kbd></kbd>
Пример вывода
Для обозначения примера вывода из программы используйте тег <samp>
.
<samp>This text is meant to be treated as sample output from a computer program.</samp>
Таблицы
Таблицы слегка настроены для стилизации <caption>
ов, схлопывания границ и обеспечения последовательного text-align
повсюду. Дополнительные изменения для границ, отступов и многого другого поставляются с классом .table
.
Table heading | Table heading | Table heading | Table heading |
---|---|---|---|
Table cell | Table cell | Table cell | Table cell |
Table cell | Table cell | Table cell | Table cell |
Table cell | Table cell | Table cell | Table cell |
<table>
<caption>
This is an example table, and this is its caption to describe the contents.
</caption>
<thead>
<tr>
<th>Table heading</th>
<th>Table heading</th>
<th>Table heading</th>
<th>Table heading</th>
</tr>
</thead>
<tbody>
<tr>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
</tbody>
</table>
Формы
Различные элементы форм были перезагружены для более простых базовых стилей. Вот некоторые из наиболее заметных изменений:
- У
<fieldset>
отсутствуют границы, внутренние и внешние отступы, чтобы их было удобно использовать как обертки для отдельных или групповых полей ввода. <legend>
, как и fieldset, также был стилизован для отображения в виде заголовка.<label>
имеет свойствоdisplay: inline-block
, чтобы можно было применятьmargin
.<input>
,<select>
,<textarea>
и<button>
в основном обрабатываются Normalize, но Reboot также убирает ихmargin
и устанавливаетline-height: inherit
.<textarea>
можно изменять по размеру только по вертикали, так как горизонтальное изменение часто "ломает" вёрстку страницы.- У
<button>
и элементов<input>
с типом button появляетсяcursor: pointer
, если они не имеют состояния:disabled
.
Эти изменения, и многие другие, демонстрируются ниже.
Некоторые типы ввода даты не полностью поддерживаются в последних версиях Safari и Firefox.
Указатели на кнопках
Reboot включает улучшение для role="button"
, чтобы изменить курсор по умолчанию на pointer
. Добавьте этот атрибут к элементам, чтобы помочь указать, что элементы интерактивны. Эта роль не нужна для элементов <button>
, которые получают свое собственное изменение cursor
.
<span role="button" tabindex="0">Non-button element button</span>
Разные элементы
Адрес
Элемент <address>
обновлен для сброса браузерного font-style
по умолчанию с italic
на normal
. line-height
теперь также наследуется, и добавлен margin-bottom: 1rem
. <address>
предназначены для представления контактной информации ближайшего предка (или всего произведения). Сохраняйте форматирование, заканчивая строки с <br>
.
1123 Fictional St,
San Francisco, CA 94103
P: (123) 456-7890 Full Name
first.last@example.com
Цитата
Стандартный margin
для blockquotes составляет 1em 40px
, поэтому мы сбрасываем его к 0 0 1rem
для большей согласованности с другими элементами.
A well-known quote, contained in a blockquote element.
Встроенные элементы
Элемент <abbr>
получает базовую стилизацию, чтобы выделяться среди текста параграфа.
Сводка
Стандартный cursor
для summary — text
, поэтому мы сбрасываем его к pointer
, чтобы показать, что с элементом можно взаимодействовать, кликнув по нему.
Some details
More info about the details.
Even more details
Here are even more details about the details.
HTML5 атрибут [hidden]
HTML5 добавляет новый глобальный атрибут с именем [hidden]
, который по умолчанию стилизован как display: none
. Заимствуя идею из PureCSS, мы улучшаем этот стандарт, делая [hidden] { display: none !important; }
, чтобы помочь предотвратить случайное переопределение его display
.
<input type="text" hidden>
Поскольку [hidden]
не совместим с методами jQuery $(...).hide()
и $(...).show()
, мы не рекомендуем конкретно [hidden]
над другими техниками управления display
элементов.
Чтобы просто переключить видимость элемента, то есть его display
не изменяется и элемент все еще может влиять на поток документа, используйте вместо этого класс .invisible
.