Chcę użyć domyślnego paska nawigacyjnego Bootstrap 3 z logo obrazka zamiast znaku tekstowego. Jak to zrobić bez powodowania problemów z różnymi rozmiarami ekranu? Zakładam, że jest to wspólny wymóg, ale nie widziałem jeszcze dobrej próbki kodu. Kluczowym wymogiem oprócz akceptowalnego wyświetlania na wszystkich ekranach jest możliwość zwijania menu na mniejszych ekranach.
Próbowałem po prostu umieścić tag IMG wewnątrz tagu A, który ma klasę marki navbar, ale spowodowało to, że menu nie działało poprawnie na moim telefonie z Androidem. Próbowałem także zwiększyć wysokość klasy pasków nawigacyjnych, ale to wszystko jeszcze bardziej zepsuło.
Nawiasem mówiąc, moje logo jest większe niż wysokość paska nawigacyjnego.
css
twitter-bootstrap
twitter-bootstrap-3
navbar
stepanian
źródło
źródło
<img src="logo.png" width="27px" />
: dostosujwidth="27"
Odpowiedzi:
Dlaczego wszyscy próbują to zrobić w trudny sposób? Jasne, niektóre z tych podejść będą działać, ale są bardziej skomplikowane niż to konieczne.
OK, po pierwsze - potrzebujesz obrazu, który zmieści się na pasku nawigacyjnym. Możesz dostosować swój obraz za pomocą atrybutu wysokości css (pozwalającego na skalowanie szerokości) lub możesz po prostu użyć obrazu o odpowiednim rozmiarze. Cokolwiek zdecydujesz się zrobić - to, jak będzie wyglądać, będzie zależeć od tego, jak dobrze dopasujesz rozmiar swojego obrazu.
Z jakiegoś powodu każdy chce wbić obraz w kotwicę
navbar-brand
, a to nie jest konieczne.navbar-brand
stosuje style tekstu, które nie są konieczne do obrazu, a także donavbar-left
klasy (tak jak przeciągnij w lewo, ale do użycia w pasku nawigacyjnym). Wszystko, czego naprawdę potrzebujesz, to dodaćnavbar-left
.Możesz nawet śledzić to za pomocą elementu marki paska nawigacyjnego, który pojawi się po prawej stronie obrazu.
źródło
navbar-brand
. To jest źródłem zamieszania.źródło
ZAKOŃCZ DEMO Z WIELE PRZYKŁADÓW
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 dopasowaneInną opcją jest użycie obrazu tła. Użyj obrazu o dowolnym rozmiarze, a następnie ustaw żądaną szerokość:
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.
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.
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.
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ół.Aby to zakończyć, złożyłem je razem i wydaje się, że działa idealnie we wszystkich przeglądarkach.
DEMO http://codepen.io/bootstrapped/pen/KwYGwq
źródło
Chociaż twoje pytanie jest interesujące, nie oczekuję, że będzie na to jedna odpowiedź. Może twoje pytanie jest zbyt ogólne. Twoje rozwiązanie powinno zależeć od: innej zawartości na pasku nawigacyjnym (liczba elementów), rozmiarów logo, czy logo reaguje na reakcję itp. Dodanie logo do litery a (z marką navbar) wydaje się dobrym punktem wyjścia. Powinienem użyć klasy navbar-brand, ponieważ doda to dopełnienie (góra / dół) 15 pikseli.
Testuję to ustawienie na stronie http://getbootstrap.com/examples/navbar/ z logo 300 x 150 pikseli.
Pełny ekran> 1200:
od 768 do 992 pikseli (menu nie jest zwinięte):
<768 (menu zwinięte)
Oprócz aspektów estetycznych nie znalazłem żadnego problemu technicznego. Na małych ekranach duże logo może się pokrywać lub może wyłamać rzutnię. Ekrany od 768 do 992 pikseli mają również inne problemy, gdy zawartość nie mieści się w linii, patrz na przykład: https://github.com/bassjobsen/jamedo-bootstrap-start-theme/issues/18
Domyślny pasek nawigacyjny maPrzykład domyślnego paska nawigacyjnego dodaje dolny margines 30px, więc zawartość paska nigdy nie powinna nakładać się na zawartość strony. (stałe paski nawigacji będą miały problemy, gdy wysokość paska nawigacji będzie się zmieniać).Będziesz potrzebować kilku zapytań css i multimediów, aby dostosować pasek nawigacyjny do swoich potrzeb na różnych rozmiarach ekranu. Spróbuj zawęzić swoje pytanie. opisz problem znaleziony na Androidzie.
aktualizacja patrz http://bootply.com/77512 na przykład.
zamień przycisk i logo w swoim kodzie, najpierw logo (ustaw pływak: lewy na logo)
ustaw
margin-top
dla.navbar-collapse ul
. Użyj wysokości logo minus wysokość paska nawigacyjnego, aby wyrównać do dołu lub (wysokość logo - wysokość paska nawigacyjnego) / 2, aby wyśrodkowaćźródło
Instrukcja tworzenia paska nawigacyjnego bootstrap z logo większym niż domyślna wysokość (50 pikseli):
Przykład z logo 100px x 100px, standardowy CSS:
Oblicz wysokość i (góra wypełnienia + dół wypełnienia) logo. Tutaj 120 pikseli (wysokość 100 pikseli + góra wypełnienia (10 pikseli) + spód wypełnienia (10 pikseli))
Idź do bootstrap / dostosuj . Ustaw zamiast wysokości paska nawigacyjnego 50px> 120px (50 + 70) i zawinięcia-max-wysokość paska od 340px do 410px (340 + 70). Pobierz css.
W tym przykładzie używam tego paska nawigacyjnego . W pasku nawigacyjnym :
dodaj klasę, na przykład myLogo i img (twoje logo)
<a class="navbar-brand myLogo" href="#"><img src="yourLogo.jpg" /></a>
.Dodaj CSS
.myLogo {padding: 10px; }
Odpowiednie do innych rozmiarów.
Przykład
źródło
Cóż, w końcu udało mi się uruchomić ten sam problem, oto moje rozwiązanie i przetestowałem je na swojej stronie we wszystkich trzech głównych przeglądarkach: Chrome, Firefox i Internet Explorer.
Przede wszystkim, jeśli nie używasz logo tekstowego, usuń całkowicie „navbar-brand”, ponieważ uznałem, że ta konkretna klasa jest główną przyczyną podwojenia menu nawigacyjnego.
Krzycz do użytkownika 3137032 za poprowadzenie mnie we właściwym kierunku.
Musisz stworzyć niestandardowy responsywny pojemnik na zdjęcia, nazwałem moje „logo”
Oto znacznik HTML ładowania początkowego:
I kod CSS:
Wartość w @media (max-width: x) może się różnić w zależności od szerokości obrazów twojego logo, moje to 368px. Wartości procentowe mogą również wymagać zmiany w zależności od rozmiaru logo. Pierwsze zapytanie @media powinno być twoim progiem, a mój miał szerokość obrazu (368px) + zwinięty rozmiar przycisku (44px) + około 60px i wyszło na 480px, od tego momentu rozpoczynam responsywne skalowanie obrazu.
Pamiętaj, aby usunąć moją składnię maszynki do golenia z części HTML. Daj mi znać, jeśli to naprawi twój problem, naprawi mój.
Edytuj: Przepraszam, brakowało mi problemu z wysokością paska nawigacyjnego. Jest na to kilka sposobów, osobiście kompiluję Bootstrap LESS z odpowiednią wysokością paska nawigacyjnego, do moich celów używam 70px, a moja wysokość obrazu to 68 px. Drugi sposób to zrobić w samym pliku bootstrap.css, wyszukaj „.navbar” i zmień min-height: na wysokość swojego logo.
źródło
navbar-brand
zrobiło to dla mnie.Moim rozwiązaniem jest dodanie css „display: inline-block” do tagu img.
DEMO: jsfiddle
źródło
Używam klasy reagującej na img, a następnie ustawiam maksymalną szerokość
a
elementu. Lubię to:i CSS:
źródło
<a>
tagu zamiast<img>
tagu, ponieważimg-responsive
ustawiamax-width="100%"
. Czy możesz wyjaśnić, w jaki sposób jest to pomocne?.image-responsive
jest przeznaczony do zmiany rozmiaru obrazu na podstawie jawnej SZEROKOŚCI pojemnika obrazu, a nie WYSOKOŚCI, która zmienia rozmiar na podstawie szerokości. Więc pomimo tego, ile głosów to uzyskało, NIE DZIAŁA, zobacz tutaj . Możemy jednak użyć tej samej metody, co w przypadku reagowania na obraz i zastosować go do wysokości. Usuń więc równanie reagujące na .img i po prostu ustaw maksymalną wysokość na navbar-brand . Zobacz moją odpowiedź tutaj .Musisz użyć kodu w następujący sposób:
Tag klasy A musi być „logo”, a nie marką navbar.
źródło
To zależy od tego, jak wysokie ma być twoje logo.
Domyślna
<a>
wysokość na pasku nawigacyjnym wynosi 20px, więc jeśli określisz toheight: 20px
na swoim logo, będzie się ładnie wyrównywać.Jest to jednak trochę małe logo, więc wybrałem to:
To sprawia, że obraz ma 30 pikseli wysokości i wyrównuje obraz w pionie, dodając ujemny margines na górze (5 pikseli to połowa różnicy między dopełnieniem a a rozmiarem obrazu).
Alternatywnie możesz zmienić wypełnienie
<a>
elementu, np .:źródło
Szybka poprawka : Utwórz klasę dla siebie
logo
i ustaw wartośćheight
na28px
. Działa to dobrze z paskiem nawigacyjnym na wszystkich urządzeniach. Zauważ, że powiedziałem, że działa „WELL”.źródło
Moje podejście polega na uwzględnieniu CZTERECH różnych obrazów o różnych rozmiarach dla telefonów, tabletów, komputerów stacjonarnych, dużych komputerów stacjonarnych, ale pokazuję JEDEN, używając responsywnych klas narzędzi bootstrap, w następujący sposób:
Uwaga: Skomentowany wiersz można zastąpić podanym kodem. Zamień kod php, jeśli nie używasz wordpress.
Edytuj Uwaga 2: Tak, to dodaje żądania do serwera podczas ładowania strony, co może nieco spowolnić, ale jeśli używasz techniki sprite css w tle, istnieje prawdopodobieństwo, że logo nie zostanie wydrukowane podczas drukowania strony, a powyższy kod powinien otrzymać lepsze SEO.
źródło
visible-SIZE
za
tagu, i umieścić go w znaczniku img.<a class="navbar-brand"><img class="visible-xs"/><img class="visible-sm"/></a>
Nie powinieneś dodawać dodatkowego CSS, ponieważ Bootstrap3 to zapewnia. Chyba że chcesz to dodać. To jest mój kod umieszczania logo po lewej stronie i linków po prawej stronie. Ta nawigacja jest responsywna. Wprowadź zmiany zgodnie z potrzebami.
HTML:
źródło
Zaimplementowałem to również za pomocą właściwości tła css. Działa zdrowo przy dowolnej wartości szerokości.
źródło
Innym podejściem jest zaimplementowanie wbudowanej
.text-hide
klasy Bootstrap wraz z.navbar-brand
zastąpieniem tekstu / treści marki obrazem tła.CSS:
HTML:
Jest to bardzo spójna metoda, która utrzymuje obraz w centrum. Aby dopasować rozmiar obrazu, wystarczy dopasować
.navbar-brand
szerokość, ponieważ wysokość jest już ustawiona.Oto demo na żywo
źródło
Miałem ten sam problem. Rozwiązałem to w ten sposób:
Nie ma klasy marki paska nawigacyjnego. Wynik wygląda jak obraz logo, który pasuje do paska nawigacyjnego i działa jak link. Polecam także użycie odpowiedniej klasy paska nawigacyjnego dla elementów menu, aby nie schodziły poniżej logo.
źródło
Może to jest zbyt proste, ale właśnie skopiowałem linię marki paska nawigacyjnego, więc są dwie, obraz, a następnie tekst.
I stworzyłem obraz, który mieści się w pasku nawigacyjnym (około 1/2 wysokości).
źródło
Jeśli używasz LESS, działa to:
źródło
Ten kod działa idealnie, jeśli chcesz zobaczyć markę wyśrodkowaną z automatyczną szerokością na pasku narzędzi. Zawiera funkcję Wordpress, aby pobrać plik obrazu z właściwej ścieżki:
źródło
Dodaj następujące elementy do
.navbar-brand
klasyźródło
mój działający kod - bootstrap 3.0.3. podczas przełączania paska nawigacyjnego oryginalny obraz ukrytego xs.
źródło
Możesz spróbować użyć zapytania @media, takiego jak poniżej.
Najpierw dodaj klasę logo, a następnie użyj @media, aby określić wysokość i szerokość logo w zależności od rozmiaru urządzenia. W poniższym przykładzie kieruję reklamy na urządzenia o maksymalnej szerokości 320 pikseli (iPhone). Możesz się tym bawić, dopóki nie znajdziesz najlepszego dopasowania. Łatwy sposób przetestowania: użyj Chrome lub Firefox z elementem inspekcji. Zmniejsz przeglądarkę tak daleko, jak to możliwe. Obserwuj zmianę rozmiaru logo na podstawie podanej maksymalnej szerokości @media. Przetestuj na telefonie iPhone, urządzeniach z Androidem, iPadzie itp., Aby uzyskać pożądane wyniki.
źródło
Wypróbuj następujący kod:
źródło
Nie udało mi się sprawić, by którakolwiek z pozostałych odpowiedzi zadziałała w moim przypadku (prawdopodobnie nie zdałem testu inteligencji) i po pewnym eksperymencie używam tego (co moim zdaniem jest bardzo zbliżone do domyślnego Bootstrap):
W pliku CSS dodałem:
Zauważ, że
@Html.ActionLink()
jest to składnia Razor dla<a>
znacznika. Tam, gdzie jest napisane,@Html.ActionLink(...)
po prostu zamień go na odpowiedni<a>
tag. Podobnie, gdy mówi,@Url.Action(...)
zamień go na odpowiedni adres URL (<a>
w tym przypadku brak tagu).źródło
To nie jest semantyczne, ale po prostu używam istniejącego
a
elementu, ustawiam obraz tła, a następnie tworzę wiele odmian dla rozdzielczości @ 2x, mniejszych rozmiarów ekranu itp.Następnie możesz użyć tej
.text-hide
klasy, aby uzyskać modny tekst na stronie. Proste i skuteczne, choć niewłaściwe użycie obrazu.Oto link do klasy pomocniczej do zamiany tekstu:
http://getbootstrap.com/css/#helper-classes
źródło
Najłatwiejszą i najlepszą odpowiedzią na to pytanie jest ustawienie maksymalnej szerokości i wysokości w zależności od logo, wysokość obrazu będzie wynosić maksymalnie 50 pikseli, ale nie dłużej niż 200 pikseli.
Różni się to w zależności od rozmiaru logo i posiadanych elementów paska nawigacyjnego.
źródło
Proszę zrozumieć kod we własnym zakresie: D To jest mój szkic i już działa :) Oto zrzut ekranu.
źródło
Zamiast zastąpienia znakowania tekstem podzieliłem się na dwa wiersze, jak w poniższym kodzie i nadałem
img-responsive
klasie obraz ...a ponadto dodałem następujące kody css .......
Jeśli mój kod rozwiązuje problem, to z przyjemnością .....
źródło
// Nie zapomnij dodać bootstrap w nagłówku kodu.
źródło