ВАЖНОЕ ОБНОВЛЕНИЕ: 21.12.15
В настоящее время в Mozilla обнаружена ошибка, которая нарушает навигационную панель в браузерах определенной ширины с помощью MANY DEMOS ON THIS PAGE . По сути, ошибка Mozilla включает в себя левый и правый отступы на ссылку бренда Navbar как часть ширины изображения. Тем не менее, это можно легко исправить, и я проверил это, и я уверен, что это самый стабильный рабочий пример на этой странице. Он автоматически изменит размер и работает во всех браузерах.
Просто добавьте это в ваш css и используйте navbar-brand так же, как и вы .img-responsive
. Ваш логотип будет автоматически соответствовать
.navbar-brand {
padding: 0px; /* firefox bug fix */
}
.navbar-brand>img {
height: 100%;
padding: 15px; /* firefox bug fix */
width: auto;
}
Другой вариант - использовать фоновое изображение. Используйте изображение любого размера, а затем просто установите желаемую ширину:
.navbar-brand {
background: url(http://disputebills.com/site/uploads/2015/10/dispute.png) center / contain no-repeat;
width: 200px;
}
ОРИГИНАЛЬНЫЙ ОТВЕТ НИЖЕ (только для справки)
Кажется, люди часто забывают об объектах. Лично я считаю, что с ним проще всего работать, потому что изображение автоматически подстраивается под размер меню. Если вы просто используете подгонку объекта к изображению, он автоматически изменит размеры до высоты меню.
.navbar-brand > img {
max-height: 100%;
height: 100%;
-o-object-fit: contain;
object-fit: contain;
}
Было отмечено, что это не работает в IE "пока". Есть полифилл , но он может быть чрезмерным, если вы не планируете использовать его для чего-либо еще. Выглядит так, как будто планируется подгонка объекта в будущем выпуске IE объектов, поэтому, как только это произойдет, это сработает во всех браузерах.
Тем не менее, если вы заметили, что .img-отзывчивый класс в начальной загрузке, максимальная ширина предполагает, что вы помещаете эти изображения в столбцы или что-то, что имеет явное с set. Это будет означать, что 100% означает 100% ширину родительского элемента.
.img-responsive
max-width: 100%;
height: auto;
}
Причина, по которой мы не можем использовать это с панелью навигации, заключается в том, что родительский элемент (.navbar-brand) имеет фиксированную высоту 50 пикселей, но ширина не установлена.
Если принять эту логику и обратной , чтобы быть отзывчивыми на основе высоты , мы можем иметь адаптивное изображение, чешуйки на высоту .navbar-бренде и путем добавления и автоматический набором ширина будут приспосабливаться к пропорции.
max-height: 100%;
width: auto;
Обычно мы должны были бы добавить display:block;
к сценарию, но так как у navbar-brand уже есть float: left; Применительно к нему он автоматически действует как блочный элемент.
Вы можете столкнуться с редкой ситуацией, когда ваш логотип слишком маленький. Подход img-отзывчивый не принимает это во внимание, но мы будем. Кроме того, добавив атрибут «height» к .navbar-brand > img
вам, вы можете быть уверены, что он будет увеличиваться и уменьшаться.
max-height: 100%;
height: 100%;
width: auto;
Поэтому, чтобы завершить это, я собрал их вместе, и, похоже, они отлично работают во всех браузерах.
<style type="text/css">
.navbar-brand>img {
max-height: 100%;
height: 100%;
width: auto;
margin: 0 auto;
/* probably not needed anymore, but doesn't hurt */
-o-object-fit: contain;
object-fit: contain;
}
</style>
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<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="http://disputebills.com"><img src="http://disputebills.com/site/uploads/2015/10/dispute.png" alt="Dispute Bills"></a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
</div>
</nav>
<img src="logo.png" width="27px" />
: