WAŻNA AKTUALIZACJA: 21.12.2015
Obecnie wykryty błąd w Mozilli , który łamie pasek nawigacyjny w niektórych szerokościach przeglądarki za pomocą WIELE DEMOSÓW NA TEJ STRONIE . Zasadniczo błąd mozilli obejmuje lewe i prawe dopełnienie linku marki paska nawigacyjnego jako część szerokości obrazu. Można to jednak łatwo naprawić i przetestowałem to i jestem pewien, że jest to najbardziej stabilny przykład działania na tej stronie. Rozmiar zmieni się automatycznie i działa na wszystkich przeglądarkach.
Po prostu dodaj to do swojego css i użyj navbar-brand w taki sam sposób, jak zrobiłbyś to .img-responsive
. Twoje logo zostanie automatycznie dopasowane
.navbar-brand {
padding: 0px; /* firefox bug fix */
}
.navbar-brand>img {
height: 100%;
padding: 15px; /* firefox bug fix */
width: auto;
}
Inną opcją jest użycie obrazu tła. Użyj obrazu o dowolnym rozmiarze, a następnie ustaw żądaną szerokość:
.navbar-brand {
background: url(http://disputebills.com/site/uploads/2015/10/dispute.png) center / contain no-repeat;
width: 200px;
}
ORYGINALNA ODPOWIEDŹ PONIŻEJ (tylko w celach informacyjnych)
Ludzie często zapominają o dopasowaniu do obiektu. Osobiście uważam, że jest to najłatwiejszy w obsłudze, ponieważ obraz automatycznie dostosowuje się do rozmiaru menu. Jeśli użyjesz tylko dopasowania obiektu na obrazie, automatycznie zmieni on rozmiar na wysokość menu.
.navbar-brand > img {
max-height: 100%;
height: 100%;
-o-object-fit: contain;
object-fit: contain;
}
Zwrócono uwagę, że nie działa to jeszcze w IE „jeszcze”. Istnieje polifill , ale może być nadmierny, jeśli nie planujesz używać go do niczego innego. Wygląda na to, że dopasowanie obiektu jest planowane w przyszłej wersji IE, więc gdy to się stanie, będzie działać we wszystkich przeglądarkach.
Jednakże, jeśli zauważysz klasę reagującą na .img w bootstrap, maksymalna szerokość zakłada, że umieszczasz te obrazy w kolumnach lub coś, co ma wyraźny zestaw. Oznaczałoby to, że 100% w szczególności oznacza 100% szerokość elementu macierzystego.
.img-responsive
max-width: 100%;
height: auto;
}
Nie możemy tego używać z paskiem nawigacyjnym, ponieważ element nadrzędny (.navbar-brand) ma stałą wysokość 50 pikseli, ale szerokość nie jest ustawiona.
Jeśli weźmiemy tę logikę i odwrócimy ją, aby była responsywna na podstawie wysokości, możemy uzyskać responsywny obraz, który skaluje się do wysokości marki .navbar, a dodając i automatycznie ustawiając szerokość, dostosuje się do proporcji.
max-height: 100%;
width: auto;
Zwykle musielibyśmy dodać display:block;
do scenariusza, ale skoro navbar-brand już ma zmiennoprzecinkowe: left; zastosowane do niego automatycznie działa jak element blokowy.
Możesz natknąć się na rzadką sytuację, w której twoje logo jest zbyt małe. Podejście reagujące na img nie bierze tego pod uwagę, ale my to zrobimy. Dodając również do atrybutu „wysokość” .navbar-brand > img
możesz mieć pewność, że będzie on skalowany zarówno w górę, jak i w dół.
max-height: 100%;
height: 100%;
width: auto;
Aby to zakończyć, złożyłem je razem i wydaje się, że działa idealnie we wszystkich przeglądarkach.
<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" />
: dostosuj