Переход к v4
Bootstrap 4 является основным переписыванием почти всего проекта. Наиболее заметные изменения кратко излагаются ниже, за ними следуют более конкретные классы и поведенческие изменения для соответствующих компонентов.
Heads up! This will be in flux as work on the v4 alphas progresses. Until then consider it incomplete, and we’d love pull requests to help keep it up to date.
Краткое содержание
Тут перечислены моменты, которые вам нужно знать при переходе с версии v3 на v4.
Поддержка браузера
- Отброшена поддержка IE8, IE9 и iOS 6. V4 поддерижвает теперь только IE10 + и iOS 7+. Для сайтов, которые нуждаются в одном из них, используйте v3.
- Добавлена официальная поддержка браузера Lollipop v5.0 и WebView. Более ранние версии браузера Android и WebView остаются только неофициально поддерживаемыми.
Глобальные изменения
- По умолчанию Flexbox включен. В общем, это означает переход от floats и многого другого через наши компоненты.
- Переключились с Less на Sass для наших исходных файлов CSS.
- Переключились из
px
вrem
как наш основной блок CSS, хотя пиксели по-прежнему используются для медиа-запросов и поведения сетки, поскольку размер видовых экранов не зависит от размера шрифта. - Глобальный размер шрифта увеличен с
14px
до16px
. - Добавлен новый уровень сетки для небольших устройств на
576px
и ниже (наш новый уровеньxs
). - Заменена отдельная необязательная тема с настраиваемыми параметрами через переменные SCSS (например,
$enable-gradients: true
).
Грид-система
- Добавлена поддержка flexbox в сетке mixins и предопределенные классы.
- В составе flexbox включена поддержка вертикальных и горизонтальных классов выравнивания.
- Реконструированы grid mixinы для объединения
make-col-span
вmake-col
для сингулярного mixin. - Добавлен новый уровень сетки
sm
ниже768px
для более детального контроля. Теперь у нас естьxs
,sm
,md
,lg
, иxl
. Это также означает, что каждый уровень был поднят на один уровень (поэтому.col-md-6
в v3 теперь.col-lg-6
в v4). - Изменены контрольные точки медиа-запросов сетки и ширины контейнера для учета нового уровня сетки и обеспечения того, чтобы столбцы были равномерно делимыми на
12
при максимальной ширине. - Теперь контрольные точки сетки и ширины контейнера обрабатываются с помощью карт Sass (
$grid-breakpoints
и$container-max-widths
) вместо нескольких отдельных переменных. Они полностью заменяют переменные@screen-*
и позволяют полностью настраивать уровни сетки. - Медиа-запросы также изменились. Вместо того, чтобы каждый раз повторять наши объявления медиа-запросов с одинаковым значением, теперь мы имеем
@include media-breakpoint-up/down/only
. Теперь, вместо того, чтобы писать@media (min-width: @screen-sm-min) { ... }
, вы можете написать@include media-breakpoint-up(sm) { ... }
.
Компоненты
- Удалены панели, thumbnails и wells для нового всеохватывающего компонента, карточки.
- Удален значок иконки Glyphicons. Если вам нужны значки, некоторые из них:
- начальный вариант Glyphicons
- Octicons
- Font Awesome
- Удален плагин Affix jQuery. Мы рекомендуем использовать
position: sticky
вместо polyfill. Смотрите HTML5 Please entry для получения подробной информации и рекомендаций по конкретным polyfill.- Если вы использовали Affix для применения дополнительных стилей без-
position
, polyfills могут не поддерживать ваш вариант использования. Одним из таких вариантов является сторонняя библиотека ScrollPos-Styler.
- Если вы использовали Affix для применения дополнительных стилей без-
- Удален компонент пейджера, поскольку он был по существу немного настроенными кнопками.
- Реорганизованы почти все компоненты, чтобы использовать более невложенные классы вместо селекторов детей.
Разное
- Не-адаптивное использование Bootstrap больше не поддерживается.
- Отброшен онлайн-настройщик в пользу более обширной документации по настройке и настраиваемых сборок.
По компоненту
В этом списке перечислены ключевые изменения компонента между v3.x.x и v4.0.0.
Перезагрузка
Новым для Bootstrap 4 является Reboot, новая таблица стилей, которая основывается на нормализации с нашими собственными несколько самоуверенными стилями сброса. Селекторы, отображаемые в этом файле, используют только элементы - здесь нет классов. Это изолирует наши стили сброса от наших стилей компонентов для более модульного подхода. Некоторые из наиболее важных сбросов, которые это включает, изменение box-sizing: border-box
, перемещение из em
в блоки rem
на многих элементах, стилях ссылок и многих сбросах форм элементов.
Типография
- Переместили все
.text-
утилиты в файл_utilities.scss
. - Удален
.page-header
поскольку, помимо границы, все его стили можно применять с помощью утилит. .dl-horizontal
был удален. Вместо этого используйте.row
на<dl>
и используйте классы столбцов сетки (или mixins) для дочерних элементов<dt>
и<dd>
children.- Пользовательское моделирование
<blockquote>
переместилось в классы—.blockquote
и модификатор.blockquote-reverse
. .list-inline
теперь требует, чтобы для его элементов списка детей был применен новый класс.list-inline-item
.
Изображения
- Переименованы
.img-responsive
в.img-fluid
. - Переименованы
.img-rounded
в.rounded
- Переименованы
.img-circle
в.rounded-circle
Таблицы
- Почти все экземпляры селектора
>
были удалены, то есть вложенные таблицы теперь автоматически наследуют стили от своих родителей. Это значительно упрощает наши селекторы и потенциальные настройки. - В адаптивных таблицах больше не требуется оборачивать элемент. Вместо этого просто поставьте
.table-responsive
прямо на<table>
. - Переименован
.table-condensed
в.table-sm
для согласованности. - Добавлен новый параметр
.table-inverse
. - Добавлены модификаторы заголовков таблицы:
.thead-default
и.thead-inverse
. - Переименованы контекстные классы, с добавлением префикса
.table-
. Следовательно,.active
,.success
,.warning
,.danger
и.table-info
переименованы в.table-active
,.table-success
,.table-warning
,.table-danger
и.table-info
.
Формы
- Перемещенный элемент сбрасывается в файл
_reboot.scss
. - Переименован
.control-label
в.form-control-label
. - Переименованы
.input-lg
и.input-sm
в.form-control-lg
и.form-control-sm
, соответственно. - Удалены классы
.form-group-*
для простоты. Вместо этого используйте классы.form-control-*
. - Уаделн
.help-block
и заменен.form-text
для блочного справочного текста. Для встроенного справочного текста и других гибких параметров используйте служебные классы, например.text-muted
. - Горизонтальные формы переработаны:
- Удалено требование класса
.form-horizontal
. .form-group
больше не применяет стили из.row
через mixin, поэтому.row
теперь требуется для горизонтальных макетов сетки (например,<div class="form-group row">
).- Добавлен новый класс
.form-control-label
для вертикально-центральных меток с.form-control
s.
- Удалено требование класса
- Добавлена поддержка пользовательских форм (для флажков, переключателей, выборов и входных файлов).
Кнопки
- Переименован
.btn-default
в.btn-secondary
. - Удален класс
.btn-xs
целиком, поскольку.btn-sm
пропорционально намного меньше, чем в v3. - Функция кнопки состояния плагина jQuery
button.js
была удалена. Сюда входят методы$().button(string)
и$().button('reset')
Вместо этого мы советуем использовать небольшой пользовательский JavaScript, который будет иметь преимущество в том, чтобы вести себя именно так, как вы этого хотите.- Обратите внимание, что другие функции плагина (флажки кнопок, кнопочные переключатели, кнопки с одним переключателем) были сохранены в v4.
Группа кнопок
- Компонент переписан с flexbox.
- Удален класс
.btn-group-xs
полностью с учетом удаления.btn-xs
. - Удалены явные интервалы между группами кнопок в панелях инструментов кнопок; теперь используйте утилиты margin.
- Улучшена документация для использования с другими компонентами.
Выпадающие списки
- Переключены из родительских селекторов в особые классы для всех компонентов, модификаторов и т. д.
- Упрощенные стили выпадающих списков больше не поставляются со стрелками вверх или вниз, прикрепленными к раскрывающемуся меню.
- Выпадающие списки теперь можно создавать с помощью
<div>
или<ul>
. - Перестроены выпадающие стили и разметка для того, чтобы обеспечить удобную встроенную поддержку раскрывающихся элементов на основе
<a>
и<button>
. - Переименован
.divider
в.dropdown-divider
. - Выпадающим элементам теперь требуется
.dropdown-item
. - Выпадающим переключателям больше не требуется явный
<span class="caret"></span>
; теперь это предоставляется автоматически через CSS::after
на.dropdown-toggle
.
Грид-система
- Добавлена новая точка останова сетки
576px
в видеsm
, что означает, что теперь есть пять полных уровней (xs
,sm
,md
,lg
, иxl
). - Переименоваys классы адаптивных сеток из
.col-{breakpoint}-{modifier}-{size}
в.{modifier}-{breakpoint}-{size}
для более простых классов сетки. Например, вместо.col-md-3.col-md-push-9
это.col-md-3.push-md-9
. - Переработаны грид-mixins, чтобы объединить
make-col
иmake-col-span
в одинmake-col
тем самым обеспечив, что mixins и предопределенные классы используют те же самые поведения float/flex. - Добавлены классы утилиты flexbox для грид-системы и компонентов.
Группы списков
- Компонент переписан с flexbox.
- Заменили
a.list-group-item
явным классом,.list-group-item-action
, для моделирования версий ссылок и кнопок элементов группы списков. - Добавлен класс
.list-group-flush
для использования с картами.
Модальные окна
- Компонент переписан с flexbox.
- При перемещении в flexbox выравнивание значков отклоения в заголовке, скорее всего, не работает, поскольку мы больше не используем float. Сначала идет плавающее содержимое, но с flexbox это уже не так. Обновите значки отклоения, чтобы они шли после модальных заголовков, чтобы исправить это.
- Опция
remote
(которая может использоваться для автоматической загрузки и вставки внешнего контента в модальное окно) и соответствующее событиеloaded.bs.modal
были удалены. Мы рекомендуем вместо этого использовать клиентскую шаблонизацию или фреймворк привязки данных или вызов самого jQuery.load.
Навигация
- Компонент переписан с flexbox.
- Удалены почти все
>
селекторы для упрощения стиля через невложенные классы. - Вместо селекторов, специфичных для HTML, таких как
.nav > li > a
, мы используем отдельные классы для.nav
,.nav-item
, и.nav-link
. Это делает ваш HTML более гибким при одновременном увеличении расширяемости.
Навигационная панель
Navbar полностью переписан в flexbox с улучшенной поддержкой выравнивания, отклика и настройки.
- Адаптивные поведения navbar теперь применяются к классу
.navbar
через необходимый.navbar-toggleable-{breakpoint}
где вы выбираете, где свернуть навигационную панель. Раньше было меньше модификации переменной и требовалось перекомпиляция. .navbar-default
теперь.navbar-light
, хотя.navbar-inverse
остается прежним. Один из них требуется для каждой навигационной панели. Однако эти классы больше не устанавливаютbackground-color
; вместо этого они существенно влияют только наcolor
.- Navbars теперь требует какой-то фоновой декларации. Выберите из наших утилит для фона (
.bg-*
) или установите свои собственные с помощью классов light / inverse выше для любой кастомизации. - С учетом стилей flexbox, навигационная панель теперь может использовать утилиты flexbox для упрощения выравнивания.
.navbar-toggle
теперь.navbar-toggler
и имеет разные стили и внутреннюю разметку (не более трех<span>
).- Полностью исключен класс
.navbar-form
. Он больше не нужен; вместо этого просто используйте.form-inline
и примените при необходимости margin утилиты. - По умолчанию навигационная панель не включает поля
margin-bottom
илиborder-radius
. При необходимости используйте утилиты. - Все примеры с navbar были обновлены, чтобы включить новую разметку.
Постраничное разделение
- Компонент переписан с flexbox.
- Явные классы (
.page-item
,.page-link
) теперь требуются от потомков.pagination
- Удален компонент
.pager
целиком, так как он был немного больше, чем настраиваемые кнопки контура.
Навигационная цепочка
- Явный класс,
.breadcrumb-item
, теперь требуется от потомков.breadcrumb
Ярлыки, значки и теги
- Переименован
.label
в.tag
для устранения неоднозначности из элемента<label>
. - Удален компонент
.badge
поскольку он почти идентичен ярлыкам / тегам. Вместо этого используйте модификатор.tag-pill
вместе с компонентом метки. - Теги больше не размещаются автоматически в группах списков и других компонентах. Для этого теперь требуются классы утилит.
Панели, thumbnails и wells
Удалены полностью для нового компонента карты.
Панели
.panel
в.card
, теперь построенный с flexbox..panel-default
удален и не заменен..panel-group
удален и не заменен..card-group
- это не замена, они разные.panel-heading
в.card-header
.panel-title
в.card-title
. В зависимости от желаемого вида вы также можете использовать элементы или классы заголовков (например,<h3>
,.h3
) или полужирные элементы или классы (например,<strong>
,<b>
,.font-weight-bold
). Обратите внимание, что.card-title
, хотя и имеет аналогичное имя, производит иной вид, чем.panel-title
..panel-body
в.card-block
.panel-footer
в.card-footer
.panel-primary
в.card-primary
и.card-inverse
(или используйте.bg-primary
на.card-header
).panel-success
в.card-success
и.card-inverse
(или используйте.bg-success
на.card-header
).panel-info
в.card-info
и.card-inverse
(или используйте.bg-info
на.card-header
).panel-warning
в.card-warning
и.card-inverse
(или используйте.bg-warning
на.card-header
).panel-danger
в.card-danger
и.card-inverse
(или используйте.bg-danger
на.card-header
)
Подсказки
- Удалена поддержка параметров
auto
размещения.
Информеры
- Удалена поддержка параметров
auto
размещения.
Карусель
- Переработан весь компонент, чтобы упростить дизайн и стиль. У нас есть меньше стилей для переопределения, новые индикаторы и новые значки.
- Все CSS были невложенными и переименованы, гарантируя каждому классу префикс
.carousel-
.- Для элементов карусели,
.next
,.prev
,.left
, и.right
теперь являются следующими:.carousel-item-next
,.carousel-item-prev
,.carousel-item-left
, и.carousel-item-right
. .item
также сейчас.carousel-item
.- Для prev/next элементов управления
.carousel-control.right
и.carousel-control.left
теперь являются.carousel-control-right
и.carousel-control-left
, то есть они больше не требуют определенного базового класса.
- Для элементов карусели,
- Удалены все адаптивные стили, отложенные до утилит (например, показ титров на некоторых видовых экранах) и пользовательские стили по мере необходимости.
- Удалены переопределения изображений для изображений в карусельных элементах, отложенные до утилит.
- Изменен пример Carousel, в него включена новая разметка и стили.
Утилиты
- Утилиты отображения экрана стали адаптивными (например,
.d-none
иd-{sm,md,lg,xl}-none
). - Добавлены классыd
.float-{sm,md,lg,xl}-{left,right,none}
для адаптивных floats и удалены.pull-left
и.pull-right
поскольку они избыточны для.float-left
и.float-right
. - Добавлены адаптивные вариации для наших классов выравнивания текста
.text-{sm,md,lg,xl}-{left,center,right}
. - Добавлены новые margin auto утилиты для всех сторон, а также вертикальные и горизонтальные сокращения.
- Добавлена boatload утилит flexbox.
- Удален
.center-block
для нового класса.mx-auto
.
Vendor prefix mixins
vendor prefix mixins из Bootstrap 3, которые были исключены в v3.2.0, удалены в Bootstrap 4. Поскольку мы используем Autoprefixer, они больше не нужны.
Удалены следующие mixins: animation
, animation-delay
, animation-direction
, animation-duration
, animation-fill-mode
, animation-iteration-count
, animation-name
, animation-timing-function
, backface-visibility
, box-sizing
, content-columns
, hyphens
, opacity
, perspective
, perspective-origin
, rotate
, rotateX
, rotateY
, scale
, scaleX
, scaleY
, skew
, transform-origin
, transition-delay
, transition-duration
, transition-property
, transition-timing-function
, transition-transform
, translate
, translate3d
, user-select
Документация
Наша документация также получила обновление по всем направлениям:
- ы по-прежнему используем Jekyll, но у нас есть настраиваемые плагины:
example.rb
- это fork плагина по умлочаниюhighlight.rb
, позволяющая упростить обработку кода.callout.rb
является аналогичным fork, но предназначен для наших специальных выносок документов.
- Все содержимое документов было переписано в Markdown (вместо HTML) для упрощения редактирования.
- Страницы были реорганизованы для более простого контента и более доступной иерархии.
- Мы перешли с обычного CSS на SCSS, чтобы в полной мере использовать переменные Bootstrap, mixins и многое другое.
Адаптивные утилиты
Все @screen-
переменные были удалены в v4.0.0. Вместо этого используйте media-breakpoint-up()
, media-breakpoint-down()
, или media-breakpoint-only()
Sass mixins или $grid-breakpoints
карту Sass.
Адаптивные классы утилит также были пересмотрены.
- Классы
.hidden
и.show
были удалены, потому что они противоречили методам jQuery$(...).hide()
и$(...).show()
Вместо этого попробуйте переключить атрибут[hidden]
, используйте встроенные стили, такие какstyle="display: none;"
иstyle="display: block;"
, или переключите класс.invisible
. - Старые классы (
.hidden-xs
.hidden-sm
.hidden-md
.hidden-lg
.visible-xs-block
.visible-xs-inline
.visible-xs-inline-block
.visible-sm-block
.visible-sm-inline
.visible-sm-inline-block
.visible-md-block
.visible-md-inline
.visible-md-inline-block
.visible-lg-block
.visible-lg-inline
.visible-lg-inline-block
) исчезли. - Они были заменены на
.hidden-xs-up
.hidden-xs-down
.hidden-sm-up
.hidden-sm-down
.hidden-md-up
.hidden-md-down
.hidden-lg-up
.hidden-lg-down
. - Классы
.hidden-*-up
скрывают элемент, когда область просмотра находится в заданной точке останова или больше (например,.hidden-md-up
скрывает элемент на средних, больших и очень больших устройствах). - Классы
.hidden-*-down
скрывают элемент, когда область просмотра находится в данной точке останова или меньше (например,.hidden-md-down
скрывает элемент на сверхмалых, малых и средних устройствах).
Вместо того, чтобы использовать явные классы .visible-*
вы делаете элемент видимым, просто не скрывая его при этом размере экрана. Вы можете объединить один класс .hidden-*-up
с одним классом .hidden-*-down
, чтобы отображать элемент только на заданном интервале размеров экрана (например, .hidden-sm-down.hidden-xl-up
показывает элемент только на средних и больших устройствах).
Обратите внимание, что изменения точек останова в v4 означают, что вам нужно увеличить одну точку останова для достижения одинаковых результатов (например, .hidden-md
больше похожа на .hidden-lg-down
, чем на .hidden-md-down
). Новые адаптивные классы утилит не пытаются учитывать менее распространенные случаи, когда видимость элемента не может быть выражена как один непрерывный диапазон размеров видового экрана; в этом случае вам понадобится использовать пользовательский CSS.
Различные примечания для определения приоритетов
- Удалена
min--moz-device-pixel-ratio
для медиа-запросов. - Измениен
[disabled]
кнопок на:disabled
, так как IE9+ поддерживает:disabled
. Однакоfieldset[disabled]
по-прежнему необходимо, потому что нативные отключенные поля в IE11 по-прежнему неактивны.
TODO: просмотреть список вещей в v3, которые были помечены как устаревшие.
Дополнительные замечания
- Удалена поддержка стилизованных вложенных таблиц (на данный момент)