Rumah >hujung hadapan web >tutorial css >Menggunakan kelas penolong untuk kering dan skala CSS
Selain semua metodologi ini, ada sesuatu yang dapat membantu kami menulis kering
, kurang berulang kod: kelas penolong (juga dipanggil kelas utiliti).
Konsep ini dibincangkan beberapa ketika dahulu dalam artikel Thierry Koblentz mengenai Smashing Magazine, tetapi saya fikir saya akan menerangkan kaedah dalam kata -kata saya sendiri di sini.Kunci Takeaways
"Rawat kod seperti LEGO. Pecahkan kod ke dalam blok kecil yang paling kecil. " - @csswizardry (melalui @stubbornella) #btconf - Smashing Magazine (@smashingmag) 27 Mei 2013
mari kita lihat contoh mudah tentang apa yang kelihatan seperti kelas utiliti dan bagaimana kita boleh menggunakannya. Lihat coretan kod berikut:
<span><span>.left</span> { float: left; } </span><span><span>.right</span> { float: right; } </span> <span><span>.text-left</span> { text-align: left; } </span><span><span>.text-right</span> { text-align: right; } </span><span><span>.text-center</span> { text-align: center; }</span>di sini kami telah membuat satu set peraturan CSS yang boleh kita gunakan kemudian ketika membina komponen baru. Sebagai contoh jika anda ingin menyelaraskan beberapa kandungan di sebelah kiri, anda boleh menggunakan kelas Text-Left. Begitu juga, anda boleh menggunakan kelas kiri atau kanan untuk mengapung elemen dalam arah yang diperlukan.
mari kita lihat satu lagi contoh kotak yang perlu berada di sebelah kiri dengan kandungan dalamannya berpusat.
kita biasanya melakukan sesuatu seperti ini:
<span><span><span><div</span> class<span>="box"</span>></span> </span><span><span><span></div</span>></span></span>dengan CSS ini:
<span><span>.left</span> { float: left; } </span><span><span>.right</span> { float: right; } </span> <span><span>.text-left</span> { text-align: left; } </span><span><span>.text-right</span> { text-align: right; } </span><span><span>.text-center</span> { text-align: center; }</span>
Sebaliknya, kita dapat mencapai perkara yang sama menggunakan kelas penolong yang boleh diguna semula dan tunggal:
<span><span><span><div</span> class<span>="box"</span>></span> </span><span><span><span></div</span>></span></span>
Perhatikan bagaimana saya mengeluarkan kelas kotak dan sebaliknya menambah kelas yang telah ditetapkan dan pusat teks kami.
Jika anda ingin menukar arah terapung dan menyelaraskan, bukannya melakukan ini pada kelas kotak.
<span><span>.box</span> { </span> <span>float: left; </span> <span>text-align: center; </span><span>}</span>Sistem grid adalah contoh yang baik dari kelas penolong yang digunakan. Berikut adalah contoh dari Grid Yayasan:
Yayasan
<span><span><span><div</span> class<span>="left text-center"</span>></span> </span><span><span><span></div</span>></span></span>menyediakan banyak kelas yang boleh digunakan dan digabungkan bersama untuk mewujudkan sistem grid dengan lebar yang berbeza untuk saiz skrin yang berbeza. Fleksibiliti ini membantu pemaju membuat susun atur baru yang disesuaikan dengan lebih cepat, tanpa mengedit mana -mana CSS untuk grid itu sendiri. Contohnya:
.small-2 dan .large-4 kelas akan menetapkan lebar elemen berdasarkan saiz skrin.
margin dan padding
kita mulakan dengan menentukan pembolehubah (menggunakan sass) untuk unit ruang asas untuk reka bentuk kami. Mari kita mulakan dengan 1EM dan di atasnya kita boleh membuat kelas untuk saiz ruang yang berbeza.
kita boleh memilih nama kelas pendek, seperti dalam kod contoh di bawah dari BASSCSS
<span><span><span><div</span> class<span>="right text-right"</span>></span> </span><span><span><span></div</span>></span></span>
Pilih apa yang berfungsi untuk anda dan pasukan anda. Nama -nama yang panjang jelas akan menjadikan unsur -unsur HTML anda lebih besar, tetapi mereka lebih mudah dibaca berbanding dengan nama pendek, jadi anda mungkin perlu melihat CSS anda untuk mengetahui bagaimana keadaan berfungsi.
<span><span><span><div</span> class<span>="row"</span>></span> </span> <span><span><span><div</span> class<span>="small-2 large-4 columns"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="small-4 large-4 columns"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="small-6 large-4 columns"</span>></span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>Lebar dan Ketinggian
Bayangkan anda mahu menetapkan seksyen menjadi ketinggian penuh di tempat yang berbeza di laman web anda. Cara tradisional yang kami lakukan ini adalah seperti ini:
dan CSS kami:
<span><span>$base-space-unit: 1em;</span> </span> <span>// Top margin </span><span>.margin-top-none { margin-top: 0; } </span><span>.margin-top-quarter { margin-top: $base-space-unit / 4; } </span><span>.margin-top-half { margin-top: $base-space-unit / 2; } </span><span>.margin-top-one { margin-top: $base-space-unit; } </span><span>.margin-top-two { margin-top: $base-space-unit * 2; } </span> <span>// Top padding </span><span>.padding-top-none { padding-top: 0; } </span><span>.padding-top-quarter { padding-top: $base-space-unit / 4; } </span><span>.padding-top-half { padding-top: $base-space-unit / 2; } </span><span>.padding-top-one { padding-top: $base-space-unit; } </span><span>.padding-top-two { padding-top: $base-space-unit * 2; }</span>
untuk bahagian lain kita akan mengulangi kod:
<span><span>.m0</span> { margin: 0 } </span><span><span>.mt0</span> { margin-top: 0 } </span><span><span>.mr0</span> { margin-right: 0 } </span><span><span>.mb0</span> { margin-bottom: 0 } </span><span><span>.ml0</span> { margin-left: 0 }</span>
dan CSS:
<span><span><span><div</span> class<span>="contact-section"</span>></span> </span> <span><!-- Content here... --> </span><span><span><span></div</span>></span></span>
tetapi kita dapat mengurangkan semua ini dengan satu kelas yang dipanggil ketinggian penuh:
<span><span>.contact-section</span> { height: 100%; }</span>
di bawah adalah beberapa contoh yang sama, termasuk kelas ketinggian penuh yang digunakan di atas:
<span><span><span><div</span> class<span>="services-section"</span>></span> </span> <span><!-- Content here... --> </span><span><span><span></div</span>></span></span>
kedudukan dan z-indeks
<span><span>.services-section</span> { height: 100%; }</span>Ciri-ciri yang berkaitan dengan kedudukan boleh digabungkan dengan sifat lain seperti Z-indeks untuk membuat susun atur yang kompleks. Kita boleh membuat satu set kelas untuk menetapkan kedudukan tepat dari mana -mana elemen berhubung dengan viewport atau elemen nenek moyang (kanan, kiri, kiri atas, dll):
Kelas penolong "pin" diilhamkan oleh CSS Mapbox.
mari kita melanjutkan contoh ketinggian penuh untuk mengandungi elemen yang diposisikan di sebelah kanan bawah.
<span><span>.left</span> { float: left; } </span><span><span>.right</span> { float: right; } </span> <span><span>.text-left</span> { text-align: left; } </span><span><span>.text-right</span> { text-align: right; } </span><span><span>.text-center</span> { text-align: center; }</span>
Demo
Dengan menggabungkan lebih daripada satu kelas, kita boleh mendapatkan hasil yang diperlukan dalam kod kurang. Jika anda ingin meletakkan elemen dalaman di bahagian atas kanan, anda boleh menggunakan pin-top-kanan dan bukannya pin-bawah-kanan. Anda mungkin perasan dalam kod di atas, saya juga menambah satu lagi kelas penolong: kelas padding-one memastikan elemen tidak dibuang ke tepi bekas atau viewport.
Unsur -unsur terapung kiri atau kanan boleh dilakukan menggunakan kelas kiri atau kanan. Kelas ClearFix yang terkenal boleh digunakan pada elemen induk untuk membersihkan terapung, ditunjukkan di bawah menggunakan pemilih induk Sass:
<span><span><span><div</span> class<span>="box"</span>></span> </span><span><span><span></div</span>></span></span>
Demo
kita boleh membuat teks dan kandungan lain sejajar dengan mana-mana arah, menggunakan kelas penolong berasaskan Align:
<span><span>.box</span> { </span> <span>float: left; </span> <span>text-align: center; </span><span>}</span>
Kelas penglihatan mengawal penglihatan elemen, bergantung pada saiz skrin, orientasi peranti, skrin sentuh, atau faktor lain. Ini boleh berguna dalam reka bentuk responsif.
Kami boleh mempunyai kelas berikut di dalam pertanyaan media kami:
<span><span><span><div</span> class<span>="left text-center"</span>></span> </span><span><span><span></div</span>></span></span>
dan dalam html kami:
<span><span><span><div</span> class<span>="right text-right"</span>></span> </span><span><span><span></div</span>></span></span>
elemen di atas akan disembunyikan pada skrin kecil tetapi akan dapat dilihat pada skrin yang lebih besar.
kita juga boleh menggunakan kelas ini untuk mengawal elemen pada peranti sentuh:
<span><span><span><div</span> class<span>="row"</span>></span> </span> <span><span><span><div</span> class<span>="small-2 large-4 columns"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="small-4 large-4 columns"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="small-6 large-4 columns"</span>></span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
Dalam contoh di atas, kelas .touch akan datang dari kelas yang ditambahkan ke elemen oleh Modernizr.
Contoh yang baik dari kelas penglihatan adalah yang ada di Yayasan dan Bootstrap's Responsive-Utilities.
dalam tipografi, anda boleh membuat kelas untuk perkara seperti berat fon dan manipulasi teks, seperti teks ellipsis.
<span><span>$base-space-unit: 1em;</span> </span> <span>// Top margin </span><span>.margin-top-none { margin-top: 0; } </span><span>.margin-top-quarter { margin-top: $base-space-unit / 4; } </span><span>.margin-top-half { margin-top: $base-space-unit / 2; } </span><span>.margin-top-one { margin-top: $base-space-unit; } </span><span>.margin-top-two { margin-top: $base-space-unit * 2; } </span> <span>// Top padding </span><span>.padding-top-none { padding-top: 0; } </span><span>.padding-top-quarter { padding-top: $base-space-unit / 4; } </span><span>.padding-top-half { padding-top: $base-space-unit / 2; } </span><span>.padding-top-one { padding-top: $base-space-unit; } </span><span>.padding-top-two { padding-top: $base-space-unit * 2; }</span>
Setiap aplikasi mempunyai panduan dan peraturan jenama yang berbeza yang dapat kita tentukan dalam kelas yang pada dasarnya 'kulit' antara muka kita. Ini termasuk warna teks, latar belakang, dan banyak lagi.
Mari lihat bagaimana ini dapat diterjemahkan ke kod. Pertama mari kita tentukan pembolehubah kita dengan sass:
<span><span>.m0</span> { margin: 0 } </span><span><span>.mt0</span> { margin-top: 0 } </span><span><span>.mr0</span> { margin-right: 0 } </span><span><span>.mb0</span> { margin-bottom: 0 } </span><span><span>.ml0</span> { margin-left: 0 }</span>
Kemudian kami menentukan kelas penolong kami, berdasarkan pembolehubah:
<span><span><span><div</span> class<span>="contact-section"</span>></span> </span> <span><!-- Content here... --> </span><span><span><span></div</span>></span></span>
Dua contoh yang baik menggunakan kelas penolong warna dan latar belakang terdapat di Mapbox dan projek kit starter web Google.
<span><span>.contact-section</span> { height: 100%; }</span>
senarai
<span><span>.left</span> { float: left; } </span><span><span>.right</span> { float: right; } </span> <span><span>.text-left</span> { text-align: left; } </span><span><span>.text-right</span> { text-align: right; } </span><span><span>.text-center</span> { text-align: center; }</span>
Kelas penolong boleh digunakan untuk menambah sempadan ke elemen, sama ada untuk semua pihak atau satu sisi. Jadi CSS/SASS anda mungkin kelihatan seperti ini:
<span><span><span><div</span> class<span>="box"</span>></span> </span><span><span><span></div</span>></span></span>
kelas penolong berikut memberi kita keupayaan untuk menggunakan nilai yang berbeza untuk harta paparan CSS:
<span><span>.box</span> { </span> <span>float: left; </span> <span>text-align: center; </span><span>}</span>
Mengikuti prinsip abstraksi ini mungkin merupakan pendekatan yang jauh berbeza dari apa yang anda sudah biasa ketika mengarang CSS. Tetapi berdasarkan pengalaman saya, dan orang lain saya boleh mengatakan ini adalah pendekatan yang sangat baik untuk dipertimbangkan pada projek anda yang seterusnya.
anda boleh menyemak semua kelas penolong dari siaran ini di perpustakaan baru yang saya buat yang dipanggil CSS-Helpers.
anda boleh belajar dari dan meneroka struktur projek berikut:
.center-text {
text-align: center; Anda kemudian boleh memohon kelas ini ke mana -mana elemen HTML untuk memusatkan teksnya. kelas ke elemen HTML tunggal. Ini membolehkan anda menggabungkan gaya dan kesan yang berbeza tanpa perlu membuat kelas berasingan untuk setiap kombinasi. Sebagai contoh, jika anda mempunyai kelas penolong untuk teks yang berpusat dan menukar warnanya, anda boleh menggunakan kedua -dua elemen yang sama seperti ini:
Ini adalah beberapa teks.
Ya, anda boleh menggunakan kelas penolong dengan preprocessors CSS seperti sass atau kurang. Malah, alat ini boleh menjadikannya lebih mudah untuk membuat dan mengurus kelas penolong. Sebagai contoh, SASS membolehkan anda menggunakan mixins, yang seperti kelas penolong yang boleh menerima argumen. Ini membolehkan anda membuat gaya yang lebih fleksibel dan boleh diguna semula. Dengan merangkumi gaya biasa dalam kelas yang boleh diguna semula, anda boleh menggunakan gaya ini dengan mudah merentasi unsur -unsur dan komponen yang berbeza. Ini menjadikan kod anda lebih modular dan berskala, seperti yang anda boleh tambahkan, mengeluarkan, atau mengubah suai gaya tanpa menjejaskan bahagian lain kod anda. Tambahan pula, kelas penolong boleh membantu anda mengekalkan konsistensi dalam reka bentuk anda apabila projek anda berkembang.
Atas ialah kandungan terperinci Menggunakan kelas penolong untuk kering dan skala CSS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!