Бутстрап 3 Развал Навигации

есть ли способ увеличить точку, в которой сворачивается панель навигации bootstrap 3 (т. е. Так, что она сворачивается в выпадающее меню на портретных планшетах)?

эти два были применимы к bootstrap 2, но не сейчас!

как изменить порог коллапса navbar с помощью Twitter bootstrap-responsive?

изменить отзывчивую точку останова navbar по умолчанию

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;
    }
}

просто изменить 991px by 1199px на 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 media query и вернуть их к предыдущему значению. Затем повторно добавьте их в соответствующее время.

Я не уверен, если есть лучший способ сделать это. Перекомпиляция Bootstrap меньше для ваших нужд-лучший (самый простой) способ. В противном случае вам придется найти все медиа-запросы CSS, которые влияют на вашу навигационную панель, перезаписать их в стили по умолчанию @ ширина 768px, а затем вернуть их обратно на более высокую минимальную ширину.

перекомпиляция меньше сделает всю эту магию для вас, просто изменив переменную. Что в значительной степени является точкой LESS/SASS предварительные компиляторы. =)

(обратите внимание, я искал их все, это около 100 строк кода, что достаточно раздражает меня, чтобы отбросить идею и просто повторно скомпилировать Bootstrap для данного проекта и избежать беспорядка что-то случайно)

надеюсь, это поможет!

Ура!


самый простой способ-настроить bootstrap

находим переменную:

 @grid-float-breakpoint

который установлен в @screen-sm, вы можете изменить его в соответствии с вашими потребностями. Надеюсь, это поможет!


они управляются переменными, нет необходимости возиться в источнике. с bootstrap сначала попробуйте переменные, затем переопределяет. затем вернитесь и попробуйте переменные еще раз;)

я использовал bootstrap-sass с rails, но это то же самое с по умолчанию меньше.

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.

моя проблема заключалась в том, что панель навигации рухнула соответственно на правильной ширине, но кнопка меню не работала. Я не мог развернуть и свернуть меню.

это потому, что коллапс.в классе переопределяется !важно .шапку-развал.свернуть, и может быть решена путем добавления также " свернуть.в". Пример 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-точка останова переменной около линии 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 или использовать меньше переменных. Два общих подхода к решению этой проблемы.


nabvar рухнет на небольших устройствах. Точка коллапса определяется @grid-float-breakpoint в переменных. По умолчанию это будет до 768px. Для экранов ниже ширины экрана 768 пикселей панель навигации будет выглядеть так:

enter image description here

можно изменить @grid-float-breakpoint в переменных.меньше и перекомпилировать 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, так как я не знаком с меньшим. Вот код, который я добавил в свой пользовательский файл css(который я загружаю после загрузки.css), который позволил мне контролировать, поэтому меню всегда работало как accordion.
Примечание: я завернул весь мой navbar внутри div с классом sidebar чтобы отделить поведение, которое я хотел, чтобы оно не влияло на другие navbars на моем сайте, например, главное меню. Отрегулируйте вдоль ваших потребностей, надеюсь, это поможет.

/* 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, чтобы правильно организовать меню для всех размер экрана.

надеюсь, что это помогает.