Змініть точку розриву нападного барабану завантаження без використання МЕНШЕ


205

В даний час, коли ширина браузера опускається нижче 768 пікселів, навігація переходить у режим згорнутого. Я хочу змінити цю ширину на 1000px, тому, коли браузер нижче 1000px, навбар переходить у режим згорнутого. Я хочу це зробити, не використовуючи менше, я використовую стилус, а не менше.

Моє питання те саме, що і в цьому питанні: Bootstrap 3 Navbar Collapse

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

Дякую!

Відповіді:


50

Для цього вам потрібно написати конкретний медіа-запит. З вашого запитання нижче 768px навибарна панель зруйнується, тому застосуйте її вище 768px і нижче 1000px, просто так:

@media (min-width: 768px) and (max-width: 1000px) {
   .collapse {
       display: none !important;
   }
}

Це дозволить приховати згортання навибара до появи за замовчуванням блоку завантаження. По мірі того, як клас згортання буде перевернуто, внутрішні активи всередині кола згортання будуть автоматично приховані, як і розумні, вам доведеться встановити css так, як вам потрібно.


В даний час навибар руйнується, коли ширина нижче 768 пікселів. Але я хочу, щоб навбар звалився, коли ширина нижче 1000 пікселів. Для цього вам не потрібно показувати .collapse між 768 і 1000?
Nearpoint

так, collapseклас важливий для екрану мобільного пристрою, так що, якщо ширина буде нижче 768 пікселів, навбар буде такою display:none, тому необхідна дія буде застосована всередині позначки 768 та 1000 ...
SaurabhLP

64
це не працює на Bootstrap 3, оскільки є ще одне правило, navbar-collapse.collapseяке має display: block !important. Якщо вимкнути, що призведе до того, що кнопка згортання не з’явиться… тому я гадаю, що це багато класів, які потрібно переосмислити, а не лишеcollapse
Даніеле Річчі,

42
Так, купа класів Bootstrap повинні бути перекриті в запиті користувача медіа: bootply.com/120604
Зим

1
Ха-ха, хто, чортве, побудував завантажувальну машину? Не думали, що нам потрібно буде змінити цю маленьку деталь?
Мн

400

ОНОВЛЕННЯ 2018 року

Завантаження 4

У Bootstrap 4 змінити точку розриву навбара простіше, використовуючи navbar-expand-*класи:

<nav class="navbar fixed-top navbar-expand-sm">..</nav>

  • navbar-expand-sm = мобільне меню на екранах xs <576px
  • navbar-expand-md = мобільне меню на sm-екранах <768px
  • navbar-expand-lg = мобільне меню на екранах md <992px
  • navbar-expand-xl = мобільне меню на lg-екранах <1200px
  • navbar-expand = ніколи не користуйтеся мобільним меню
  • (no expand class) = завжди використовуйте мобільне меню

Якщо ви виключаєте, navbar-expand-*мобільне меню буде використовуватися на allширині. Ось демонстрація всіх 6 станів навібару: Приклад завантаження 4 Navbar

Ви також можете використовувати спеціальну точку розриву (??? px), додавши трохи CSS. Наприклад, ось 1300 пікселів.

@media (min-width: 1300px){
    .navbar-expand-custom {
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-start;
    }
    .navbar-expand-custom .navbar-nav {
        flex-direction: row;
    }
    .navbar-expand-custom .navbar-nav .nav-link {
        padding-right: .5rem;
        padding-left: .5rem;
    }
    .navbar-expand-custom .navbar-collapse {
        display: flex!important;
    }
    .navbar-expand-custom .navbar-toggler {
        display: none;
    }
}

Бутстрап 4 користувальницьких Navbar Точка зупину
бутстрап 4 Navbar Breakpoint Приклади


Завантаження 3

Для Bootstrap 3.3.x, ось робочий CSS для заміни точки розриву навбара. Перейдіть 991pxдо розміру пікселя точки, в якій ви хочете, щоб навибар звалився ...

