Saya menggunakan Bootstrap 3 untuk membangun tata letak responsif di mana saya ingin menyesuaikan beberapa ukuran font sesuai dengan ukuran layar. Bagaimana saya bisa menggunakan kueri media untuk membuat logika semacam ini?
371
Saya menggunakan Bootstrap 3 untuk membangun tata letak responsif di mana saya ingin menyesuaikan beberapa ukuran font sesuai dengan ukuran layar. Bagaimana saya bisa menggunakan kueri media untuk membuat logika semacam ini?
Jawaban:
Bootstrap 3
Berikut adalah penyeleksi yang digunakan dalam BS3, jika Anda ingin tetap konsisten:
Catatan: FYI, ini mungkin berguna untuk debugging:
Bootstrap 4
Berikut adalah penyeleksi yang digunakan dalam BS4. Tidak ada pengaturan "terendah" di BS4 karena "ekstra kecil" adalah default. Yaitu Anda pertama-tama akan mengkode ukuran XS dan kemudian menimpa media ini setelahnya.
Pembaruan 2019-02-11: Info BS3 masih akurat pada versi 3.4.0, BS4 diperbarui untuk grid baru, akurat pada 4.3.0.
sumber
<span class="visible-xs">SIZE XS</span><span class="visible-sm">SIZE SM</span><span class="visible-md">SIZE MD</span><span class="visible-lg">SIZE LG</span>
Berdasarkan jawaban bisio dan kode Bootstrap 3, saya dapat menemukan jawaban yang lebih akurat bagi siapa saja yang ingin menyalin dan menempelkan kueri media lengkap yang diatur ke dalam stylesheet mereka:
sumber
min-width
, tetapi Anda telah menggunakanmax-width
juga, jadi apa bedanya?, Apakah perlu?Jika Anda menggunakan KURANG atau SCSS / SASS dan Anda menggunakan Bootstrap versi KURANG / SCSS, Anda dapat menggunakan variabel juga, asalkan Anda memiliki akses ke sana. Terjemahan KURANG dari jawaban full-decent adalah sebagai berikut:
Ada juga variabel untuk
@screen-sm-max
dan@screen-md-max
, yang masing-masing kurang dari 1 piksel@screen-md-min
dan@screen-lg-min
, masing-masing, biasanya untuk digunakan bersama@media(max-width)
.EDIT: Jika Anda menggunakan SCSS / SASS, variabel mulai dengan
$
bukan@
, jadi itu akan menjadi$screen-xs-max
dll.sumber
$screen-xs-max
dll. (Dan jika Anda menggunakan KURANG / SCSS secara lokal tetapi mengimpor versi CSS dari Bootstrap, Anda sama sekali tidak beruntung.)@screen-tablet
,,@screen-desktop
dan@screen-lg-desktop
telah usang. Mungkin saatnya untuk memperbarui jawaban Anda yang sudah luar biasa. ;-)Ini adalah nilai-nilai dari Bootstrap3:
sumber
and
ketentuannya. @JasonMiller jadi ini bukan "keharusan", itu tergantung pada spesifikasi dan persyaratan templat.Berikut ini dua contoh.
Setelah viewport menjadi lebar 700px atau kurang, buat semua tag h1 20px.
Buat semua 20px h1 sampai viewport mencapai 700px atau lebih besar.
Semoga ini bisa membantu: 0)
sumber
font-size: 20px
untukh1
tag dalam kedua kasus. Untuk pemahaman yang lebih baik Anda mungkin menggunakan yang berbedafont-size
seperti yang ditanyakan. BTW Masih oke.Berikut adalah contoh yang lebih modular menggunakan KURANG untuk meniru Bootstrap tanpa mengimpor lebih sedikit file.
sumber
Berdasarkan jawaban pengguna lain, saya menulis mixin khusus ini untuk penggunaan yang lebih mudah:
Input lebih sedikit
Contoh penggunaan
Input SCSS
Contoh penggunaan:
Keluaran
sumber
Pada Bootstrap v3.3.6 pertanyaan media berikut digunakan yang sesuai dengan dokumentasi yang menguraikan kelas responsif yang tersedia ( http://getbootstrap.com/css/#responsive-utilities ).
Kueri media yang diekstrak dari repositori Bootstrap GitHub dari lebih sedikit file berikut: -
https://github.com/twbs/bootstrap/blob/v3.3.6/less/responsive-utilities.less https://github.com/twbs/bootstrap/blob/v3.3.6/less/variables.less
sumber
Atau Kompas-Sass sederhana:
Contoh:
sumber
perlu diingat bahwa menghindari penskalaan teks adalah alasan utama tata letak responsif. seluruh logika di balik situs responsif adalah membuat tata letak fungsional yang secara efektif menampilkan konten Anda sehingga mudah dibaca dan dapat digunakan pada berbagai ukuran layar.
Meskipun perlu untuk skala teks dalam beberapa kasus, berhati-hatilah untuk tidak membuat miniatur situs Anda dan kehilangan intinya.
inilah contohnya.
Juga perlu diingat 480 viewport telah dijatuhkan di bootstrap 3.
sumber
Kami menggunakan kueri media berikut dalam file Less kami untuk membuat breakpoint kunci dalam sistem grid kami.
lihat juga di Bootstrap
sumber
sumber
Berikut ini adalah solusi satu atap yang lebih mudah, termasuk file responsif yang terpisah berdasarkan permintaan media.
Ini memungkinkan semua logika kueri media dan menyertakan logika hanya harus ada pada satu halaman, loader. Hal ini juga memungkinkan untuk tidak memiliki kueri media mengacaukan stylesheet responsif sendiri.
base.less akan terlihat seperti ini
sm-min.less akan terlihat seperti ini
indeks Anda hanya perlu memuat loader.less
peasy mudah ..
sumber
Bootstrap terutama menggunakan rentang kueri media berikut — atau breakpoint — dalam file sumber Sass kami untuk tata letak, sistem kisi, dan komponen kami.
Perangkat ekstra kecil (ponsel potret, kurang dari 576px) Tidak ada permintaan media
xs
karena ini adalah default di BootstrapPerangkat kecil (ponsel landscape, 576px dan lebih tinggi)
Perangkat menengah (tablet, 768px dan lebih tinggi)
Perangkat besar (desktop, 992px dan lebih tinggi)
Perangkat ekstra besar (desktop besar, 1200px dan lebih tinggi)
Karena kami menulis CSS sumber kami di Sass, semua kueri media kami tersedia melalui Sass mixin:
Tidak ada permintaan media yang diperlukan untuk xs breakpoint karena efektif
@media (min-width: 0) { ... }
Untuk memahaminya secara mendalam, silakan kunjungi tautan di bawah ini
https://getbootstrap.com/docs/4.3/layout/overview/
sumber
sumber
Gunakan kueri media untuk IE;
sumber
:)
Dalam bootstrap terbaru (4.3.1), menggunakan SCSS (SASS) Anda dapat menggunakan salah satu dari @mixin dari
/bootstrap/scss/mixins/_breakpoints.scss
Media setidaknya dengan lebar breakpoint minimum. Tidak ada permintaan untuk breakpoint terkecil. Membuat konten @ berlaku untuk breakpoint yang diberikan dan lebih luas.
@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints)
Media paling banyak lebar breakpoint maksimum. Tidak ada permintaan untuk breakpoint terbesar. Membuat konten @ berlaku untuk breakpoint yang diberikan dan lebih sempit.
@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints)
Media yang membentang beberapa lebar breakpoint. Membuat konten @ berlaku antara min dan max breakpoints
@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints)
Media antara lebar minimum dan maksimum breakpoint. Tidak ada minimum untuk breakpoint terkecil, dan tidak maksimal untuk yang terbesar. Membuat konten @ hanya berlaku untuk breakpoint yang diberikan, bukan viewports yang lebih luas atau lebih sempit.
@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints)
Sebagai contoh:
Dokumentasi:
Selamat coding;)
sumber
Untuk meningkatkan respons utama:
Anda dapat menggunakan atribut media dari
<link>
tag (mendukung permintaan media) untuk mengunduh kode yang dibutuhkan pengguna.Dengan ini, browser akan mengunduh semua sumber daya CSS, terlepas dari atribut media . Perbedaannya adalah bahwa jika kueri media dari atribut media dievaluasi menjadi false, maka file .css dan kontennya tidak akan diblokir.
Oleh karena itu, disarankan untuk menggunakan atribut media dalam
<link>
tag karena itu menjamin pengalaman pengguna yang lebih baik.Di sini Anda dapat membaca artikel Google tentang masalah ini https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-blocking-css
Beberapa alat yang akan membantu Anda untuk mengotomatiskan pemisahan kode css Anda dalam file yang berbeda sesuai dengan pertanyaan media Anda
Webpack https://www.npmjs.com/package/media-query-plugin https://www.npmjs.com/package/media-query-splitting-plugin
PostCSS https://www.npmjs.com/package/postcss-extract-media-query
sumber