Bootstrap 3 Navbar Свернуть
есть ли способ увеличить точку, в которой Bootstrap 3 navbar рушится (т. е. Так, что он рушится в выпадающее меню на портретных планшетах)?
эти два были применимы к bootstrap 2, но не сейчас!
как изменить порог коллапса navbar с помощью Twitter bootstrap-responsive?
12 ответов:
у меня была такая же проблема сегодня.
Bootstrap 4
это родная функциональность:https://getbootstrap.com/docs/4.0/components/navbar/#responsive-behaviors
вы должны использовать
.navbar-expand{-sm|-md|-lg|-xl}классы:<nav class="navbar navbar-expand-md navbar-light bg-light">Bootstrap 3
@media (max-width: 991px) { .navbar-header { float: none; } .navbar-toggle { display: block; } .navbar-collapse { border-top: 1px solid transparent; box-shadow: inset 0 1px 0 rgba(255,255,255,0.1); } .navbar-collapse.collapse { display: none!important; } .navbar-nav { float: none!important; margin: 7.5px -15px; } .navbar-nav>li { float: none; } .navbar-nav>li>a { padding-top: 10px; padding-bottom: 10px; } .navbar-text { float: none; margin: 15px 0; } /* since 3.1.0 */ .navbar-collapse.collapse.in { display: block!important; } .collapsing { overflow: hidden!important; } }просто изменить
991pxby1199pxнаmdразмеров.
большая разница между Bootstrap 2 и Bootstrap 3 заключается в том, что Bootstrap 3 является "мобильным первым".
это означает, что стили по умолчанию предназначены для мобильных устройств, а в случае Navbars это означает, что он "свернут" по умолчанию и "расширяется", когда он достигает определенного минимального размера.
сайт Bootstrap 3 На самом деле имеет "подсказку" о том, что делать: http://getbootstrap.com/components/#navbar
настройки рушится точка
в зависимости от содержимого навигационной панели может потребоваться изменить точку, в которой навигационная панель переключается между свернутым и горизонтальным режимами. Настройте переменную @grid-float-breakpoint или добавьте свой собственный медиа-запрос.
если вы собираетесь повторно скомпилировать свой LESS, вы найдете отмеченную меньшую переменную в . В настоящее время он установлен на "expand"
@media (min-width: 768px)который является " маленьким экраном "(т. е. планшет) по Bootstrap 3 условия.
@grid-float-breakpoint: @screen-tablet;если вы хотите сохранить свернутый немного дольше, вы можете настроить его следующим образом:
@grid-float-breakpoint: @screen-desktop;(992px брейк-поинт)или рано затем
@grid-float-breakpoint: @screen-phone(480px точка останова)если вы хотите, чтобы он расширялся позже, а не занимался повторной компиляцией, вам придется перезаписать стили, которые применяются в
768pxмедиа-запрос и вернуть их к предыдущему значению. Затем повторно добавьте их в соответствующее время.Я не уверен, если есть лучший способ сделать это. Перекомпиляция Bootstrap меньше к вашим потребностям является лучшим (самым простым) способом. В противном случае вам придется найти все медиа-запросы CSS, которые влияют на вашу навигационную панель, перезаписать их в стили по умолчанию @ ширина 768px, а затем вернуть их обратно на более высокую минимальную ширину.
перекомпиляция LESS сделает все это волшебство для вас, просто изменив переменную. Что в значительной степени является точкой LESS/SASS предварительно компиляторы. =)
(обратите внимание, что я искал их все, это около 100 строк кода, что достаточно раздражает меня, чтобы отказаться от идеи и просто повторно скомпилировать Bootstrap для данного проекта и не испортить что-то случайно)
Я надеюсь, что помогает!
Ура!
самый простой способ-настроить bootstrap
находим переменную:
@grid-float-breakpointкоторый установлен в @screen-sm, вы можете изменить его в соответствии с вашими потребностями. Надеюсь, это поможет!
они управляются в переменных, нет необходимости возиться в источнике. с помощью bootstrap сначала попробуйте переменные, а затем переопределите. затем вернитесь и попробуйте переменные еще раз;)
я использовал bootstrap-sass с rails, но это то же самое с default LESS.
FILE: main.css.scss ------------------- // control the screen sizes $screen-xs-min: 300px; $screen-sm-min: 400px; $screen-md-min: 800px; $screen-lg-min: 1200px; // this tells which screen size to use to start breaking on // will tell navbar when to collapse $grid-float-breakpoint: $screen-md-min; // then import your bootstrap @import "bootstrap";вот именно! эта страница ссылки на переменные очень удобна:https://github.com/twbs/bootstrap/blob/master/less/variables.less
благодаря Seb33300 я получил эту работу. Однако важная часть, похоже, отсутствует. По крайней мере, в Bootstrap версии 3.1.1.
моя проблема заключалась в том, что навигационная панель рухнула соответственно на правильной ширине, но кнопка меню не работала. Я не мог развернуть и свернуть меню.
Это потому, что collapse.in класс переопределяется !это важно .шапку-развал.свернуть, и может быть решена путем добавления "collapse.in пример Seb33300 завершен ниже:
@media (max-width: 991px) { .navbar-header { float: none; } .navbar-toggle { display: block; } .navbar-collapse { border-top: 1px solid transparent; box-shadow: inset 0 1px 0 rgba(255,255,255,0.1); } .navbar-collapse.collapse { display: none!important; } .navbar-collapse.collapse.in { display: block!important; } .navbar-nav { float: none!important; margin: 7.5px -15px; } .navbar-nav>li { float: none; } .navbar-nav>li>a { padding-top: 10px; padding-bottom: 10px; } }
Я хотел поднять голос и прокомментировать ответ jmbertucci, но мне еще не доверяют элементы управления. У меня была такая же проблема, и я решил ее, как он сказал. Если вы используете Bootstrap 3.0, отредактируйте меньше переменных в переменных.менее чувствительные точки останова устанавливаются вокруг линии 200:
@screen-xs: 480px; @screen-phone: @screen-xs; // Small screen / tablet @screen-sm: 768px; @screen-tablet: @screen-sm; // Medium screen / desktop @screen-md: 992px; @screen-desktop: @screen-md; // Large screen / wide desktop @screen-lg: 1200px; @screen-lg-desktop: @screen-lg; // So media queries don't overlap when required, provide a maximum @screen-xs-max: (@screen-sm - 1); @screen-sm-max: (@screen-md - 1); @screen-md-max: (@screen-lg - 1);затем установите значение свернуть для навигационной панели с помощью @grid-float-breakpoint переменная примерно в строке 232. По умолчанию он установлен в @screen-tablet . Если вы хотите, вы можете использовать значение пикселя, но я предпочитаю использовать меньше переменных.
Если проблема, с которой вы сталкиваетесь, это меню разбивается на несколько строк, вы можете попробовать одно из следующих действий:
1) Попробуйте уменьшить количество пунктов меню или их длину, например, удаление пунктов меню или сокращение слов.
2) уменьшение отступов между пунктами меню, например:
.navbar .nav > li > a { padding: 10px 15px 10px; /* Change here the second value for padding-left and padding right */ }заполнение по умолчанию составляет 15px с обеих сторон (слева и справа).
Если вы предпочитаете, чтобы изменить каждого использования:
padding-left: 7px; padding-right: 8px;этот параметр также влияет на выпадающий список.
это не ответ на вопрос, но это может помочь другим, кто не хочет возиться с CSS или использовать меньше переменных. Два общих подхода к решению этой проблемы.
набвар рухнет на небольших устройствах. Точка коллапса определяется @grid-float-точкой останова в переменных. По умолчанию это будет до 768px. Для экранов с шириной экрана ниже 768 пикселей навигационная панель будет выглядеть следующим образом:
можно изменить @grid-float-точку останова в переменных.меньше и перекомпилировать Bootstrap. При этом вам также придется изменить @screen-xs-max в navbar.меньше. Вам нужно будет установить это значение для вашего нового @grid-float-точка останова -1. Смотрите также:https://github.com/twbs/bootstrap/pull/10465. это необходимо, чтобы изменить формы navbar и выпадающие списки в @grid-float-breakpoint на их мобильную версию тоже.
Я обеспокоен проблемами обслуживания и обновления в будущем от настройки Bootstrap. Я могу документировать шаги настройки сегодня и надеюсь, что человек, обновляющий Bootstrap через три года, найдет документацию и повторно применит шаги (которые могут или не могут работать в этот момент). Аргумент может быть сделан в любом случае, я полагаю, но я предпочитаю сохранять любые настройки в своем коде.
Я не совсем понимаю, как может работать подход Seb33300. Оно конечно, не работал с Bootstrap 4.0.3. Для расширения панели навигации на 1200 вместо 768 правила для обоих запросов мультимедиа должны быть переопределены, чтобы предотвратить расширение на 768 и принудительное расширение на 1200.
У меня есть более длинное меню, которое будет обернуто на iPad в портретном режиме. Следующее сохраняет меню свернутым до точки останова 1200:
@media (min-width: 768px) { .navbar-header { float: none; } .navbar-toggle { display: block; } .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { padding-right: 15px; padding-left: 15px; } .navbar-collapse.collapse { display: none !important; } .navbar-collapse.collapse.in { display: block!important; margin-top: 0px; } } @media (min-width: 1200px) { .navbar-header { float: left; } .navbar-toggle { display: none; } .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { display: block !important; } }
Я сделал способ CSS с моей установкой Bootstrap 3.0.0, так как я не так хорошо знаком с LESS. Вот код, который я добавил в свой пользовательский файл css (который я загружаю после начальной загрузки.css), который позволил мне контролировать, чтобы меню всегда работало как
accordion.
Примечание: я завернулся весьnavbarвнутри div с классомsidebarчтобы отделить поведение, которое я хотел, чтобы оно не влияло на другие навигационные панели на моем сайте, такие как главное меню. Отрегулируйте в соответствии с вашими потребностями, надеюсь, что это поможет./* Sidebar Menu Fix */ .sidebar .navbar-nav { margin: 7.5px -15px; } .sidebar .navbar-nav > li > a { padding-top: 10px; padding-bottom: 10px; line-height: 20px; } .sidebar .navbar-collapse { max-height: 500px; } .sidebar .navbar-nav .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; box-shadow: none; } .sidebar .dropdown-menu > li > a { color: #777777; } .sidebar .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .sidebar .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { color: #333333; background-color: transparent; } .sidebar .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .sidebar .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .sidebar .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { color: #555555; background-color: #e7e7e7; } .sidebar .navbar-nav { float: none; } .sidebar .navbar-nav > li { float: none; }дополнительное примечание: Я также добавил изменение в переключателе главного меню
navbar(поскольку код выше на моем сайте используется для "подменю" на стороне.я поменял:
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">в:
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-topmenu">а затем также скорректированы:
<div class="navbar-collapse collapse navbar-collapse">в:
<div class="navbar-collapse collapse navbar-collapse-topmenu">если у вас будет только один
navbarЯ думаю, вам не придется беспокоиться об этом, но это помогло мне в моей случай.
и для тех, кто хочет свернуть на ширину меньше чем стандартный 768px (разверните на ширину меньше, чем 768px), это css необходимо:
@media (min-width: 600px) { .navbar-header { float: left; } .navbar-toggle { display: none; } .navbar-collapse { border-top: 0 none; box-shadow: none; width: auto; } .navbar-collapse.collapse { display: block !important; height: auto !important; padding-bottom: 0; overflow: visible !important; } .navbar-nav { float: left !important; margin: 0; } .navbar-nav>li { float: left; } .navbar-nav>li>a { padding-top: 15px; padding-bottom: 15px; } }
Я думаю, что нашел простое решение для изменения точки останова коллапса, только через css.
Я надеюсь, что другие могут подтвердить это, так как я не проверял его тщательно, и я не уверен, есть ли побочные эффекты к этому решению.
вы должны изменить значения запроса мультимедиа для следующих определений классов:
@media (min-width: BREAKPOINT px ){ .navbar-toggle{display:none} } @media (min-width: BREAKPOINT px){ .navbar-collapse{ width:auto; border-top:0;box-shadow:none } .navbar-collapse.collapse{ display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important } .navbar-collapse.in{ overflow-y:visible } .navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{ padding-left:0;padding-right:0 } }Это то, что работало для меня в моем текущем проекте, но мне все еще нужно изменить некоторые определения css, чтобы правильно организовать меню для всех размер экрана.
надеюсь, что это помогает.

Comments