Saya ingin menggunakan navbar default Bootstrap 3 dengan logo gambar alih-alih branding teks. Apa cara yang tepat untuk melakukan ini tanpa menyebabkan masalah dengan ukuran layar yang berbeda? Saya menganggap ini persyaratan umum, tetapi saya belum melihat contoh kode yang baik. Persyaratan utama selain memiliki tampilan yang dapat diterima pada semua ukuran layar adalah kemampuan menu pada layar yang lebih kecil.
Saya mencoba hanya meletakkan tag IMG di dalam tag A yang memiliki kelas merek navbar, tetapi itu menyebabkan menu tidak berfungsi dengan baik di ponsel android saya. Saya juga mencoba meningkatkan ketinggian kelas navbar, tetapi hal itu malah mengacaukan segalanya.
Omong-omong, gambar logo saya lebih besar dari ketinggian navbar.
css
twitter-bootstrap
twitter-bootstrap-3
navbar
stepanian
sumber
sumber
<img src="logo.png" width="27px" />
: sesuaikanwidth="27"
Jawaban:
Mengapa semua orang berusaha melakukannya dengan cara yang sulit? Tentu, beberapa pendekatan ini akan berhasil, tetapi lebih rumit daripada yang diperlukan.
OK, pertama - Anda perlu gambar yang sesuai dengan navbar Anda. Anda dapat menyesuaikan gambar Anda melalui atribut tinggi css (memungkinkan lebar untuk menskala) atau Anda bisa menggunakan gambar berukuran tepat. Apa pun yang Anda putuskan untuk dilakukan - penampilannya akan tergantung pada seberapa baik Anda mengukur gambar Anda.
Untuk beberapa alasan, semua orang ingin menempelkan gambar di dalam jangkar
navbar-brand
, dan ini tidak perlu.navbar-brand
menerapkan gaya teks yang tidak perlu untuk gambar, sertanavbar-left
kelas (seperti pull-left, tetapi untuk digunakan di navbar). Yang Anda butuhkan hanyalah menambahkannavbar-left
.Anda bahkan dapat mengikuti ini dengan item merek navbar, yang akan muncul di sebelah kanan gambar.
sumber
navbar-brand
. Ini adalah sumber kebingungan.sumber
SELESAI DEMO DENGAN CONTOH BANYAK
PEMBARUAN PENTING: 12/21/15
Saat ini ada bug di Mozilla yang saya temukan yang memecah navbar pada lebar browser tertentu dengan BANYAK DEMOS PADA HALAMAN INI . Pada dasarnya bug mozilla termasuk padding kiri dan kanan pada tautan merek navbar sebagai bagian dari lebar gambar. Namun, ini dapat diperbaiki dengan mudah dan saya sudah menguji ini dan saya cukup yakin itu adalah contoh kerja paling stabil di halaman ini. Ini akan mengubah ukuran secara otomatis dan berfungsi pada semua browser.
Cukup tambahkan ini ke css Anda dan gunakan navbar-brand seperti yang Anda inginkan
.img-responsive
. Logo Anda akan secara otomatis sesuaiPilihan lain adalah menggunakan gambar latar belakang. Gunakan gambar dari berbagai ukuran dan kemudian atur lebar yang diinginkan:
JAWABAN ASLI DI BAWAH (hanya untuk referensi)
Orang-orang tampaknya banyak melupakan objek-fit. Secara pribadi saya pikir ini yang paling mudah untuk dikerjakan karena gambar secara otomatis menyesuaikan dengan ukuran menu. Jika Anda hanya menggunakan objek yang cocok pada gambar itu akan secara otomatis mengubah ukuran ke ketinggian menu.
Itu menunjukkan bahwa ini tidak berfungsi di IE "belum". Ada polyfill , tetapi itu mungkin berlebihan jika Anda tidak berencana menggunakannya untuk hal lain. Memang terlihat seperti objek-fit sedang direncanakan untuk rilis IE di masa depan sehingga setelah itu terjadi ini akan bekerja di semua browser.
Namun, jika Anda melihat kelas .img-responsif di bootstrap, max-width mengasumsikan Anda meletakkan gambar-gambar ini dalam kolom atau sesuatu yang memiliki set eksplisit dengan. Ini berarti bahwa 100% secara khusus berarti lebar elemen induk 100%.
Alasan kami tidak dapat menggunakannya dengan navbar adalah karena induk (.navbar-brand) memiliki ketinggian tetap 50px, tetapi lebarnya tidak ditentukan.
Jika kita mengambil logika itu dan membalikkannya menjadi responsif berdasarkan ketinggian, kita dapat memiliki gambar responsif yang menskala ke ketinggian .navbar-brand dan dengan menambahkan dan mengatur lebar otomatis, itu akan menyesuaikan proporsi.
Biasanya kita harus menambahkan
display:block;
skenario, tetapi karena navbar-brand sudah memiliki float: left; diterapkan padanya, ia secara otomatis bertindak sebagai elemen blok.Anda mungkin mengalami situasi langka di mana logo Anda terlalu kecil. Pendekatan img-responsif tidak memperhitungkan ini, tetapi kami akan melakukannya. Dengan menambahkan atribut "tinggi" ke
.navbar-brand > img
Anda dapat yakin bahwa itu akan naik turun.Jadi untuk menyelesaikan ini saya menggabungkan keduanya dan tampaknya berfungsi dengan baik di semua browser.
DEMO http://codepen.io/bootstrapped/pen/KwYGwq
sumber
Meskipun pertanyaan Anda menarik, saya tidak berharap akan ada satu jawaban untuk itu. Mungkin pertanyaan Anda terlalu luas. Solusi Anda harus bergantung pada: konten lain di navbar (jumlah item), ukuran logo Anda, jika logo Anda bertindak responsif, dll. Menambahkan logo di a (dengan merek navbar) tampaknya merupakan titik awal yang baik. Saya harus menggunakan navbar-brand class karena ini akan menambah padding (atas / bawah) dari 15 piksel.
Saya menguji pengaturan ini di http://getbootstrap.com/examples/navbar/ dengan logo 300x150 piksel.
Layar penuh> 1200:
antara 768 dan 992 piksel (menu tidak diciutkan):
<768 (menu diciutkan)
Selain aspek estetika saya tidak menemukan masalah teknis. Pada layar kecil, logo besar mungkin tumpang tindih atau merusak viewport. Layar antara 768 dan 992 piksel juga memiliki masalah lain ketika konten tidak sesuai dalam satu baris, lihat misalnya: https://github.com/bassjobsen/jamedo-bootstrap-start-theme/issues/18
Navbar default memiliki. Contoh navbar default menambahkan margin bawah 30px sehingga konten navbar Anda tidak boleh tumpang tindih dengan konten halaman Anda. (navbar tetap akan mengalami masalah ketika ketinggian navbar bervariasi).Anda akan memerlukan beberapa css dan permintaan media untuk menyesuaikan navbar dengan kebutuhan Anda pada ukuran layar yang berbeda. Coba persempit pertanyaan Anda. uraikan masalah yang Anda temukan di android.
perbarui lihat http://bootply.com/77512 untuk contoh.
pertukarkan tombol dan logo dalam kode Anda, logo terlebih dahulu (atur float: kiri pada logo)
atur
margin-top
untuk.navbar-collapse ul
. Gunakan tinggi logo dikurangi tinggi navbar, untuk menyelaraskan ke bawah atau (tinggi logo - tinggi navbar) / 2 ke tengahsumber
Instruksi cara membuat navbar bootstrap dengan logo yang lebih besar dari tinggi default (50px):
Contoh dengan logo 100px x 100px, CSS standar:
Hitung ketinggian dan (padding top + padding bottom) dari logo. Di sini 120px (tinggi 100px + bantalan atas (10px) + bantalan bawah (10px))
Goto bootstrap / sesuaikan . Atur bukannya tinggi navbar 50px> 120px (50 + 70) dan navbar-collapse-max-height dari 340px ke 410px (340 + 70). Unduh css.
Dalam contoh ini saya menggunakan navbar ini . Dalam navbar-merek :
tambahkan kelas, misalnya myLogo , dan img (logo Anda)
<a class="navbar-brand myLogo" href="#"><img src="yourLogo.jpg" /></a>
.Tambahkan CSS
.myLogo {padding: 10px; }
Cukup untuk ukuran lainnya.
Contoh
sumber
Yah akhirnya saya punya masalah yang sama, ini solusi saya dan saya mengujinya di situs saya di ketiga browser utama: Chrome, Firefox, dan Internet Explorer.
Pertama-tama jika Anda tidak menggunakan logo berbasis teks maka hapus "navbar-brand" sepenuhnya karena saya menemukan kelas khusus ini menjadi penyebab utama menu nav saya yang runtuh menjadi dua kali lipat.
Berteriaklah ke user3137032 untuk memimpin saya ke arah yang benar.
Anda harus membuat wadah gambar responsif khusus, yang saya sebut tambang "logo"
Ini adalah tanda HTML bootstrap:
Dan kode CSS:
Nilai dalam @ media (max-width: x) dapat bervariasi tergantung pada lebar gambar logo Anda, milik saya adalah 368px. Persentase mungkin perlu diubah juga tergantung pada ukuran logo Anda. Permintaan @media pertama harus menjadi ambang Anda dan milik saya adalah lebar gambar (368px) + ukuran tombol diciutkan (44px) + sekitar 60px dan keluar ke 480px yang merupakan tempat saya memulai penskalaan gambar responsif.
Harap pastikan untuk menghapus sintaks pisau cukur saya dari bagian HTML. Beri tahu saya jika itu memperbaiki masalah Anda, itu memperbaiki masalah saya.
Sunting: Maaf, saya melewatkan masalah ketinggian navbar Anda. Ada beberapa cara untuk melakukannya, secara pribadi saya mengkompilasi KURANG Bootstrap dengan ketinggian navbar yang sesuai, untuk keperluan saya, saya menggunakan 70px, dan tinggi gambar saya adalah 68 px. Cara kedua untuk melakukannya adalah di file bootstrap.css sendiri, cari ".navbar" dan ubah min-height: ke ketinggian logo Anda.
sumber
navbar-brand
melakukannya untuk saya.Solusi saya adalah menambahkan css "display: inline-block" ke img tag.
DEMO: jsfiddle
sumber
Saya menggunakan kelas img-responsif dan kemudian menetapkan lebar maksimum pada
a
elemen. Seperti ini:dan CSS:
sumber
<a>
tag Anda, bukan<img>
tag, sejakimg-responsive
ditetapkanmax-width="100%"
. Bisakah Anda jelaskan bagaimana ini membantu?.image-responsive
dimaksudkan untuk mengubah ukuran gambar berdasarkan WIDTH wadah eksplisit gambar dan bukan HEIGHT yang mengubah ukuran berdasarkan lebar. Jadi terlepas dari berapa banyak upvotes ini sudah mendapatkannya TIDAK AKAN bekerja lihat di sini . Namun, kita dapat menggunakan metode yang sama dengan respons gambar dan menerapkannya pada ketinggian. Jadi hapus .img-responsif dari persamaan dan cukup atur max-height ke navbar-brand . Lihat jawaban saya di sini .Anda harus menggunakan kode karena ini:
Tag kelas A harus "logo" bukan merek navbar.
sumber
Tergantung pada seberapa tinggi Anda ingin logo Anda.
<a>
Ketinggian default di navbar adalah 20px, jadi jika Anda menentukanheight: 20px
pada logo Anda, itu akan cocok dengan baik.Namun itu agak kecil untuk sebuah logo, jadi yang saya pilih adalah ini:
Ini membuat gambar 30px tinggi dan meluruskan gambar secara vertikal dengan menambahkan margin negatif ke atas (5px adalah setengah dari perbedaan antara bantalan pada a dan ukuran gambar).
Secara bergantian Anda bisa mengganti bantalan pada
<a>
elemen, misalnya:sumber
Perbaikan Cepat : Buat kelas untuk Anda
logo
dan aturheight
ke28px
. Ini berfungsi baik dengan navbar di semua perangkat. Perhatikan saya katakan bekerja "BAIK".sumber
Pendekatan saya adalah memasukkan EMPAT gambar berbeda dengan ukuran berbeda untuk ponsel, tablet, desktop, desktop besar tetapi hanya menunjukkan SATU menggunakan kelas utilitas responsif bootstrap, sebagai berikut:
Catatan: Anda dapat mengganti baris yang dikomentari dengan kode yang disediakan. Ganti kode php jika Anda tidak menggunakan wordpress.
Sunting Note2: Ya, ini menambahkan permintaan ke server Anda saat memuat halaman yang mungkin sedikit melambat tetapi jika Anda menggunakan teknik sprite css latar belakang, kemungkinan logo tidak bisa dicetak saat mencetak halaman dan kode di atas harus mendapatkan SEO yang lebih baik.
sumber
visible-SIZE
daria
tag, dan letakkan di tag img.<a class="navbar-brand"><img class="visible-xs"/><img class="visible-sm"/></a>
Anda tidak perlu menambahkan CSS tambahan, karena Bootstrap3 memang menyediakannya. Kecuali Anda memang ingin menambahkannya. Ini adalah kode saya untuk meletakkan logo di sebelah kiri dan tautan ke kanan. Navigasi ini responsif. Lakukan perubahan sesuai keinginan Anda.
HTML:
sumber
Saya juga menerapkannya melalui properti latar belakang css. Ia bekerja sehat dalam nilai lebar apa pun.
sumber
Pendekatan lain adalah untuk menerapkan Bootstrap built-in
.text-hide
kelas bersama dari.navbar-brand
untuk menggantikan merek teks / konten dengan gambar latar belakang.CSS:
HTML:
Ini adalah metode yang sangat konsisten dan membuat gambar Anda terpusat. Untuk menyesuaikan ukuran gambar, yang perlu Anda lakukan adalah menyesuaikan
.navbar-brand
lebar karena ketinggian sudah ditetapkan.Ini demo langsung
sumber
Saya memiliki masalah yang sama. Saya menyelesaikannya seperti ini:
Tidak ada kelas merek navbar. Hasilnya tampak seperti gambar logo yang cocok dengan navbar dan berfungsi seperti tautan. Saya juga merekomendasikan untuk menggunakan kelas navbar-kanan untuk item menu sehingga mereka tidak akan pergi di bawah logo.
sumber
Mungkin ini terlalu sederhana, tapi saya hanya menyalin garis navbar-brand jadi ada dua, gambar dan kemudian teks.
Dan saya membuat gambar yang pas di dalam navbar (kira-kira ½ tingginya).
sumber
Jika menggunakan KURANG, ini berfungsi:
sumber
Kode ini berfungsi sempurna jika Anda perlu melihat merek terpusat dan dengan lebar otomatis di bilah alat. Ini berisi fungsi Wordpress untuk mendapatkan file gambar dari jalur yang benar:
sumber
Tambahkan berikut ini ke
.navbar-brand
kelassumber
kode kerja saya - bootstrap 3.0.3. ketika navbar-toggle, hidden-xs original logo image.
sumber
Anda dapat mencoba menggunakan @media query seperti di bawah ini.
Tambahkan kelas logo terlebih dahulu, kemudian gunakan @ media untuk menentukan tinggi dan lebar logo Anda per ukuran perangkat. Dalam contoh di bawah ini, saya menargetkan perangkat yang memiliki lebar maksimal 320px (iPhone) Anda dapat bermain-main dengan ini sampai Anda menemukan yang paling cocok. Cara mudah untuk menguji: Gunakan chrome atau Firefox dengan elemen inspeksi. Kecilkan browser Anda sejauh mungkin. Amati perubahan ukuran logo berdasarkan @media max width yang Anda tentukan. Uji pada iPhone, perangkat android, iPad dll untuk mendapatkan hasil yang diinginkan.
sumber
Silakan coba kode berikut:
sumber
Gagal membuat jawaban lain berfungsi dalam kasus saya (saya mungkin tidak lulus tes intelijen) dan setelah beberapa percobaan, inilah yang saya gunakan (yang saya percaya sangat dekat dengan default Bootstrap):
Dan dalam file CSS saya telah menambahkan yang berikut ini:
Perhatikan bahwa
@Html.ActionLink()
ini adalah sintaks Razor untuk sebuah<a>
tag. Di mana katanya@Html.ActionLink(...)
ganti saja dengan<a>
tag yang sesuai . Sama di mana dikatakan@Url.Action(...)
ganti dengan URL yang sesuai (tidak ada<a>
tag dalam kasus itu).sumber
Ini bukan semantik tapi saya hanya menggunakan
a
elemen yang ada , mengatur gambar latar belakang, kemudian membuat beberapa variasi untuk resolusi @ 2x, ukuran layar lebih kecil, dll.Kemudian, Anda dapat menggunakan
.text-hide
kelas untuk mendapatkan beberapa teks pada halaman dengan cara mode. Sederhana dan efektif meskipun penggunaan gambar tidak tepat.Berikut ini tautan ke kelas helper untuk penggantian teks:
http://getbootstrap.com/css/#helper-classes
sumber
Jawaban termudah dan terbaik untuk pertanyaan ini adalah menetapkan lebar dan tinggi maks tergantung pada logo Anda, gambar akan menjadi maksimal 50px tinggi tetapi tidak lebih dari 200px.
Ini akan bervariasi tergantung pada ukuran logo Anda dan item bar nav yang Anda miliki.
sumber
Harap mengerti kode atas upaya Anda sendiri: D Ini adalah kode konsep saya dan sudah berfungsi :) Berikut screenshotnya.
sumber
Sebagai gantinya mengganti merek teks, saya dibagi menjadi dua baris seperti pada kode di bawah ini dan memberikan
img-responsive
kelas untuk gambar ......dan di samping itu, saya menambahkan kode css berikut .......
Jika kode saya menyelesaikan masalah Anda, dengan senang hati .....
sumber
// Jangan lupa menambahkan bootstrap di kepala kode Anda.
sumber