Навигационная панель. Компоненты · Bootstrap. Версия v4.0.0
Документация и примеры для мощного и отзывчивого навигационного заголовка Bootstrap и навигационной панели. Включает поддержку брендинга, навигации и прочего, включая поддержку нашего плагина для сворачивания.
Как это работает
Вот что вам надо знать перед использованием навбара:
- Навбары требуют «обертки» из классов
.navbar
и.navbar-expand{-sm|-md|-lg|-xl}
для отзывчивости при «складывании»и классы , а также классы цветовых схем. - Навбары и их содержимое по умолчанию занимают 100% ширины. Используйте опциональные контейнеры для ограничения их горизонтальной ширины.
- Используйте наши классы спейсинга и «флекс» для контроля над пространством и выравниванием внутри навбаров.
- Навбары отзывчивы по умолчанию, но вы можете легко изменить это. Отзывчивое поведение зависит от нашего «плагина свертывания» JavaScript.
- Навбары скрыты по умолчанию при печати. Сделайте их печатаемыми, добавив класс
.d-print
в.navbar
. Смотри класс отображения. - Придайте им доступность использованием элемента
<nav>
, или, если используется менее специфический элемент – например<div>
: добавьтеrole="navigation"
в каждый навбар для придания ему большей доступности для пользователей вспомогательных технологий.
Дальше вы увидите примеры и список поддерживаемых под-компонентов.
Поддерживаемые типы содержимого
В навбарах присутствуют встроенная поддержка многих суб-компонентов. Выбирайте нужный:
.navbar-brand
для названия вашей компании, продукта или имени проекта..navbar-nav
для навигации полной высоты (включая выпадающие элементы)..navbar-toggler
для использования с нашим JS-«плагином свертывания» и других изменяющихся состояний навигации..form-inline
для любых органов контроля форм и действий с ними..navbar-text
для добавления вертикально центрированных строк текста..collapse.navbar-collapse
для группирования и скрытия содержимого навбара на определенном брейкпойнте родителя.
Вот пример всех суб-компонентов, которые включены в отзывчивый светлый навбар с автоматическим сворачиванием на брейкпойнте lg
(большой).
<nav> <a href="#">Navbar</a> <button type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> <div> <ul> <li> <a href="#">Home <span>(current)</span></a> </li> <li> <a href="#">Link</a> </li> <li> <a href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown </a> <div aria-labelledby="navbarDropdown"> <a href="#">Action</a> <a href="#">Another action</a> <div></div> <a href="#">Something else here</a> </div> </li> <li> <a href="#">Disabled</a> </li> </ul> <form> <input type="search" placeholder="Search" aria-label="Search"> <button type="submit">Search</button> </form> </div> </nav>
В этом примере использованы классы цвета bg-light
и спейсинга my-2
, my-lg-0
, mr-sm-0
, my-sm-0
.
Бренд
.navbar-brand
можно применять к большинству элементов, но лучше всего – к ссылке, т.к. некоторые элементы могут потребовать классы или стили.
<!-- As a link --> <nav> <a href="#">Navbar</a> </nav> <!-- As a heading --> <nav> <span>Navbar</span> </nav>
Добавление изображений к .navbar-brand
почти всегда потребует дополнительной стилизации CSS и классов.
<!-- Just an image --> <nav> <a href="#"> <img src="/assets/brand/bootstrap-solid.svg" alt=""> </a> </nav>
<!-- Image and text --> <nav> <a href="#"> <img src="/assets/brand/bootstrap-solid.svg" alt=""> Bootstrap </a> </nav>
Навбар
Ссылки в навигации навбара сделаны на параметрах класса . nav
, с их собственными классами-модификаторами; и требуют использования классов тогглера для правильного «отзывчивого» поведения. Навигация в навбарах также займет максимально возможное количество горизонтального места, для правильного выравнивания элементов навбара.
Активные состояния – с классом .active
– нужны для индикации возможности применения текущей страницы напрямую к
или их непосредственному «родителю» .nav-item
.
<nav> <a href="#">Navbar</a> <button type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> <div> <ul> <li> <a href="#">Home <span>(current)</span></a> </li> <li> <a href="#">Features</a> </li> <li> <a href="#">Pricing</a> </li> <li> <a href="#">Disabled</a> </li> </ul> </div> </nav>
И т. к. мы используем классы в наших навбарах, вы можете избегать «списочного» подхода к разметке, если вам надо.
<nav> <a href="#">Navbar</a> <button type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> <div> <div> <a href="#">Home <span>(current)</span></a> <a href="#">Features</a> <a href="#">Pricing</a> <a href="#">Disabled</a> </div> </div> </nav>
Выпадающие меню требуют оборачивающего элемента для позиционирования, так что удостоверьтесь в использовании раздельных и вложенных элементов для .nav-item
и .nav-link
, как в примере ниже.
<nav> <a href="#">Navbar</a> <button type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> <div> <ul> <li> <a href="#">Home <span>(current)</span></a> </li> <li> <a href="#">Features</a> </li> <li> <a href="#">Pricing</a> </li> <li> <a href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown link </a> <div aria-labelledby="navbarDropdownMenuLink"> <a href="#">Action</a> <a href="#">Another action</a> <a href="#">Something else here</a> </div> </li> </ul> </div> </nav>
Формы
Размещайте внутри навбара различные элементы контроля форм и компоненты, добавив в них класс .
.
<nav> <form> <input type="search" placeholder="Search" aria-label="Search"> <button type="submit">Search</button> </form> </nav>
Выравнивайте содержимое ваших строчных форм классами-утилитами, как необходимо.
<nav> <a>Navbar</a> <form> <input type="search" placeholder="Search" aria-label="Search"> <button type="submit">Search</button> </form> </nav>
Работают и формы ввода, также:
<nav> <form> <div> <div> <span>@</span> </div> <input type="text" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1"> </div> </form> </nav>
Разные кнопки поддерживаются как часть этих форм в навбарах. Это также хорошее напоминание о том, что утилиты вертикального выравнивания можно использовать для выравнивания элементов различных размеров.
<nav> <form> <button type="button">Main button</button> <button type="button">Smaller button</button> </form> </nav>
Текст
Благодаря классу .navbar-text
навбары могут содержать «крупицы» текста. Этот класс придает строкам текста вертикальное выравнивание и горизонтальный спейсинг.
<nav> <span> Navbar text with an inline element </span> </nav>
Смешивайте и добивайтесь необходимого соответствия с другими компонентами и утилитами, как вам надо.
<nav> <a href="#">Navbar w/ text</a> <button type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> <div> <ul> <li> <a href="#">Home <span>(current)</span></a> </li> <li> <a href="#">Features</a> </li> <li> <a href="#">Pricing</a> </li> </ul> <span> Navbar text with an inline element </span> </div> </nav>
Цветовые схемы
Настройка оформления навбаров в BS4 стала столь легкой благодаря сочетанию классов оформления и утилит background-color
. Выбирайте .navbar-light
для навбара со светлым фоном, или .navbar-dark
для навбара с темным фоном. Далее настраивайте их классами .bg-*
.
<nav> <!-- Navbar content --> </nav> <nav> <!-- Navbar content --> </nav> <nav> <!-- Navbar content --> </nav>
Контейнеры
Хотя это и не требуется, вы можете обернуть навбар в .container
для центрирования навбара на странице или добавить один навбар в .container
лишь для центрирования содержимого навбара с фиксированной позицией “top”.
<div> <nav> <a href="#">Navbar</a> </nav> </div>
Когда контейнер внутри вашего навбара, его горизонтальный паддинг удаляется на брейкпойнтах, меньших чем заданный вами . navbar-expand{-sm|-md|-lg|-xl}
. Это гарантирует, что не произойдет ненужного удвоения паддинга на меньших вьюпортах, когда ваш навбар свернут.
<nav> <div> <a href="#">Navbar</a> </div> </nav>
Размещение
Используйте наши утилиты позиционирования для размещения навбаров в нестатичных позициях. Выбирайте из фиксированного наверху, внизу или «приклеивающегося» (прокручивается со страницей, пока не достигнет верха, и остается там). Фиксированные навбары используют position: fixed
, поэтому они «исключены» из нормального строения DOM и могут потребовать добавления CSS (например, padding-top
в <body>
).
Также обратите внимание, что .sticky-top
использует position: sticky
, которая не поддерживается полностью в каждом браузере.
<nav> <a href="#">Default</a> </nav>
<nav> <a href="#">Fixed top</a> </nav>
<nav> <a href="#">Fixed bottom</a> </nav>
<nav> <a href="#">Sticky top</a> </nav>
Отзывчивое поведение
Навбары могут использовать классы . navbar-toggler
, .navbar-collapse
и .navbar-expand{-sm|-md|-lg|-xl}
для изменения, когда их содержимое «схлапывается» по нажатию кнопки. В сочетании с другими классами вы можете легко выбрать, когда показать или скрыть некие элементы.
Для навбаров, которые не скрываются, добавьте в навбар класс .navbar-expand
. Для навбаров, которые всегда скрываются, не добавляйте его.
Тогглер (кнопка разворачивания меню)
Тогглеры по умолчанию выровнены по левому краю, но если они идут за дочерними элементами как .navbar-brand
– они автоматически выровняются по правому краю. Зеркальное отражение вашей разметки переставит и тогглер.
Без показанного элемента класса .navbar-brand
, на самых маленьких брейкпойнтах:
<nav> <button type="button" data-toggle="collapse" data-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> <div> <a href="#">Hidden brand</a> <ul> <li> <a href="#">Home <span>(current)</span></a> </li> <li> <a href="#">Link</a> </li> <li> <a href="#">Disabled</a> </li> </ul> <form> <input type="search" placeholder="Search" aria-label="Search"> <button type="submit">Search</button> </form> </div> </nav>
С «брендом», показанный слева, и тогглером — справа:
<nav> <a href="#">Navbar</a> <button type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> <div> <ul> <li> <a href="#">Home <span>(current)</span></a> </li> <li> <a href="#">Link</a> </li> <li> <a href="#">Disabled</a> </li> </ul> <form> <input type="search" placeholder="Search"> <button type="submit">Search</button> </form> </div> </nav>
С тогглером слева и «брендом» справа:
<nav> <button type="button" data-toggle="collapse" data-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> <a href="#">Navbar</a> <div> <ul> <li> <a href="#">Home <span>(current)</span></a> </li> <li> <a href="#">Link</a> </li> <li> <a href="#">Disabled</a> </li> </ul> <form> <input type="search" placeholder="Search" aria-label="Search"> <button type="submit">Search</button> </form> </div> </nav>
Внешнее содержимое
Иногда надо использовать плагин коллапса для запуска скрытого содержимого на странице. Т.к. наш плагин работает через id
и data-target
– вам будет легко это сделать!
Collapsed content
Toggleable via the navbar brand.<div> <div> <div> <h5>Collapsed content</h5> <span>Toggleable via the navbar brand.</span> </div> </div> <nav> <button type="button" data-toggle="collapse" data-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation"> <span></span> </button> </nav> </div>
Браузеры и устройства · Bootstrap
Узнайте о браузерах и устройствах, от современных до старых, которые поддерживаются Bootstrap, включая известные особенности и ошибки для каждого из них.
Поддерживаемые браузеры
Bootstrap поддерживает последние стабильные версии всех основных браузеров и платформ. В Windows мы поддерживаем Internet Explorer 10-11 / Microsoft Edge .
Альтернативные браузеры, использующие последнюю версию WebKit, Blink или Gecko, напрямую или через API веб-представления платформы, явно не поддерживаются. Однако Bootstrap должен (в большинстве случаев) корректно отображаться и работать и в этих браузерах. Более подробная информация о поддержке представлена ниже.
Список поддерживаемых нами браузеров и их версий можно найти в нашем файле .browserslistrc
:
# https://github.com/browserslist/browserslist#readme >= 1% последняя 1 основная версия не мертв Хром >= 45 Фаерфокс >= 38 Край >= 12 Проводник >= 10 iOS >= 9 Сафари >= 9 Андроид >= 4.4 Опера >= 30
Мы используем Autoprefixer для обработки предполагаемой поддержки браузера с помощью префиксов CSS, который использует Browserslist для управления этими версиями браузера. Обратитесь к их документации, чтобы узнать, как интегрировать эти инструменты в ваши проекты.
Мобильные устройства
Вообще говоря, Bootstrap поддерживает последние версии браузеров по умолчанию для всех основных платформ. Обратите внимание, что прокси-браузеры (такие как Opera Mini, режим Turbo Opera Mobile, UC Browser Mini, Amazon Silk) не поддерживаются.
Хром | Фаерфокс | Сафари | Android-браузер и WebView | Microsoft Edge | |
---|---|---|---|---|---|
Андроид | Поддерживается | Поддерживается | Н/Д | Android v5.0+ поддерживается | Поддерживается |
iOS | Поддерживается | Поддерживается | Поддерживается | Н/Д | Поддерживается |
Windows 10 Mobile | Н/Д | Н/Д | Н/Д | Н/Д | Поддерживается |
Настольные браузеры
Точно так же поддерживаются последние версии большинства настольных браузеров.
Хром | Фаерфокс | Internet Explorer | Microsoft Edge | Опера | Сафари | |
---|---|---|---|---|---|---|
Mac | Поддерживается | Поддерживается | Н/Д | Н/Д | Поддерживается | Поддерживается |
Окна | Поддерживается | Поддерживается | Поддерживается, IE10+ | Поддерживается | Поддерживается | Не поддерживается |
Для Firefox, в дополнение к последней обычной стабильной версии, мы также поддерживаем последнюю версию Firefox с расширенной поддержкой (ESR).
Неофициально Bootstrap должен выглядеть и вести себя достаточно хорошо в Chromium и Chrome для Linux, Firefox для Linux и Internet Explorer 9, хотя официально они не поддерживаются.
Список некоторых ошибок браузера, с которыми приходится бороться Bootstrap, см. на нашей Стене ошибок браузера.
Internet Explorer
поддерживается Internet Explorer 10+; IE9 и ниже нет. Имейте в виду, что некоторые свойства CSS3 и элементы HTML5 не полностью поддерживаются в IE10 или требуют префиксных свойств для полной функциональности. Посетите страницу Могу ли я использовать… для получения подробной информации о поддержке браузерами функций CSS3 и HTML5. Если вам требуется поддержка IE8-9, используйте Bootstrap 3.
Модальные окна и раскрывающиеся списки на мобильных устройствах
Переполнение и прокрутка
Поддержка переполнения : скрыто;
в элементе
довольно ограничено в iOS и Android. С этой целью, когда вы прокручиваете верхнюю или нижнюю часть модального окна в браузерах любого из этих устройств, содержимое
начнет прокручиваться. См. ошибку Chrome № 175502 (исправлена в Chrome v40) и ошибку WebKit № 153852.
Текстовые поля iOS и прокрутка
Начиная с iOS 9.2, когда открыто модальное окно, если начальное касание жеста прокрутки находится в пределах текстового
или , содержимое
под модальным будет прокручиваться вместо самого модального окна. См. ошибку WebKit № 153856.
Выпадающие списки панели навигации
Элемент .dropdown-backdrop
не используется на iOS в навигации из-за сложности z-индексации. Таким образом, чтобы закрыть раскрывающиеся списки на панелях навигации, вы должны напрямую щелкнуть элемент раскрывающегося списка (или любой другой элемент, который вызовет событие щелчка в iOS).
Масштабирование браузера
Масштабирование страницы неизбежно приводит к появлению артефактов рендеринга в некоторых компонентах, как в Bootstrap, так и в остальной части Интернета. В зависимости от проблемы мы можем ее исправить (сначала найдите, а затем, если нужно, откройте проблему). Тем не менее, мы склонны игнорировать их, поскольку они часто не имеют прямого решения, кроме хакерских обходных путей.
Sticky
: наведение
/ : фокус
на iOS
Хотя :hover
невозможно на большинстве сенсорных устройств, iOS эмулирует это поведение, что приводит к «липким» стилям наведения, которые сохраняются после касания одного элемента. Эти стили наведения удаляются только тогда, когда пользователи касаются другого элемента. Такое поведение считается в значительной степени нежелательным и, по-видимому, не является проблемой на устройствах Android или Windows.
Во все наши альфа- и бета-версии v4 мы включили неполный и закомментированный код для выбора прокладки медиа-запроса, которая отключила бы стили наведения в браузерах сенсорных устройств, которые эмулируют наведение. Эта работа никогда не была полностью завершена или включена, но, чтобы избежать полной поломки, мы решили отказаться от этой прокладки и оставить примеси в качестве ярлыков для псевдоклассов.
Печать
Даже в некоторых современных браузерах печать может быть причудливой.
Начиная с Safari v8.0, использование фиксированной ширины .container
может привести к тому, что Safari будет использовать необычно маленький размер шрифта при печати. Дополнительные сведения см. в выпуске № 14868 и ошибке WebKit № 138192. Одним из возможных обходных путей является следующий CSS:
@media печать { .контейнер { ширина: авто; } }
Стандартный браузер Android
Из коробки Android 4.1 (и, по-видимому, даже некоторые более новые версии) поставляются с приложением «Браузер» в качестве веб-браузера по умолчанию (в отличие от Chrome). К сожалению, в браузерном приложении много ошибок и несоответствий с CSS в целом.
На элементах
стандартный браузер Android не будет отображать боковые элементы управления, если применяется радиус границы
и/или граница
. (Подробности см. в этом вопросе StackOverflow.) Используйте приведенный ниже фрагмент кода, чтобы удалить оскорбительный CSS и отобразить
как нестилизованный элемент в стандартном браузере Android. Обнюхивание пользовательского агента позволяет избежать помех для браузеров Chrome, Safari и Mozilla.
<скрипт> $(функция () { var nua = navigator.userAgent var isAndroid = (nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android') > -1 && nua.indexOf('AppleWebKit') > -1 && nua.indexOf('Chrome') === -1) если (Android) { $('select.form-control').removeClass('form-control').css('width', '100%') } }) скрипт>
Хотите увидеть пример? Посмотрите эту демонстрацию JS Bin.
Валидаторы
Чтобы обеспечить наилучшие возможности для старых браузеров с ошибками, Bootstrap использует хаки браузера CSS в нескольких местах, чтобы нацелить специальный CSS на определенные версии браузера, чтобы обойти ошибки в самих браузерах. Эти хаки по понятным причинам заставляют валидаторов CSS жаловаться на то, что они недействительны. В нескольких местах мы также используем передовые функции CSS, которые еще не полностью стандартизированы, но они используются исключительно для прогрессивного улучшения.
Эти предупреждения проверки не имеют значения на практике, так как нехакерская часть нашего CSS полностью проверяется, а хакерская часть не мешает правильному функционированию нехакерской части, поэтому мы намеренно игнорируем эти конкретные предупреждения.
Наши HTML-документы также содержат несколько тривиальных и несущественных предупреждений о проверке HTML из-за того, что мы включили обходной путь для определенной ошибки Firefox.
Подход · Начальная загрузка
Узнайте о руководящих принципах, стратегиях и методах, используемых для создания и поддержки Bootstrap, чтобы вам было легче настраивать и расширять его самостоятельно.
В то время как страницы начала работы представляют собой вводный тур по проекту и его предложениям, этот документ посвящен почему мы делаем то, что делаем в Bootstrap. В нем объясняется наша философия построения в Интернете, чтобы другие могли учиться у нас, вносить свой вклад вместе с нами и помогать нам совершенствоваться.
Увидели что-то, что звучит не так или, возможно, можно было бы сделать лучше? Откройте вопрос — мы хотели бы обсудить его с вами.
Резюме
Мы углубимся в каждый из них подробнее, но на более высоком уровне вот что определяет наш подход.
- Компоненты должны быть адаптивными и ориентированными на мобильные устройства
- Компоненты должны создаваться с использованием базового класса и расширяться с помощью классов-модификаторов
- Состояния компонентов должны соответствовать общей шкале z-индекса
- По возможности предпочтите реализацию HTML и CSS JavaScript
- По возможности используйте утилиты вместо пользовательских стилей
- По возможности избегайте применения строгих требований к HTML (дочерние селекторы)
Ответный
Адаптивные стили Bootstrap созданы, чтобы быть адаптивными, подход, который часто называют mobile-first . Мы используем этот термин в наших документах и в целом согласны с ним, но иногда он может быть слишком широким. Хотя не каждый компонент должен быть полностью адаптивным в Bootstrap, этот адаптивный подход направлен на сокращение переопределений CSS, заставляя вас добавлять стили по мере увеличения области просмотра.
В Bootstrap вы увидите это наиболее четко в наших медиа-запросах. В большинстве случаев мы используем min-width
запросов, которые начинают применяться в определенной точке останова и проходят через более высокие точки останова. Например, .d-none
применяется от min-width: 0
до бесконечности. С другой стороны, .d-md-none
применяется, начиная со средней точки останова и выше.
Иногда мы будем использовать max-width
, когда этого требует внутренняя сложность компонента. Иногда эти переопределения функционально и ментально более ясны для реализации и поддержки, чем переписывание основных функций наших компонентов. Мы стремимся ограничить этот подход, но будем использовать его время от времени.
Классы
Помимо нашей Reboot, кросс-браузерной таблицы стилей нормализации, все наши стили нацелены на использование классов в качестве селекторов. Это означает, что нужно избегать селекторов типов (например, input[type="text"]
) и посторонних родительских классов (например, .parent .child
), которые делают стили слишком специфичными, чтобы их можно было легко переопределить.
Таким образом, компоненты должны создаваться с базовым классом, содержащим общие, не подлежащие переопределению пары «свойство-значение». Например, .btn
и .btn-primary
. Мы используем .btn
для всех распространенных стилей, таких как display
, padding
и border-width
. Затем мы используем модификаторы, такие как .btn-primary
, чтобы добавить цвет, цвет фона, цвет границы и т. д.
Классы модификаторов следует использовать только в том случае, если необходимо изменить несколько свойств или значений в нескольких вариантах. Модификаторы не всегда необходимы, поэтому убедитесь, что вы действительно сохраняете строки кода и предотвращаете ненужные переопределения при их создании. Хорошими примерами модификаторов являются наши классы цвета темы и варианты размера.
шкалы z-индекса
В Bootstrap есть две шкалы z-index
— элементы внутри компонента и компоненты наложения.
Составные элементы
- Некоторые компоненты в Bootstrap построены с перекрывающимися элементами для предотвращения двойных границ без изменения свойства
border
. Например, группы кнопок, группы ввода и нумерация страниц. - Эти компоненты имеют стандартную шкалу
z-index
от0 от
до 9.0015 3 . -
0
по умолчанию (начальный),1
это:hover
,2
это:active
/. active
, и,3 900 16 это
: фокус
. - Этот подход соответствует нашим ожиданиям наивысшего приоритета пользователя. Если элемент находится в фокусе, он находится в поле зрения и привлекает внимание пользователя. Активные элементы занимают второе место, потому что они указывают состояние. Hover занимает третье место, потому что указывает на намерение пользователя, но почти все, что можно зависнуть.
Компоненты накладки
Bootstrap включает в себя несколько компонентов, которые функционируют как своего рода наложение. Сюда входят, в порядке возрастания z-index
, выпадающие списки, фиксированные и липкие панели навигации, модальные окна, всплывающие подсказки и всплывающие окна. Эти компоненты имеют собственную шкалу z-index
, которая начинается с 1000
. Этот начальный номер является случайным и служит небольшим буфером между нашими стилями и пользовательскими стилями вашего проекта.
Каждый компонент наложения немного увеличивает свое значение z-index
таким образом, чтобы общие принципы пользовательского интерфейса позволяли сфокусированным или наведенным пользователем элементам всегда оставаться в поле зрения. Например, модальное окно блокирует документ (например, вы не можете выполнять какие-либо другие действия, кроме действия модального окна), поэтому мы помещаем его над нашими навигационными панелями.
Узнайте больше об этом на нашей странице макета z-index
.
HTML и CSS поверх JS
Когда это возможно, мы предпочитаем писать HTML и CSS, а не JavaScript. В целом, HTML и CSS более распространены и доступны большему количеству людей с разным уровнем опыта. HTML и CSS также быстрее работают в вашем браузере, чем JavaScript, и ваш браузер, как правило, предоставляет вам множество функциональных возможностей.
Этот принцип является нашим первоклассным JavaScript API атрибутов данных
. Вам не нужно писать почти никакого JavaScript, чтобы использовать наши плагины JavaScript; вместо этого напишите HTML. Подробнее об этом читайте на нашей странице обзора JavaScript.
Наконец, наши стили основаны на фундаментальном поведении обычных веб-элементов. По возможности мы предпочитаем использовать то, что предоставляет браузер. Например, вы можете поместить класс .btn
почти к любому элементу, но большинство элементов не предоставляют никакого семантического значения или функциональности браузера. Поэтому вместо этого мы используем <кнопка>
с и
с.
То же самое касается и более сложных компонентов. В то время как мы могли бы написать наш собственный плагин проверки формы, чтобы добавлять классы к родительскому элементу на основе состояния ввода, тем самым позволяя нам стилизовать текст, например красный, мы предпочитаем использовать псевдоэлементы :valid
/ :invalid
каждый браузер предоставляет нам.