Уменьшение высоты панели навигации bootstrap 3.0


108

Я пытаюсь уменьшить высоту панели навигации bootstrap 3.0, которая используется с фиксированным верхним поведением. Здесь я использую код.

HTML

<div class="tnav">
<div class="navbar navbar-fixed-top" role="banner">
    <div class="navbar-inner-sm">
  <div class="container">
    <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
    </div>
    <nav class="collapse navbar-collapse" role="navigation">
      <ul class="nav navbar-nav pull-right">
        <li class="active">
          <a href="../getting-started">Getting started</a>
        </li>
        <li>
          <a href="../css">Ext01</a>
        </li>
        <li>
          <a href="../components">Language</a>
        </li>
        <li>
          <a href="../javascript">My Account</a>
        </li>
        <li>
          <a href="../customize">Sign Out</a>
        </li>
      </ul>
    </nav>
  </div>
    </div>
</div>

CSS

.tnav .navbar { background:#F06; height:30px; }
.navbar-inner-sm{background-color: #282828;padding: 1px 20px;background-repeat: repeat-x;-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1);background-image: linear-gradient(top, #333333, #222222);}
.navbar-inner-sm .nav {position: relative;left: 0;display: block;float: left;margin: 0 10px 0 0;}
.navbar-inner-sm .nav.pull-right {float: right;}
.navbar-inner-sm .nav > li {display: block;float: left;}
.navbar-inner-sm .nav > li > a {float: none;padding: 4px 5px;line-height: 19px;color: #999999;text-decoration: none;text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);}
.navbar-inner-sm .nav > li > a:hover {background-color: transparent;color: #ffffff;text-decoration: none;}
.navbar-inner-sm .nav .active > a,.navbar .nav .active > a:hover {color: #ffffff;text-decoration: none;background-color: #003753;}
.navbar-inner-sm .divider-vertical {height: 27px;width: 1px;margin: 0 9px;overflow: hidden;background-color: #282828;border-left: 1px solid #3f3f3f; border-right: 1px solid #161616;}
.navbar-inner-sm .nav.pull-right {margin-left: 10px;margin-right: 0;}

Результат

введите описание изображения здесь

На экране видно, что панель навигации уменьшилась на выходе, но высота не уменьшилась. исходная высота показана розовым цветом.

Вышеупомянутый css-скрипт почти хорошо работает в начальной загрузке 2. *

Есть ли способ как следует уменьшить высоту.


Больше нет необходимости в <div class = "navbar-inner"> в Bootstrap 3
Bartek S

navbar-inner - это мой собственный класс. не имеет отношения к начальной загрузке 3.0.
irfanmcsd

Единственный способ, который сработал для меня, объясняется по этой ссылке: stackoverflow.com/questions/19576175/… Он уменьшает высоту навигационной панели всего двумя строками кода
giovannim

Ответы:


124

Проведя несколько часов, добавление следующего класса css устранило мою проблему.

Работа с Bootstrap 3.0. *

.tnav .navbar .container { height: 28px; }

Работа с Bootstrap 3.3.4

.navbar-nav > li > a, .navbar-brand {
    padding-top:4px !important; 
    padding-bottom:0 !important;
    height: 28px;
}
.navbar {min-height:28px !important;}

Обновите полный код, чтобы настроить и уменьшить высоту навигационной панели со снимком экрана.

введите описание изображения здесь

CSS:

/* navbar */
.navbar-primary .navbar { background:#9f58b5; border-bottom:none; }
.navbar-primary .navbar .nav > li > a {color: #501762;}
.navbar-primary .navbar .nav > li > a:hover {color: #fff; background-color: #8e49a3;}
.navbar-primary .navbar .nav .active > a,.navbar .nav .active > a:hover {color: #fff; background-color: #501762;}
.navbar-primary .navbar .nav li > a .caret, .tnav .navbar .nav li > a:hover .caret {border-top-color: #fff;border-bottom-color: #fff;}
.navbar-primary .navbar .nav > li.dropdown.open.active > a:hover {}
.navbar-primary .navbar .nav > li.dropdown.open > a {color: #fff;background-color: #9f58b5;border-color: #fff;}
.navbar-primary .navbar .nav > li.dropdown.open.active > a:hover .caret, .tnav .navbar .nav > li.dropdown.open > a .caret {border-top-color: #fff;}
.navbar-primary .navbar .navbar-brand {color:#fff;}
.navbar-primary .navbar .nav.pull-right {margin-left: 10px; margin-right: 0;}
.navbar-xs .navbar-primary .navbar { min-height:28px; height: 28px; }
.navbar-xs .navbar-primary .navbar .navbar-brand{ padding: 0px 12px;font-size: 16px;line-height: 28px; }
.navbar-xs .navbar-primary .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 28px; }
.navbar-sm .navbar-primary .navbar { min-height:40px; height: 40px; }
.navbar-sm .navbar-primary .navbar .navbar-brand{ padding: 0px 12px;font-size: 16px;line-height: 40px; }
.navbar-sm .navbar-primary .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 40px; }

Код использования:

<div class="navbar-xs">
   <div class="navbar-primary">
       <nav class="navbar navbar-static-top" role="navigation">
          <!-- Brand and toggle get grouped for better mobile display -->
          <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-8">
                 <span class="sr-only">Toggle navigation</span>
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
              </button>
              <a class="navbar-brand" href="#">Brand</a>
          </div>
          <!-- Collect the nav links, forms, and other content for toggling -->
          <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-8">
              <ul class="nav navbar-nav">
                  <li class="active"><a href="#">Home</a></li>
                  <li><a href="#">Link</a></li>
                   <li><a href="#">Link</a></li>
              </ul>
          </div><!-- /.navbar-collapse -->
      </nav>
  </div>
</div>

4
это не работает ... проверьте мой ответ на этой странице ... минимальная высота для .navbar по умолчанию установлена ​​на 50 пикселей, поэтому, если вы установите высоту на 28 пикселей, она будет переопределена минимальной высотой 50 пикселей. ..
patrick

3
Ах, я вижу, этот пост был отредактирован (много!) И теперь действительно показывает правильный код. Я также вижу настройку минимальной высоты, которую я предложил в своем посте, которая по какой-то причине получила голосование против. Очень неприятно получить отрицательный ответ за правильный, соответствующий и ясный ответ ...
Патрик

@patrick не понимаю, что вы имеете в виду, но однажды моя проблема была решена с помощью моего собственного ответа. У репутации нет вопросов, если люди проголосуют за меня или против.
irfanmcsd

1
Редактирование источника сделало бы это проще
Люк

Забавно, у меня это не сработало. Мне пришлось изменить фиксированную высоту 50 пикселей;
Кевин

43

Рабочий раствор:

Bootstrap 3.0 по умолчанию имеет отступы 15 пикселей сверху и снизу, поэтому нам просто нужно его переопределить!

Например:

.navbar-nav > li > a {padding-top:10px !important; padding-bottom:10px !important;}
.navbar {min-height:40px !important}

По умолчанию в bootstrap.css установлено 10 пикселей? .navbar-nav> li> {padding-top: 10px; padding-bottom: 10 пикселей; высота строки: 20 пикселей; }
jichi

1
Посмотрите строку номер 3884 в bootstrap.css (v3.0.2). Это .navbar-nav > li > a {padding-top: 15px; padding-bottom: 15px;}по умолчанию.
Ranveer

Не уверен насчет v3.0.2. Но в v3.0.3 строке 4541 в bootstrap.css это: .navbar-nav> li> a {padding-top: 10px; padding-bottom: 10 пикселей; высота строки: 20 пикселей; }
jichi

Вы, сэр, мой герой.
orokusaki

40

Просто переопределите минимальную высоту, установленную в .navbar, вот так:

.navbar{
  min-height:20px; //* or whatever height you require
}

Изменение высоты элемента на что-то меньшее, чем минимальная высота, не повлияет ...


как вы видите на панели навигации, я уже использую свойство высоты, но безрезультатно.
irfanmcsd 02

это свойство min-height, а не высота ... если вы установите высоту на число ниже min-height, min-height предотвратит его уменьшение ...
Патрик

7
Почему это получает отрицательный голос? Это рабочее решение проблемы, поставленной в этом посте. Может ли модератор взглянуть на это, пожалуйста, похоже, есть отрицательный голос, который просто отрицает то, с чем он не согласен, не проверяя фактический ответ. Ссылка, опубликованная спустя 2,5 месяца после того, как на мой пост был дан тот же ответ, размещена по внешней ссылке и получила два голоса за. Я ненавижу, когда люди разбавляют SO случайными отрицательными голосами!
Патрик

Я часто спрашивал себя, как люди теперь получают голос против, вы получаете уведомление? Не удалось найти это на мета
Юлиан Онофрей

5
нет уведомления ... похоже, люди дают отрицательные голоса, если считают, что другой ответ лучше или что-то в этом роде ... Я не знаю ... В этом случае парень, задававший вопрос, взял мой ответ в свой ответ и принял этот ответ .. Какой-то хромой, если вы спросите меня ... Но опять же, этот сайт не о эго, он о помощи другим ...
Патрик

27

если вы используете меньший источник, в variables.lessфайле должна быть переменная для высоты навигационной панели . Если вы не используете исходный код, вы можете настроить его с помощью утилиты настройки, предоставляемой сайтом начальной загрузки. А затем вы можете скачать его и включить в свой проект. Переменная, которую вы ищете:@navbar-height


1
но я не хочу менять исходное поведение панели навигации. Я просто меняю высоту для дополнительной верхней панели навигации.
irfanmcsd 03

2
Думаю, это лучшее решение.
Имтиаз

1
Это лучшее решение, если на сайте только одна навигация и она должна быть такой высоты. Если у вас несколько навигаторов, это становится немного сложнее, поскольку .navbar-vertical-align используется в нескольких местах и ​​имеет жесткую ссылку на @ navbar-height.
Карл Буссема

хорошее решение. если вы не планируете использовать CDN
eagor 02

1
Если вы используете переопределения в отдельном Менее частичном, это лучшее решение, которое позволит вам без проблем обновить загрузочную программу.
Кен Принс

9

Это мой опыт

 .navbar { min-height:38px;   }
 .navbar .navbar-brand{ padding: 0 12px;font-size: 16px;line-height: 38px;height: 38px; }
 .navbar .navbar-nav > li > a {  padding-top: 0px; padding-bottom: 0px; line-height: 38px; }
 .navbar .navbar-toggle {  margin-top: 3px; margin-bottom: 0px; padding: 8px 9px; }
 .navbar .navbar-form { margin-top: 2px; margin-bottom: 0px }
 .navbar .navbar-collapse {border-color: #A40303;}

изменить высоту навабра на 38 пикселей


Добавьте это, чтобы позаботиться о .navbar-form:.navbar .navbar-form { margin-top: 2px; margin-bottom: 0px }
steph643

Другое расширение: .navbar .navbar-text {margin-top: 0px; нижнее поле: 0 пикселей; высота строки: 38 пикселей; }
cnmuc

3

Если вы, ребята, генерируете свои таблицы стилей с помощью LESS / SASS и импортируете туда Bootstrap, я обнаружил, что переопределение переменной @ navbar-height позволяет вам установить высоту навигационной панели, которая изначально определена в файле variables.less.

введите описание изображения здесь


3

Хотел добавить свои 2 пенса и поблагодарить Джеймса Пулозе за его первоначальный ответ, он был единственным, который работал для моего конкретного проекта (MVC 5 с последней версией Bootstrap 3).

Это в основном нацелено на новичков, для ясности и упрощения будущих изменений я предлагаю вам добавить раздел внизу вашего файла CSS для вашего проекта, например, мне нравится делать это:

/* Bootstrap overrides */

.some-class-here {
}

Взяв ответ Джеймса Пулоза выше, я сделал это:

/* Bootstrap overrides */   
.navbar-nav > li > a { padding-top: 8px !important; padding-bottom: 5px !important; }
.navbar { min-height: 32px !important; }
.navbar-brand { padding-top: 8px; padding-bottom: 10px; padding-left: 10px; }

Я изменил значения padding-top, чтобы сдвинуть текст вниз на моем элементе панели навигации. Вы можете в значительной степени переопределить любой элемент Bootstrap, подобный этому, и это хороший способ внести изменения, не портя базовые классы Boostrap, потому что последнее, что вы хотите сделать, - это внести изменения в них, а затем потерять их при обновлении Bootstrap!

Наконец, для еще большего разделения мне нравится разделять мои файлы CSS и использовать объявления @import для импорта ваших суб-файлов в один основной файл CSS для упрощения управления, например:

@import url('css/mysubcssfile.css');

Примечание : если вы загружаете несколько файлов, убедитесь, что они загружаются в правильном порядке.

Надеюсь, это кому-то поможет.


2

Думаю, мы можем написать меньше стилей, не меняя существующий цвет. Для меня сработало следующее (в Bootstrap 3.2.0)

.navbar-nav > li > a { padding-top: 5px !important; padding-bottom: 5px !important; }
.navbar { min-height: 32px !important; }
.navbar-brand { padding-top: 5px; padding-bottom: 10px; padding-left: 10px; }

Последний («navbar-brand») на самом деле нужен только в том случае, если у вас есть текст в качестве названия вашего «бренда».


Хороший ответ, это был единственный, который работал у меня с последней версией Bootstrap 3 (примечание: если вы хотите сдвинуть текст вниз, увеличьте значение padding-top для класса .navbar-brand, а также .navbar-nav> li> a classses.
Тахир Халид

0

У меня та же проблема, высота строки меню, предоставляемой начальной загрузкой, была слишком большой, на самом деле я загрузил какой-то неправильный бутстрап, наконец избавился от него, загрузив исходный бутстрап с этого сайта .. http://getbootstrap.com/2.3 .2 / хотите использовать bootstrap в yii (netbeans), следуйте этому руководству, https://www.youtube.com/watch?v=XH_qG8gphaw ... Голос отсутствует, но шаги медленные, вы можете легко понять и реализовать их. Спасибо


Что в коде вы изменили, чтобы добиться желаемого эффекта? Если вы укажете ссылку в ответе, вы должны обобщить решение.
Брайан,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.