@media (max-width: 991px) {
  .navbar-header {
      float: none;
  }
  .navbar-left,.navbar-right {
      float: none !important;
  }
  .navbar-toggle {
      display: block;
  }
  .navbar-collapse {
      border-top: 1px solid transparent;
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
  }
  .navbar-fixed-top {
      top: 0;
      border-width: 0 0 1px;
  }
  .navbar-collapse.collapse {
      display: none!important;
  }
  .navbar-nav {
      float: none!important;
      margin-top: 7.5px;
  }
  .navbar-nav>li {
      float: none;
  }
  .navbar-nav>li>a {
      padding-top: 10px;
      padding-bottom: 10px;
  }
  .collapse.in{
      display:block !important;
  }
}

Приклад роботи для 991px: http://www.bootply.com/j7XJuaE5v6
Приклад роботи для 1200px: https://www.codeply.com/go/VsYaOLzfb4 (з формою пошуку)

Примітка. Вищезазначене працює для будь-якого розміру понад 768 пікселів . Якщо вам потрібно змінити його менше ніж на 768px, тут є приклад менше 768px .



Спробуйте цей перший візит: [посилання] ( getbootstrap.com/customize Знайти: 'Менше змінних' -> 'Медіа-запити точки проходу' Змінити: @ значення-lg-значення від 1200px до 1920px Знайдіть: «Grid system» -> @ grid-float -breakpoint Зміна: @ screen-sm-min to @ screen-lg Прокрутіть до кінця сторінки. Клацніть на "Compile and Download" Витягнути та використати ці завантажені файли
rpalzona

6
Цей вище код працює, коли я встановлюю значення, що перевищує 768px, однак мені потрібно досягти зворотного ... Я хочу лише, щоб він згорнувся, наприклад, на 400px, але коли я встановив це значення, завантажувальний інструмент, здається, набирає оригінальний 768 - Будь-які ідеї? Спасибі
Кріс Річардс

6
Хоча ця відповідь працює як чарівність, але вона псується зі спадним меню , можливо, вам потрібно вдосконалити відповідь.
Абхішек Пандей

2
@AbhishekPandey Я вважаю корисною цю відповідь (частина щодо
спадання

1
Дякую. На відміну від "рішення" з галочкою поруч, ваш код насправді працює.
Майкл С. Міллер

46

у bootstrap3 змініть цю змінну @ grid-float-breakpoint на потрібну. Значення за замовчуванням - 768px


17
Чи можете ви розмістити приклад, будь ласка?
етмпсепсія

2
Майте на увазі, що якщо ви використовуєте sass і не хочете замінювати код постачальника (не слід), перед файлами sass для завантаження ви повинні включити файл, що містить змінну, зі своїм власним значенням. Причина в тому, що всі змінні Bootstrap встановлені за замовчуванням! Значення, тому нам потрібно перекрити ці значення, спочатку імпортуючи наші змінні.
Макіс К.

Будь ласка, додайте приклад того, як це зробити ... Я новачок у завантажувальній програмі, а grep виявляє 0 екземплярів цієї змінної у моєму проекті.
Метт Кларк

1
@MattClark @grid-float-breakpointвизначено на компіляторі: getbootstrap.com/customize - значення за замовчуванням є, @screen-sm-minале ви можете змінити його 1234px.
rybo111

24

Нарешті розробив, як змінити ширину згортання, познайомившись з "@ grid-float-breakpoint" на http://getbootstrap.com/customize/ .

Перейдіть до рядка 2923 у bootstrap.css (також хв. Версія) та перейдіть @media screen and (min-width: 768px) {до@media screen and (min-width: 1000px) {

Таким чином, код виявиться таким:

@media screen and (min-width: 1000px) {
  .navbar-brand {
    float: left;
    margin-right: 5px;
    margin-left: -15px;
  }
  .navbar-nav {
    float: left;
    margin-top: 0;
    margin-bottom: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    border-radius: 0;
  }
  .navbar-nav.pull-right {
    float: right;
    width: auto;
  }
  .navbar-toggle {
    position: relative;
    top: auto;
    left: auto;
    display: none;
  }
  .nav-collapse.collapse {
    display: block !important;
    height: auto !important;
    overflow: visible !important;
  }
}

Зверніть увагу, що номер рядка, який ви цитуєте,
henrywright

1
Просто змінив @grid-float-breakpointмої responsive.lessтвори для мене!
cvng

6
Вам слід перекрити це в іншому файлі CSS замість того, щоб безпосередньо змінювати файли CSS для завантаження.
Іванка Тодорова

1
Перший візит: [посилання] ( getbootstrap.com/customize Знайти: 'Менше змінних' -> 'Медіа-запити точки проходу "Змінити: @ значення-lg-значення від 1200px до 1920px Знайдіть:" Grid system "-> @ grid-float-breakpoint Змінення: @ screen-sm-min на @ screen-lg Прокрутіть до кінця сторінки. Клацніть на «Скомпілювати та завантажити» Витягнути та використати ці завантажені файли
rpalzona

13

Я просто зробив це успішно, використовуючи наступний код CSS.

@media(max-width:1000px)  {

    .navbar-collapse.collapse {
        display: none !important;
    }

    .navbar-collapse {
        overflow-x: visible !important;
    }

    .navbar-collapse.in {
      overflow-y: auto !important;
    }

    .collapse.in {
      display: block !important;
    }

}

2
Він не показує згорнуту кнопку меню, коли ширина становить від 768 до 1000 пікселів.
майстриня

4
@craftsman: Для кнопки використовуйте це: .navbar-toggle {display: block! важливо; } .navbar-header {ширина: 100%; висота: 60px; }
Aniket Suryavanshi

3
досі не відображається вміст всередині меню гамбургерів
behzad

13

У Bootstrap 3 .less вихідного коду , є змінна , певна в variables.lessназивається , @grid-float-breakpointяка має наступний корисний коментар:

//**Point at which the navbar becomes uncollapsed
@grid-float-breakpoint: @screen-sm-min;

Значення відповідності @grid-float-breakpoint-maxвстановлено на мінус 1 піксель:

//**Point at which the navbar begins collapsing
@grid-float-breakpoint-max: (@grid-float-breakpoint-max - 1);

Рішення:

Тож просто встановіть @grid-float-breakpointзамість цього значення 1000px та перебудуйте bootstrap.lessна bootstrap.css:

напр

@grid-float-breakpoint: 1000px;

Як перебудувати? Я спробував цей командний рядок: $ lessc bootstrap.less bootstrap.cssале нічого не сталося
AnthonyR

@AnthonyRn: Я поняття не маю, що таке налаштування вашого проекту. Я просто оновив джерело Bootstrap LESS у моєму проекті VS 2013, і він відновився на збереження. можливо, вам слід задати нове запитання?
Пройшов кодування

Мою проблему було вирішено за допомогою інструмента онлайн-налаштування Bootstrap тут getbootstrap.com/customize Дякую за рішення!
AnthonyR

1
Я думаю, що це має бути прийнятою відповіддю, оскільки він використовує власні методи Bootstraps для визначення точки перерви. Як приклад, я зміг просте «відновити» завантажувальний засіб і отримати бажаний результат, встановивши цю змінну на те, що мені потрібно, щоб стати точкою перерви.
Серж Меліс

@AnthonyR Для відновлення ви використовуєте команду grunt distgrunt, яка повторно створить каталог dist. Ви запустите цю команду з каталогу, в якому є ваш gruntfile.js. Довідка: getbootstrap.com/getting-started/#grunt
Радіація

11

Шлях Sass зміни змінних завантажувальної програми фактично задокументований на сторінці bootstrap-sass github.

Просто переосмисліть змінні, перш ніж @import bootstrap:

$grid-float-breakpoint: 1000px;

@import 'bootstrap';

7

Окрім @Skely відповіді, щоб зробити спадні меню всередині роботи панелі навігації, також додайте їхні класи, які слід переосмислити. Нижче наведено кінцевий код:

    @media (min-width: 768px) and (max-width: 991px) {
        .navbar-nav .open .dropdown-menu {
            position: static;
            float: none;
            width: auto;
            margin-top: 0;
            background-color: transparent;
            border: 0;
            -webkit-box-shadow: none;
            box-shadow: none;
        }
        .navbar-nav .open .dropdown-menu > li > a {
            line-height: 20px;
        }
        .navbar-nav .open .dropdown-menu > li > a,
        .navbar-nav .open .dropdown-menu .dropdown-header {
            padding: 5px 15px 5px 25px;
        }
        .dropdown-menu > li > a {
            display: block;
            padding: 3px 20px;
            clear: both;
            font-weight: normal;
            line-height: 1.42857143;
            color: #333;
            white-space: nowrap;
        }
        .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;*/
            margin: 7.5px 50px 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;
        }
    }

демо-код


4

У bootstrap v4 навігацію можна рано чи пізно згортати за допомогою різних класів css

наприклад:

  • навбар-перемикач-см
  • navbar-toggleable-md
  • navbar-toggleable-lg

За допомогою кнопки для навігації:

  • приховано-sm-up
  • приховано-md-up
  • приховано-lg-up

У поточній альфі, здається navbar-toggleable-sm, xsйдеться лише про мене, і ніколи не змінюється. Не могли б я щось робити не так. Дякую!
nerdwaller

@nerdwaller схоже, що ти маєш рацію, зробив правки від xs до sm.
Уїтніленд

3

Для Bootstrap 3.3 це єдиний необхідний код:

@media (min-width: 768px) and (max-width: 1000px) {
   .navbar-collapse.collapse {
       display: none !important;
   }
   .navbar-toggle{
        display: block !important;
   }
   .navbar-header{
        float: none;
   }
}

Не працює повністю. Пункти меню, які вона відображає, не вертикальні, а горизонтальні.
Воломіке

3

Це працювало для мене Bootstrap3

@media (min-width: 768px) {
    .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;
      }
}

Знайшов час, щоб розібратися у цих двох:

.navbar-collapse.collapse {
   display: none!important;
}
.navbar-collapse.collapse.in {
   display: block!important;
}

Це працювало для мене. Єдиний виняток - мінімальна ширина пікселя повинна бути 1000 пікселів у вашому зразку вище.
Саша

2

Вашим найкращим вибором буде використання порту CSS-процесора, який ви використовуєте.

Я великий фанат SASS, тому зараз використовую https://github.com/thomas-mcdonald/bootstrap-sass

Схоже, тут є вилка для Stylus: https://github.com/Acquisio/bootstrap-stylus

В іншому випадку пошук і заміна - ваш найкращий друг прямо у версії css ...


Отже, для параметра пошуку та заміни, чи означає це редагування медіа-запитів bootstrap.css безпосередньо? Чи можу я змінити медіа-запит, який стосується лише навбара? Мені сказали, що це не дуже гарна ідея редагувати вихідні завантажувальні файли, але я не знаю чому, як ви думаєте?
Nearpoint

1

Привіт, я думаю, що ви можете зробити це за допомогою CSS, як це ви можете змінити меню завантаження точки точки розриву

    @media (max-width: 1200px) {
    .navbar-header {
        float: none;
    }
    .navbar-left,.navbar-right {
        float: none !important;
    }
    .navbar-toggle {
        display: block;
    }

    .navbar-collapse.collapse {
        display: none!important;
    }
    .navbar-nav {
        float: none!important; 
    }
    .navbar-nav>li {
        float: none;
    } 
    .collapse.in{
        display:block !important;
    }
   .navbar-nav .open .dropdown-menu {
       position: static;
       float: none;
       width: auto;
       margin-top: 0;
       background-color: transparent;
       border: 0;
       -webkit-box-shadow: none;
       box-shadow: none;
    }
}

1

Navbars можуть використовувати .navbar-toggler, .navbar-крах та .navbar-розширення {-sm | -md | -lg | -xl}, щоб змінити, коли їхній вміст згортається за кнопкою. У поєднанні з іншими утилітами ви можете легко вибрати, коли показувати або приховувати певні елементи.

Для навігаційних панелей, які ніколи не згортаються, додайте клас .navbar-extension на панель навігації. Для навігаційних панелей, які завжди руйнуються, не додайте жодного класу .navbar-expand.

Наприклад :

<nav class="navbar navbar-expand-lg"></nav>

Меню для мобільних пристроїв відображається на великому екрані.

Довідка: https://getbootstrap.com/docs/4.0/components/navbar/


Так, цей працює для мене саме так, як мені було потрібно. Звичайно, якщо вам потрібні більш конкретні точки перерви, тоді буде потрібно конфігурувати власний медіа-запит (звідси сприятлива відповідь на це питання)
Coderhi

0

Це те, що зробило для мене трюк:

@media only screen and (min-width:769px) and (max-width:1000px){
.navbar-collapse.collapse {
    display: none !important;
}
.navbar-collapse.collapse.in {
    display: block !important;
}
.navbar-header .collapse, .navbar-toggle {
    display:block !important;
}

З вашим рішенням та рішенням Veek я виявляю, що між 768 і 1000 полями розширюються неправильно. Вони чудово виходять за ці межі. З вашим рішенням значок згорнутого меню також не залишається праворуч після згортання, але тисне на "бренд".
Майк О'Коннор

Так вибачте, я, мабуть, гупав. У мене все ще виникає проблема недоречно широких запасів, що з'являються в цих межах. Однак зараз я бачу, що офіційний приклад завантаження з Інтернету демонструє ту саму проблему з маржами.
Майк О'Коннор

0

У завантажувальному інструменті 4, якщо ви хочете перевтоматись, коли navbar-expand- *, розширюється та згортається, показує та приховує гамбургер (navbar-toggler), ви повинні знайти цей стиль / визначення у bootstrap.css та перезначити його у своєму власний customstyle.css (або безпосередньо в bootstrap.css, якщо ви так схильні).

Напр. Я хотів, щоб navbar-extension-lg згортався, і показує navbar-toggler в 950px. У bootstrap.css я знаходжу:

@media (max-width: 991.98px) {
  .navbar-expand-lg > .container,
  .navbar-expand-lg > .container-fluid {
    padding-right: 0;
    padding-left: 0;
  }
}

А нижче цього ...

@media (min-width:992px) { 
    ... lots of styling ...
}

Я скопіював обидва запити @media і встав їх у мій style.css, а потім змінив розмір, щоб відповідати моїм потребам. Я моєму випадку я хотів, щоб він звалився на 950 пікселів. Запити @media повинні мати різний розмір (я здогадуюсь), тому я встановив максимальну ширину контейнера 949,98px і використав 950px для іншого @media запиту, і таким чином наступний код був доданий до мого style.css. Це було непросто відірватись від скручених рішень, які я знайшов у Stackoverflow та інших місцях. Сподіваюсь, це допомагає.

@media (max-width: 949.98px) {
    .navbar-expand-lg > .container,
    .navbar-expand-lg > .container-fluid {
        padding-right: 0;
        padding-left: 0;
    }
}

@media (min-width: 950px) {
    .navbar-expand-lg {
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
        -ms-flex-flow: row nowrap;
        flex-flow: row nowrap;
        -webkit-box-pack: start;
        -ms-flex-pack: start;
        justify-content: flex-start;
    }
    .navbar-expand-lg .navbar-nav {
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
        -ms-flex-direction: row;
        flex-direction: row;
    }
    .navbar-expand-lg .navbar-nav .dropdown-menu {
        position: absolute;
    }
    .navbar-expand-lg .navbar-nav .dropdown-menu-right {
        right: 0;
        left: auto;
    }
    .navbar-expand-lg .navbar-nav .nav-link {
        padding-right: 0.5rem;
        padding-left: 0.5rem;
    }
    .navbar-expand-lg > .container,
    .navbar-expand-lg > .container-fluid {
        -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    }
    .navbar-expand-lg .navbar-collapse {
        display: -webkit-box !important;
        display: -ms-flexbox !important;
        display: flex !important;
        -ms-flex-preferred-size: auto;
        flex-basis: auto;
    }
    .navbar-expand-lg .navbar-toggler {
        display: none;
    }
    .navbar-expand-lg .dropup .dropdown-menu {
        top: auto;
        bottom: 100%;
    }
}

0

Ось мій робочий код, що використовується в React with Bootstrap

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">
<style>
  @media (min-width: 768px) and (max-width: 1000px) {
   .navbar-collapse.collapse {
       display: none !important;
   }
   .navbar-toggle{
        display: block !important;
   }
   .navbar-header{
        float: none;
   }
}
  </style>

0

Зараз він підтримується на Bootstrap 4.4

navbar-expand-sm 

Так, правильно, але вам знадобиться navbar-
extension
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.