CSS modern untuk dinosaurus. Bilah kemajuan di CSS. Logo CSS murni

Bagian situs ini sepenuhnya dikhususkan untuk dua bahasa untuk membuat situs, yaitu HTML dan CSS. Di sini Anda dapat belajar bahasa selangkah demi selangkah, mempelajari semuanya mulai dari dasar hingga momen tersulit.

Bagian ini dibangun berdasarkan prinsip mempelajari materi secara bertahap, oleh karena itu, sebelum setiap judul pelajaran HTML dan CSS, ada nomor yang sesuai dengan nomor urut pelajaran. Hal ini wajar jika Anda ingin mempelajari semuanya dari dasar dan tidak membuat kepala Anda kacau. Jika Anda sudah mengetahui sesuatu tentang bahasa HTML dan CSS, maka di sini Anda juga dapat menemukan pengetahuan yang Anda lewatkan, atau memperdalam apa yang telah Anda pelajari.

DI DALAM bagian ini Pelajaran tentang standar bahasa HTML5 dan CSS3 telah diposting, masing-masing, jika ada versi yang lebih baru dari bahasa-bahasa ini, itu juga akan tercermin dalam pelajaran baru di bagian ini, dan Anda pasti akan mengetahuinya.



Mungkin setiap orang yang pernah mengenal pembuatan website setidaknya sekali dalam hidupnya pasti pernah mendengar tentang kombinasi seperti html dan css, saya yakin dapat mengatakan bahwa jika Anda ingin membuat website sendiri, maka Anda tidak dapat melakukannya tanpa pengetahuan tentang ini. dua hal.

Setelah Anda memiliki pemahaman umum tentang apa yang ada di kepala Anda, Anda jelas memiliki gambaran yang beragam, dan menurut saya ini tidak mengejutkan. Saatnya langsung beralih ke praktik dan membuat dokumen HTML pertama Anda.

Seperti bahasa html, CSS memiliki karakteristik, aturan, dan strukturnya sendiri. Dalam pelajaran ini saya akan bercerita tentang konsep dasar bahasa CSS, strukturnya, desainnya, dan kita akan melakukan hal pertama tabel CSS gaya dan pelajari cara menghubungkan lembar gaya ke dokumen html.

Selector dalam CSS adalah dasar dari bahasa itu sendiri dan mempelajari serta memahaminya sangatlah penting, jadi dalam pelajaran ini saya akan memberi tahu Anda tentang beberapa jenis selector lagi dan menjelaskan kemampuannya.

Poin yang sangat penting dalam membuat situs web adalah bekerja dengan teks, dan seperti yang Anda pahami, Anda juga harus bisa bekerja dengan teks dalam html, dan mengetahui tag apa saja yang ada dan bagaimana penggunaannya.

Setelah Anda mempelajari semua tag HTML untuk bekerja dengan teks, sekarang saatnya beralih langsung ke CSS bekerja dengan teks, yang akan memperluas pengetahuan dan kemampuan Anda secara signifikan.

Di CSS jumlah yang sangat besar semua jenis properti yang mudah digunakan dan berubah secara kualitatif dan kami terus mempelajari CSS bekerja dengan teks dan dalam pelajaran ini, kami akan mempelajari topik bekerja dengan teks dan melihat properti teks baru.

Bekerja dengan gambar saat membuat dari situs web, salah satunya poin-poin penting, baik saat membuat desain, maupun saat sekadar menata atau menulis materi apa pun untuk situs Anda.

CSS secara signifikan memperluas kemungkinan bekerja dengan objek html apa pun; dalam pelajaran ini saya ingin memberi tahu Anda secara rinci tentang parameter yang dapat diterapkan pada gambar.

Koleksi ini berisi fitur CSS terbaik dan berkualitas tinggi. Di sini Anda dapat menemukan berbagai contoh demo dan teknik yang menakjubkan dari perancang dan perancang tata letak terkenal yang mencoba membuktikan bahwa sekarang mungkin untuk melakukan hampir semua hal hanya dengan menggunakan CSS murni. Anda juga dapat menemukan beberapa pelajaran di sini yang memberi tahu Anda secara detail cara membuat kreasi seperti itu. Semoga koleksi ini bermanfaat bagi Anda.

Awan 3D CSS

Dalam demo ini Anda akan dapat membuat dan mengedit awan mewah dalam 3D. Awan CSS ini memperjelas kepada kita bahwa kemungkinan teknologi web hampir tidak terbatas.

Logo CSS murni

Ini adalah contoh logo yang dibuat hanya dengan CSS murni. Coba pikirkan, tidak ada gambar yang digunakan dalam pembuatannya. Itu hanya sesuatu.

Alfabet dengan animasi CSS

Contoh bagus dan artistik dalam menggunakan CSS dalam alfabet

Navigasi 3D untuk situs

Bilah navigasi situs yang sederhana namun sangat stylish, tentunya dibuat hanya dengan menggunakan CSS3. tidak ada gambar atau skrip.

Google Doodle dengan CSS

Salah satu dari sekian banyak coretan dari mesin pencari Google, dibuat dengan CSS. Ini adalah contoh yang bagus penggunaan berkualitas Animasi CSS

Penggeser

Penggeser gambar yang dibuat dengan baik dan berkualitas tinggi. Ditambah 4 contoh di demo.

Cincin animasi ganda

Cincin animasi dan warna-warni yang indah dengan tidak banyak kode CSS

Buram di CSS

Menurut saya filter ini sangat diperlukan, apalagi dibuat menggunakan CSS murni. Dengan menggunakan blur, Anda dapat menarik perhatian pengguna ke titik tertentu.

Panduan Lengkap Flexbox

Artikel ini membahas tentang blok Flexbox responsif. Ini berbicara sepenuhnya tentang blok-blok ini, meskipun artikelnya dalam bahasa Inggris.

Menu penuh warna dan animasi di CSS3

Menu tarik-turun yang indah untuk situs web dengan ikon. Nilai tambah yang besar adalah seluruhnya dibuat dalam CSS.

Filter CSS

Materi berkualitas tinggi dalam bahasa Inggris, yang membahas tentang penggunaan filter CSS pada gambar.

formulir CSS

Posting tentang formulir CSS dengan banyak contoh

Bilah kemajuan di CSS

Pelajaran tentang cara membuat bilah kemajuan bergaya menggunakan CSS dan animasi murni. Anda juga dapat melihat contoh dan mendownload sumbernya.

Animasi - Animate.css

Proyek animasi CSS paling populer di Internet saat ini. Dan mungkin yang paling sederhana dan berkualitas tinggi, dan juga gratis.

Memuat indikator - Spinkit

Sejujurnya, indikator-indikator ini sudah terlihat di blog, tapi menurut saya indikator-indikator ini layak untuk ditunjukkan lagi kepada Anda. Karena ini adalah indikator CSS terindah di Internet.

Tombol

Saat ini sulit untuk mengejutkan dengan tombol CSS, tetapi ini adalah pilihan yang cukup baik

Generator untuk membuat sakelar

Kecil dan internet berkualitas tinggi sebuah aplikasi yang dapat digunakan untuk membuat sakelar cantik untuk digunakan di situs.

Keterangan alat

Pustaka CSS untuk tooltip gratis - Hint.css

Skema warna

Skema warna untuk orang yang tidak suka mempelajari kode

22/12/12 7,9K

CSS diluncurkan pada tahun 1997 untuk membantu pengembang situs web merancang dan membuat halaman web yang menarik. Cascading Style Sheets (CSS) adalah jenis bahasa yang digunakan untuk mengubah format dan tampilan dokumen tertulis. Ada berbagai jenis CSS yang banyak digunakan dan didukung oleh semua browser.

Saat Anda mulai menggunakan CSS, Anda menemui sejumlah kesulitan. Tapi ada trik yang berguna, meningkatkan proses CSS dari awal hingga akhir, dan memungkinkan Anda mencapai kode yang benar-benar kompeten.

3 Jenis Utama Style Sheet CSS

Sebaris - kode cocok dengan tag dokumen dan hanya memengaruhinya.

1

Tertanam - kode “tertanam” di header dokumen. Ini hanya mempengaruhi halaman di mana ia “disematkan”.

1

Eksternal—style sheet dibuat dalam dokumen terpisah. Mereka kemudian ditautkan ke dokumen web lain dan memengaruhi dokumen apa pun yang ditautkan ke dokumen tersebut.

1

Ada 15 praktik terbaik untuk bekerja dengan CSS.

Jaga semuanya tetap teratur

Mengikuti pesanan tertentu memerlukan biaya, namun mempunyai efek positif. Ini sangat penting ketika menggunakan CSS. Daripada menuliskan kode-kode dalam urutan kacau yang terlintas di benak Anda, lebih baik mengatur penyimpanan kode menurut pola tertentu.

Anda harus mulai dengan poin yang paling umum dan kurang penting, lalu beralih ke poin yang lebih penting. Pendekatan ini menciptakan struktur logis yang membuat pengeditan CSS di masa depan menjadi lebih mudah. Menggunakan diagram dan struktur sederhana berguna tidak hanya untuk pengeditan di masa depan, tetapi juga untuk pengembang di masa depan.

Hindari CSS sebaris

Meskipun CSS sebaris berguna untuk beberapa kegunaan, hal ini harus dihindari karena beberapa alasan tertentu. Salah satu argumen utamanya adalah gaya inline tidak memisahkan konten dari desain. Hal ini membuat desain dan pengembangan menjadi sulit. Alasan lainnya adalah gaya ini lebih sulit dipertahankan.

Jika perubahan perlu dilakukan pada kode gaya sebaris, perubahan tersebut perlu dilakukan pada setiap halaman yang memuatnya. Terakhir, gaya CSS sebaris tidak mudah dipahami dan meningkatkan ukuran halaman.

Pisahkan konten dari desain

Salah satu argumen utama yang mendukung penggunaan CSS adalah bahwa kode dan HTML disimpan secara terpisah - hal ini memudahkan perancang tata letak untuk menemukan dan memeliharanya. Ini adalah solusi yang baik, terutama mengingat fakta bahwa perancang situs web belum tentu merupakan pengembang konten.

Tanggal, judul dan tanda tangan

Saat Anda perlu memahami sesuatu tentang CSS, komentar di bagian atas kode Anda bisa sangat membantu. Terutama saat mendesain tema dan template untuk orang lain. Ini juga merupakan praktik yang baik untuk menambahkan kode contoh warna ke awal kode. Ini akan menghemat banyak waktu untuk mengedit dan mengubah. Anda tidak perlu mengetahui kode warnanya. Yang perlu Anda lakukan hanyalah menyalinnya.

1 /*====== 2 Tim Onextrapixel 3 Hak cipta 2011 OXP 4 Ditulis untuk - www.onextrapixel.com 5 6 contoh warna 7 ------------- 8 13437a - biru tua 9 1d74be - biru pertengahan 10 e1e1e1 - abu-abu muda 11 a3a4a4 - abu-abu pertengahan 12 8a8a8a - abu-abu 13 ======== */

Simpan perpustakaan templat Anda

Jika suatu struktur sering digunakan, mengapa tidak menyimpan salinannya? Hal ini akan memungkinkan lain kali dalam situasi yang sama untuk tidak memulai dari awal. Untuk melakukan ini, ekstrak semua kode yang tidak dibagikan dan simpan file sebagai template CSS untuk digunakan nanti.

Gunakan Pintasan CSS

Untuk memuat stylesheet Anda dengan cepat dan menghemat waktu, gunakan pintasan saat membuat kode CSS. Trik pengkodean CSS yang bagus ini akan membuat style sheet Anda rapi dan jelas.

Alih-alih:

Anda harus menulis ini:

1 #krayon ( 2 margin: 8px 7px 0px 5px; // masing-masing nilai atas, kanan, bawah dan kiri. 3 )

Gunakan teknik penamaan yang berguna

Seperti disebutkan sebelumnya, salah satu alasan terbaik menggunakan CSS adalah kemampuannya untuk memisahkan gaya dari konten. CSS benar-benar memudahkan untuk mendesain ulang situs web tanpa mempengaruhi HTML. Jika unsur-unsur diberi nama sedemikian rupa sehingga akan sulit untuk membedakannya di kemudian hari, hal ini akan menimbulkan kesulitan dan membuang-buang waktu. Penting untuk menggunakan penamaan elemen yang relevan yang sederhana namun dapat dimengerti. Dalam situasi apa pun Anda tidak boleh memberi nama kolom sebagai "kolom kiri", karena selama operasi selanjutnya Anda mungkin bingung di mana letak bagian kode yang bertanggung jawab atas konten, dan di mana letak langsung tata letaknya.

Gunakan tanda hubung sebagai pengganti garis bawah

Saat menggunakan browser versi lama, CSS rusak atau tidak berfungsi sama sekali jika menggunakan garis bawah. Menggunakan tanda hubung sebagai pengganti garis bawah menghasilkan kompatibilitas yang lebih baik dengan browser lama dan lebih sedikit error.

Jangan ulangi dirimu sendiri

Salah satu trik CSS terbaik untuk membuat hidup Anda lebih mudah adalah dengan menggunakan steno jika memungkinkan. Selalu mencari cara untuk mengelompokkan elemen serupa yang dapat menggunakan ukuran font, margin, dan warna yang sama. Memiliki pemahaman yang jelas tentang bagaimana CSS akan menafsirkan pintasan ini. Urutan melihatnya mirip dengan pergerakan jarum jam dari 12 - atas, kanan, bawah lalu kiri.

Lebih efisien dari ini:

1 h1 ( 2 margin: 1em 0 2em 0; 3 ukuran font: 1em; 4 warna: #222; 5 ) 6 7 h2 ( 8 margin: 1em 0 2em 0; 9 ukuran font: 1em; 10 warna: #222 ;

Hindari menggunakan gambar yang sangat besar

Menggunakan gambar besar sebagai latar belakang halaman web akan meningkatkan waktu buka halaman. Solusi yang baik adalah dengan menggunakan gambar kecil, dan jika memungkinkan, menggabungkannya dengan fitur CSS jika diperlukan.

1 isi ( 2 latar belakang:url(bg.jpg) ulangi-x; 3 )

Hilangkan kode yang berlebihan

Menggunakan beberapa tips di atas akan sangat membantu memperkecil ukuran stylesheet Anda. Ini akan menyebabkan halaman dimuat lebih cepat. Selain itu, style sheet yang lebih kecil lebih mudah dipelihara dan diperbarui. Selalu hapus kode yang berlebihan dan gabungkan jika memungkinkan.

Trik lain untuk memperkecil tabel adalah dengan tidak mendefinisikan nol sebagai satuan pengukuran. Jika margin harus diatur ke 0, maka tidak perlu menulis 0px atau 0cm. CSS akan memahami bahwa 0 adalah nol, apapun unitnya.

Validasi CSS

Jika terjadi kesalahan saat menyusun kode, Anda perlu meluangkan waktu untuk menemukan dan memperbaikinya. Untuk menghemat waktu, gunakan Validator CSS W3C untuk membantu Anda menemukan beberapa kesalahan CSS yang paling umum. Ini adalah alat gratis dan sangat nyaman.

Gunakan fungsi Reset CSS

Dengan menggunakan Reset CSS, inkonsistensi antar browser dapat dihindari. Dalam praktiknya, hal ini penting untuk menghapus bidang yang tidak kompatibel, serta ketidakcocokan atribut lainnya yang menyebabkan halaman web terlihat berbeda di browser berbeda. Dengan menggunakan fungsi Reset CSS, Anda akan mencapai konsistensi halaman di berbagai browser.

html,body,iv,span,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pra,a,abbr,akronim,alamat,besar,kutip,kode,del,dfn,em,font, img,ins,kbd,q,s,samp,kecil,strike,kuat,sub,sup, tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption, tbody,tfoot,thead,tr,th,td(margin:0; padding:0; border:0; outline:0; font-weight:inherit; font-style:inherit; font-size:100%; font-family :mewarisi; perataan vertikal:garis dasar; ) 2:fokus ( garis besar:0; ) 3 badan ( tinggi garis:1; warna:#000; latar belakang:#fff; ) 4 ol,ul ( gaya daftar:tidak ada; ) 5 tabel ( border-collapse:separate; border-spacing:0; ) 6 caption,th,td ( text-align:left; font-weight:normal; )

Tulis untuk Gecko terlebih dahulu, lalu sesuaikan untuk IE dan Webkit

Biasanya, jika CSS berfungsi dengan benar untuk browser Gecko (Netscape, Firefox Mozilla, Camino, Flock), kemungkinan besar CSS akan berfungsi dengan baik untuk browser lain - IE dan Webkit (Safari, Chrome). Untuk menghemat waktu dan kegelisahan saat mencoba mencari tahu kesalahan pengkodean, lebih baik memulai dengan menulis CSS untuk browser Gecko.

Hati-hati

Merupakan kebiasaan yang baik untuk memisahkan style sheet khusus browser satu sama lain, termasuk JavaScript, komentar bersyarat, dan kode sisi server yang diperlukan untuk melakukannya.
Metode ini sangat bagus untuk menghindari serangan hacker pada core style sheet.
Ini juga penting untuk menjaga agar CSS tetap dapat dikelola.

Kesimpulan

Ada banyak manfaat menggunakan CSS. Tidak hanya membuat halaman dimuat dengan cepat, tetapi ketika Anda menggunakan 15 trik CSS terbaik di atas, tidak hanya membuat hidup Anda lebih mudah, tetapi juga mendesain dan mengedit tema dan template. Penggunaan CSS memberikan keuntungan ketika bekerja dengan Google. Mesin pencari memberi bobot lebih pada konten di bagian atas dokumen HTML. Saat laba-laba mesin pencari merayapi HTML suatu situs web, mereka melihat konten yang muncul lebih dulu. Dengan menggunakan CSS, mudah untuk membuat tata letak yang menampilkan konten terlebih dahulu, diikuti dengan kode sumber laman lainnya.

Dengan buruk

CSS (Cascading Style Sheets), atau lembar gaya berjenjang, digunakan untuk mendeskripsikan tampilan dokumen yang ditulis dalam bahasa markup. Gaya CSS biasanya digunakan untuk membuat dan menata elemen halaman web dan antarmuka pengguna yang ditulis dalam HTML dan XHTML, namun juga dapat diterapkan pada semua jenis dokumen XML, termasuk XML, SVG, dan XUL.

Lembar gaya berjenjang menjelaskan aturan untuk memformat elemen menggunakan properti dan nilai yang diizinkan untuk properti tersebut. Untuk setiap elemen, Anda dapat menggunakan sekumpulan properti terbatas; properti lain tidak akan berpengaruh apa pun padanya.

Deklarasi gaya terdiri dari dua bagian: elemen halaman web − pemilih, dan perintah pemformatan - blok iklan. Pemilih memberi tahu browser elemen mana yang akan diformat, dan blok deklarasi (kode dalam kurung kurawal) mencantumkan perintah pemformatan - properti dan nilainya.


Beras. 1. Struktur deklarasi gaya CSS

Jenis-jenis cascading style sheet dan spesifikasinya

1. Jenis style sheet

1.1. Lembar gaya eksternal

Lembar gaya eksternal adalah file teks dengan ekstensi .css, yang berisi sekumpulan gaya CSS untuk elemen. File dibuat dalam editor kode, seperti halaman HTML. File hanya dapat berisi gaya, tanpa markup HTML. Style sheet eksternal terhubung ke halaman web menggunakan tag , terletak di dalam bagian . Gaya ini berfungsi untuk semua halaman situs.

Anda dapat melampirkan beberapa style sheet ke setiap halaman web dengan menambahkan beberapa tag secara berurutan , menunjukkan tujuan style sheet ini dalam atribut tag media. rel="stylesheet" menentukan jenis tautan (tautan ke lembar gaya).

Atribut type="text/css" tidak diperlukan oleh standar HTML5, sehingga dapat dihilangkan. Jika atributnya hilang, nilai defaultnya adalah type="text/css" .

1.2. Gaya dalaman

Gaya dalaman tertanam dalam suatu bagian Dokumen HTML dan didefinisikan di dalam tag. Gaya internal lebih diutamakan daripada gaya eksternal, tetapi lebih rendah daripada gaya sebaris (ditentukan melalui atribut style).

...

1.3. Gaya bawaan

Saat kita menulis gaya sebaris, kita menulis kode CSS ke dalam file HTML, langsung di dalam tag elemen menggunakan atribut style:

Perhatikan teks ini.

Gaya seperti itu hanya memengaruhi elemen yang ditetapkannya.

1.4. @ aturan impor

@ aturan impor Memungkinkan Anda memuat style sheet eksternal. Agar arahan @import berfungsi, arahan tersebut harus muncul di style sheet (eksternal atau internal) sebelum semua aturan lainnya:

Aturan @import juga digunakan untuk menyertakan font web:

@import url(https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,cyrillic);

2. Jenis penyeleksi

Penyeleksi mewakili struktur halaman web. Mereka membantu membuat aturan untuk memformat elemen halaman web. Selector dapat berupa elemen, kelas dan pengidentifikasinya, serta kelas semu dan elemen semu.

2.1. Pemilih universal

Cocok dengan elemen HTML apa pun. Misalnya, * (margin: 0;) akan mengatur ulang margin untuk semua elemen situs. Pemilih juga dapat digunakan dalam kombinasi dengan kelas semu atau elemen semu: *:after (CSS style) , *:checked (CSS style) .

2.2. Pemilih elemen

Pemilih elemen memungkinkan Anda memformat semua elemen dari jenis tertentu di semua halaman situs. Misalnya, h1 (font-family: Lobster, kursif;) akan mengatur gaya pemformatan keseluruhan untuk semua judul h1.

2.3. Pemilih kelas

Pemilih kelas memungkinkan Anda menyetel gaya untuk satu atau lebih elemen dengan nama kelas yang sama, ditempatkan di tempat berbeda pada halaman atau di halaman situs berbeda. Misalnya, untuk membuat judul dengan kelas headline, Anda perlu menambahkan atribut class dengan nilai headline pada tag pembuka

dan atur gaya untuk kelas yang ditentukan. Gaya yang dibuat menggunakan kelas dapat diterapkan ke elemen lain, tidak harus bertipe tersebut.

Petunjuk penggunaan komputer pribadi

.headline ( transformasi teks: huruf besar; warna: biru muda; )

2.4. pemilih ID

Pemilih ID memungkinkan Anda memformat satu elemen tertentu. Idnya harus unik dan hanya bisa muncul satu kali dalam satu halaman.

#sidebar ( lebar: 300px; float: kiri; )

2.5. Pemilih keturunan

Pemilih turunan menerapkan gaya ke elemen dalam elemen penampung. Misalnya, ul li (transformasi teks: huruf besar;) - akan memilih semua elemen li yang merupakan turunan dari semua elemen ul.

Jika Anda ingin memformat turunan dari elemen tertentu, Anda perlu memberikan kelas gaya pada elemen tersebut:

p.first a (warna: hijau;) - gaya ini akan diterapkan ke semua tautan turunan paragraf dengan kelas pertama;

p .first a (warna: hijau;) - jika Anda menambahkan spasi, tautan yang terletak di dalam tag kelas .first yang merupakan turunan dari elemen akan diberi gaya

First a (color: green;) - gaya ini akan diterapkan ke tautan mana pun yang terletak di dalam elemen lain, yang ditunjuk oleh class.first .

2.6. Pemilih anak

Elemen anak adalah anak langsung dari elemen yang memuatnya. Satu elemen dapat memiliki beberapa elemen turunan, namun setiap elemen hanya dapat memiliki satu elemen induk. Pemilih anak memungkinkan Anda menerapkan gaya hanya jika elemen anak muncul tepat setelah elemen induk dan tidak ada elemen lain di antara elemen tersebut, yaitu elemen anak tidak bersarang di dalam elemen lainnya.
Misalnya, p > strong akan memilih semua elemen kuat yang merupakan anak dari elemen p.

2.7. Pemilih saudara perempuan

Persaudaraan terjadi antara unsur-unsur yang memiliki orangtua yang sama. Pemilih saudara memungkinkan Anda memilih elemen dari sekelompok elemen pada level yang sama.

h1 + p - akan memilih semua paragraf pertama segera setelah tag apa pun

tanpa mempengaruhi paragraf lainnya;

h1 ~ p - akan memilih semua paragraf yang merupakan saudara dari judul h1 mana pun dan segera setelahnya.

2.8. Pemilih atribut

Pemilih atribut memilih elemen berdasarkan nama atribut atau nilai atribut:

[atribut] - semua elemen yang berisi atribut yang ditentukan - semua elemen yang atribut altnya ditentukan;

selector[atribut] - elemen jenis ini yang berisi atribut yang ditentukan, img - hanya gambar yang atribut altnya ditentukan;

selector[attribute="value"] - elemen jenis ini berisi atribut tertentu dengan nilai tertentu, img - semua gambar yang judulnya mengandung kata bunga;

selector[attribute~="value"] - elemen yang sebagian mengandung nilai tertentu, misalnya, jika beberapa kelas ditentukan untuk elemen yang dipisahkan oleh spasi, p - paragraf yang nama kelasnya berisi fitur ;

selector[attribute|="value"] - elemen yang daftar nilai atributnya dimulai dengan kata yang ditentukan, p - paragraf yang nama kelasnya feature atau dimulai dengan feature ;

selector[attribute^="value"] - elemen yang nilai atributnya dimulai dengan nilai yang ditentukan, a - semua tautan dimulai dengan http://;

selector[attribute$="value"] - elemen yang nilai atributnya diakhiri dengan nilai yang ditentukan, img - semua gambar dalam format png;

selector[attribute*="value"] - elemen yang nilai atributnya berisi kata tertentu di mana saja, a - semua tautan yang namanya mengandung book .

2.9. Pemilih kelas semu

Kelas semu adalah kelas yang sebenarnya tidak melekat pada tag HTML. Mereka memungkinkan Anda menerapkan aturan CSS ke elemen ketika suatu peristiwa terjadi atau mematuhi aturan tertentu. Kelas semu mengkarakterisasi elemen dengan properti berikut:

:hover - elemen apa pun yang menjadi tempat kursor mouse diarahkan;

:fokus - elemen interaktif yang dinavigasi menggunakan keyboard atau diaktifkan menggunakan mouse;

:aktif - elemen yang diaktifkan oleh pengguna;

:valid - kolom formulir yang isinya telah diperiksa di browser untuk kesesuaian dengan tipe data yang ditentukan;

:tidak valid — kolom formulir yang isinya tidak cocok dengan tipe data yang ditentukan;

:enabled - semua kolom formulir aktif;

:disabled — kolom formulir yang diblokir, yaitu dalam keadaan tidak aktif;

:in-range - bidang formulir yang nilainya berada dalam rentang yang ditentukan;

:out-of-range - bidang formulir yang nilainya tidak berada dalam kisaran yang ditentukan;

:lang() - elemen dengan teks dalam bahasa tertentu;

:not(selector) - elemen yang tidak mengandung selector yang ditentukan - kelas, pengidentifikasi, nama atau tipe kolom formulir - :not() ;

:target adalah elemen dengan simbol # yang direferensikan dalam dokumen;

:diperiksa — elemen formulir yang dipilih (dipilih pengguna).

2.10. Pemilih kelas semu struktural

Kelas semu struktural memilih elemen anak sesuai dengan parameter yang ditentukan dalam tanda kurung:

:nth-child(ganjil) - elemen anak ganjil;

:nth-child(even) - elemen anak genap;

:nth-child(3n) - setiap elemen ketiga di antara anak-anak;

:nth-child(3n+2) - memilih setiap elemen ketiga, dimulai dengan anak kedua (+2) ;

:nth-child(n+2) - memilih semua elemen mulai dari yang kedua;

:nth-child(3) - memilih elemen anak ketiga;

:nth-last-child() - dalam daftar elemen anak, pilih elemen dengan lokasi yang ditentukan, mirip dengan :nth-child() , tetapi mulai dari yang terakhir, dalam arah yang berlawanan;

:first-child - memungkinkan Anda memberi gaya hanya pada elemen anak pertama dari tag;

:last-child - memungkinkan Anda memformat elemen anak terakhir dari tag;

:only-child - memilih elemen yang merupakan satu-satunya elemen anak;

:empty - memilih elemen yang tidak memiliki anak;

:root - memilih elemen yang menjadi akar dokumen - elemen html.

2.11. Pemilih kelas semu tipe struktural

Menunjukkan jenis tag anak tertentu:

:nth-of-type() - memilih elemen yang mirip dengan :nth-child() , tetapi hanya memperhitungkan jenis elemen;

:first-of-type - memilih anak pertama dari tipe tertentu;

:last-of-type - memilih elemen terakhir dari tipe ini;

:nth-last-of-type() - memilih elemen dari tipe tertentu dalam daftar elemen sesuai dengan lokasi yang ditentukan, mulai dari akhir;

:only-of-type - memilih satu-satunya elemen dari tipe yang ditentukan di antara elemen anak dari elemen induk.

2.12. Pemilih elemen semu

Elemen semu digunakan untuk menambahkan konten, yang dihasilkan menggunakan properti konten:

:huruf pertama - memilih huruf pertama setiap paragraf, hanya berlaku untuk elemen blok;

:first-line - memilih baris pertama teks elemen, hanya berlaku untuk elemen blok;

:sebelum - menyisipkan konten yang dihasilkan sebelum elemen;

:after - menambahkan konten yang dihasilkan setelah elemen.

3. Kombinasi pemilih

Untuk memilih elemen pemformatan dengan lebih akurat, Anda dapat menggunakan kombinasi pemilih:

img:nth-of-type(even) - akan memilih semua gambar bernomor genap yang teks alternatifnya berisi kata css .

4. Mengelompokkan penyeleksi

Gaya yang sama dapat diterapkan ke beberapa elemen secara bersamaan. Untuk melakukan ini, Anda perlu mencantumkan penyeleksi yang diperlukan di sisi kiri deklarasi, dipisahkan dengan koma:

H1, h2, p, span (warna: tomat; latar belakang: putih; )

5. Warisan dan riam

Warisan dan cascade adalah dua konsep dasar dalam CSS yang terkait erat. Warisan adalah elemen yang mewarisi properti dari induknya (elemen yang memuatnya). Cascade memanifestasikan dirinya dalam bagaimana berbagai jenis style sheet diterapkan pada dokumen, dan bagaimana aturan-aturan yang bertentangan mengesampingkan satu sama lain.

5.1. Warisan

Warisan adalah mekanisme pewarisan sifat-sifat tertentu dari nenek moyang kepada keturunannya. Spesifikasi CSS menyediakan pewarisan properti yang terkait dengan konten teks halaman, seperti warna, font, spasi huruf, tinggi baris, gaya daftar, perataan teks, indentasi teks, transformasi teks, visibilitas, putih -spasi dan spasi kata. Dalam banyak kasus, ini nyaman karena Anda tidak perlu mengatur ukuran font dan jenis font untuk setiap elemen di halaman web.

Properti yang terkait dengan pemformatan blok tidak diwariskan. Ini adalah background , border , display , float dan clear , height dan width , margin , min-max-height dan -width , outline , overflow , padding , position , text-decoration , vertical-align dan z-index .

Warisan yang dipaksakan

Anda dapat menggunakan kata kunci pewarisan untuk memaksa suatu elemen mewarisi nilai properti apa pun dari elemen induknya. Ini berfungsi bahkan untuk properti yang tidak diwarisi secara default.

Bagaimana gaya CSS diatur dan bekerja

1) Gaya dapat diwarisi dari elemen induk (properti yang diwarisi atau menggunakan nilai warisan);

2) Gaya yang terletak pada lembar gaya di bawah mengesampingkan gaya yang terletak pada tabel di atas;

3) Gaya dari sumber berbeda dapat diterapkan ke satu elemen. Anda dapat memeriksa gaya mana yang diterapkan dalam mode pengembang browser. Untuk melakukan ini, klik kanan pada elemen dan pilih “Lihat Kode” (atau yang serupa). Kolom kanan akan mencantumkan semua properti yang disetel pada elemen ini atau diwarisi dari elemen induk, bersama dengan file gaya di mana properti tersebut ditentukan dan baris kode ordinal.


Beras. 2. Mode pengembang di browser Google Chrome

4) Saat mendefinisikan gaya, Anda dapat menggunakan kombinasi pemilih apa pun - pemilih elemen, kelas semu elemen, kelas, atau pengidentifikasi elemen.

div (batas: 1px solid #eee;) #wrap (lebar: 500px;).box (float: kiri;).clear (hapus: keduanya;)

5.2. Riam

Bertingkat adalah mekanisme yang mengontrol hasil akhir dalam situasi di mana aturan CSS berbeda diterapkan pada elemen yang sama. Ada tiga kriteria yang menentukan urutan penerapan properti—aturan penting, kekhususan, dan urutan pemasukan style sheet.

Aturan! penting

Bobot aturan dapat ditentukan menggunakan kata kunci!important, yang ditambahkan segera setelah nilai properti, misalnya span (font-weight: bold!important;) . Aturan tersebut harus ditempatkan di akhir deklarasi sebelum tanda kurung tutup, tanpa spasi. Pengumuman tersebut akan didahulukan dari semua peraturan lainnya. Aturan ini memungkinkan Anda untuk membatalkan nilai properti dan menetapkan nilai baru untuk elemen dari sekelompok elemen jika tidak ada akses langsung ke file gaya.

Kekhususan

Untuk setiap aturan, browser menghitung kekhususan pemilih, dan jika suatu elemen memiliki deklarasi properti yang bertentangan, aturan yang memiliki kekhususan paling tinggi akan diperhitungkan. Nilai spesifisitas memiliki empat bagian: 0, 0, 0, 0. Kekhususan pemilih didefinisikan sebagai berikut:

untuk id, 0, 1, 0, 0 ditambahkan;
untuk kelas 0, 0, 1, 0 ditambahkan;
untuk setiap elemen dan elemen semu, 0, 0, 0, 1 ditambahkan;
untuk gaya sebaris yang ditambahkan langsung ke elemen - 1, 0, 0, 0 ;
Selektor universal tidak memiliki kekhususan.

H1 (warna: biru muda;) /*kekhususan 0, 0, 0, 1*/ em (warna: perak;) /*kekhususan 0, 0, 0, 1*/ h1 em (warna: emas;) /*kekhususan: 0, 0, 0, 1 + 0, 0, 0, 1 = 0, 0, 0, 2*/ div#hal utama tentang (warna: biru;) /*kekhususan: 0, 0, 0, 1 + 0 , 1, 0, 0 + 0, 0, 0, 1 + 0, 0, 1, 0 = 0, 1, 1, 2*/ .sidebar (warna: abu-abu;) /*kekhususan 0, 0, 1, 0 */ #sidebar (warna: oranye;) /*kekhususan 0, 1, 0, 0*/ li#sidebar (warna: aqua;) /*kekhususan: 0, 0, 0, 1 + 0, 1, 0, 0 = 0, 1, 0, 1*/

Akibatnya, aturan-aturan yang lebih spesifik akan diterapkan pada elemen tersebut. Misalnya, jika suatu elemen memiliki dua kekhususan dengan nilai 0, 0, 0, 2 dan 0, 1, 0, 1, maka aturan kedua akan menang.

Urutan tabel yang terhubung

Anda dapat membuat beberapa lembar gaya eksternal dan menghubungkannya ke satu halaman web. Jika nilai properti yang berbeda untuk satu elemen ditemukan di tabel yang berbeda, maka sebagai hasilnya, aturan yang ditemukan dalam style sheet yang tercantum di bawah ini akan diterapkan ke elemen tersebut.

Ryan Utara

Anehnya, CSS dianggap sebagai salah satu bahasa termudah dan tersulit bagi pengembang web. Memulainya tentu saja cukup sederhana - Anda menentukan properti gaya, nilai untuk elemen tertentu, dan... hanya itu saja yang perlu diketahui! Namun, dalam proyek yang lebih besar, situasinya menjadi sangat membingungkan dan sulit untuk mengatur CSS dengan cara yang berarti. Mengubah baris CSS apa pun untuk memberi gaya pada elemen di satu halaman sering kali menimbulkan konsekuensi yang tidak diinginkan pada elemen di halaman lain.

Untuk memahami kompleksitas yang melekat pada CSS, berbagai jenis praktik terbaik telah dibuat. Masalahnya adalah masih belum ada konsensus mengenai mana yang terbaik, dan banyak di antaranya yang saling bertentangan. Jika ini adalah pertama kalinya Anda mencoba mempelajari CSS, situasi ini bisa sangat membingungkan.

Tujuan artikel ini adalah untuk memberikan konteks historis tentang bagaimana teknik dan alat CSS telah berevolusi hingga kondisinya saat ini pada tahun 2018. Dengan memahami sejarah ini, akan lebih mudah untuk memahami setiap pendekatan dan cara menggunakannya untuk keuntungan Anda. Jadi mari kita mulai!

Menggunakan CSS untuk Gaya Dasar

Mari kita mulai dengan situs web yang sangat mendasar, hanya menggunakan file index.html sederhana yang tertaut ke file index.css terpisah:

CSS modern

Ini adalah tajuknya.

Ini adalah konten utamanya.

Ini adalah catatan kaki.

Untuk saat ini kami tidak menggunakan kelas atau id apa pun dalam HTML, hanya tag semantik. Secara umum, tanpa menggunakan CSS, website akan terlihat seperti ini (dengan teks placeholder):

Fungsional, tapi tidak terlalu cantik. Kita dapat menambahkan CSS untuk meningkatkan gaya dasar di index.css:

/* TIPOGRAFI DASAR */ /* dari https://github.com/oxalorg/sakura */ html ( ukuran font: 62.5%; font-family: serif; ) badan ( ukuran font: 1.8rem; tinggi garis : 1.618; lebar maksimal: 38em; margin: otomatis; warna latar: #f9f9f9; bantalan: 13 piksel; ) @media (lebar maksimal: 382 piksel) ( badan ( ukuran font: 1,35rem; ) ) h1, h2, h3, h4, h5, h6 ( tinggi baris: 1.1; font-family: Verdana, Geneva, sans-serif; font-weight: 700; word-wrap: break-word; -ms-word-break: break-word ; -moz-tanda hubung: otomatis; -webkit-tanda hubung: otomatis; tanda hubung: otomatis; ) h1 ( ukuran font: 2,35em; ) h2 ( ukuran font: 2em; ) h3 ( ukuran font: 1,75em; ) font -ukuran: 1,5em; ) h5 ( ukuran font: 1,25em; ) h6 ( ukuran font: 1em; )
Di sini, sebagian besar CSS adalah gaya (ukuran font, tinggi garis, dll.), dengan beberapa gaya warna dan tata letak terpusat. Anda harus mempelajari desain untuk mengetahuinya
nilai-nilai yang baik parameter tersebut (berikut style dari sakura.css), namun kode CSSnya sendiri tidak terlalu sulit untuk dibaca. Hasilnya terlihat seperti ini:


Klik untuk contoh nyata

Apa bedanya! Ini adalah janji CSS - cara mudah untuk menambahkan gaya ke dokumen, tanpa coding atau logika yang rumit. Sayangnya, segalanya menjadi sedikit lebih rumit ketika kita mulai menggunakan CSS untuk lebih dari sekedar gaya dan warna (kita akan membahasnya nanti).

Menggunakan CSS untuk Markup

Pada tahun 1990-an, sebelum teknologi CSS tersebar luas, hanya ada sedikit pilihan untuk menandai konten pada suatu halaman. HTML awalnya dirancang sebagai bahasa untuk membuat dokumen sederhana, bukan situs web dinamis dengan sidebar, kolom, dll. Pada masa itu, markup sering dilakukan menggunakan tabel HTML - seluruh halaman ditempatkan dalam sebuah tabel, yang digunakan untuk mengatur konten ke dalam kolom dan baris. Pendekatan ini berhasil, tapi sisi sebaliknya Ada hubungan erat antara konten dan presentasi - jika Anda ingin mengubah markup situs, terkadang Anda harus menulis ulang HTML dalam jumlah besar.

CSS memberikan dorongan besar untuk memisahkan konten (ditulis dalam HTML) dan presentasi (ditulis dalam CSS). Sekarang ada cara untuk memindahkan semua markup dari HTML (tidak ada lagi tabel) ke CSS. Penting untuk dicatat bahwa CSS, seperti HTML, pada awalnya tidak dirancang untuk tata letak halaman, jadi upaya pertama dalam tata letak tidaklah elegan.

Mari kita lihat cara kerjanya dalam praktik dengan contoh kita di atas. Sebelum mendefinisikan apa pun markup CSS, pertama-tama kita akan mengatur ulang semua margin dan padding (yang mempengaruhi perhitungan tata letak), dan juga menandai bagian dengan warna berbeda (bukan untuk keindahan, tetapi untuk membedakannya secara visual saat menguji tata letak yang berbeda).

/* RESET LAYOUT DAN TAMBAHKAN WARNA */ body ( margin: 0; padding: 0; max-width: mewarisi; latar belakang: #fff; warna: #4a4a4a; ) header, footer ( ukuran font: besar; perataan teks: tengah; padding: 0.3em 0; warna latar: #4a4a4a; warna: #f9f9f9; ) nav ( latar belakang: #eee; ) utama ( latar belakang: #f9f9f9; ) samping ( latar belakang: #eee; )
Sekarang website untuk sementara akan terlihat seperti ini:


Klik untuk contoh nyata

Sekarang kita siap menggunakan CSS untuk menandai konten pada halaman. Mari kita evaluasi tiga pendekatan berbeda urutan kronologis, dimulai dengan tata letak float klasik.

tata letak berbasis float

Properti CSS float awalnya diperkenalkan untuk menyesuaikan gambar dalam kolom teks ke kiri atau kanan (seperti yang sering Anda lihat di koran). Pengembang web di awal tahun 2000-an memanfaatkan fakta bahwa Anda tidak hanya dapat mengapungkan gambar, tetapi juga elemen apa pun, yang berarti Anda dapat menciptakan ilusi baris dan kolom dengan mengapungkan seluruh div konten. Namun sekali lagi, float tidak dirancang untuk tujuan ini , jadi ilusi seperti itu sulit dicapai secara konsisten.

Pada tahun 2006, A List Apart menerbitkan artikel populer "In Search of the Holy Grail", yang menguraikan pendekatan rinci dan teliti untuk membuat tata letak yang dikenal sebagai Holy Grail - sebuah header, tiga kolom dan catatan kaki. Tampaknya gila jika tata letak yang cukup sederhana disebut Holy Grail, tetapi sangat sulit untuk membuat tata letak yang konsisten menggunakan CSS murni.

Di bawah ini adalah tata letak berbasis float untuk contoh kita berdasarkan teknik yang dijelaskan dalam artikel:

/* LAYOUT BERBASIS FLOAT */ body ( padding-kiri: 200px; padding-kanan: 190px; min-width: 240px; ) header, footer ( margin-kiri: -200px; margin-kanan: -190px; ) utama, nav, samping ( posisi: relatif; float: kiri; ) utama ( padding: 0 20px; lebar: 100%; ) nav ( lebar: 180px; padding: 0 10px; kanan: 240px; margin-kiri: -100%; ) samping ( lebar: 130px; padding: 0 10px; margin-kanan: -100%; ) footer ( hapus: keduanya; ) * html nav ( kiri: 150px; )
Melihat CSS, ada beberapa peretasan yang diperlukan agar tata letak berfungsi (batas negatif, jelas: properti, perhitungan lebar hardcode, dll.) - artikel tersebut menjelaskan secara rinci kebutuhan untuk masing-masing peretasan ini. Seperti inilah hasilnya:


Klik untuk contoh nyata

Lumayan, tetapi ketiga warna tersebut menunjukkan bahwa tinggi kolom tidak sama, dan halaman tidak memenuhi seluruh tinggi layar. Ini adalah masalah yang tidak bisa dihindari ketika menggunakan pendekatan berbasis float. Yang bisa dilakukan float hanyalah mendorong konten ke batas kiri atau kanan suatu bagian - di CSS tidak ada cara untuk memengaruhi ketinggian konten di bagian lain. Selama bertahun-tahun tidak ada solusi sederhana untuk masalah ini sampai tata letak berbasis flexbox muncul.

Tata letak berbasis Flexbox

Properti flexbox di CSS pertama kali diusulkan pada tahun 2009, namun baru mendapat dukungan luas di browser sekitar tahun 2015. Properti ini dirancang untuk menentukan bagaimana ruang dialokasikan dalam satu kolom atau baris, menjadikannya lebih banyak dengan cara yang sesuai tata letak daripada float. Jadi, setelah sepuluh tahun menggunakan tata letak berbasis float, pengembang web akhirnya dapat menggunakan CSS untuk tata letak tanpa peretasan yang melekat pada tata letak berbasis float.

Di bawah ini adalah tata letak berbasis flexbox untuk contoh kita. Itu dibuat berdasarkan teknik yang dijelaskan di situs web Solved by Flexbox ( sumber daya populer di mana mereka diterbitkan berbagai contoh di flexbox). Perhatikan bahwa flexbox memerlukan pembungkus div tambahan di sekitar tiga kolom dalam HTML agar berfungsi:

CSS modern

Ini adalah tajuknya.

Ini adalah konten utamanya.

Ini adalah catatan kaki.

Berikut ini kode flexbox di CSS:

/* LAYOUT BERBASIS FLEXBOX */ body ( min-height: 100vh; display: flex; flex-direction: kolom; ) .container ( display: flex; flex: 1; ) main ( flex: 1; padding: 0 20px; ) nav (fleksibel: 0 0 180px; padding: 0 10px; urutan: -1; ) samping (fleksibel: 0 0 130px; padding: 0 10px; )
Ini adalah kode yang jauh lebih ringkas dibandingkan dengan tata letak berbasis float! Properti dan nilai flexbox sedikit membingungkan pada pandangan pertama, tetapi menghilangkan kebutuhan akan banyak peretasan seperti batas negatif - sebuah kemenangan besar. Seperti inilah hasilnya:


Klik untuk contoh nyata

Jauh lebih baik! Semua kolom memiliki tinggi yang sama dan menempati seluruh tinggi halaman. Dalam beberapa hal hal ini tampak ideal, namun ada beberapa kelemahan kecil pada pendekatan ini. Pertama, dukungan browser - semua browser modern sekarang mendukung flexbox, namun beberapa browser lama tidak akan pernah mendukungnya. Untungnya, pengembang browser mengambil langkah signifikan untuk mengakhiri siklus hidup versi lama, yang akan menciptakan lingkungan pengembangan yang lebih stabil bagi desainer web. Kerugian lainnya adalah kenyataan bahwa kita perlu menambahkan markup

- alangkah baiknya melakukannya tanpa ini. Idealnya, tata letak CSS apa pun tidak memerlukan pengeditan markup HTML sama sekali.

Namun kelemahan terbesarnya ada pada kode CSS itu sendiri. Flexbox menghilangkan banyak peretasan float, tetapi kodenya tidak ekspresif untuk mendeskripsikan tata letak. Flexbox CSS sulit untuk dibaca dan mendapatkan pemahaman visual tentang bagaimana semua elemen akan muat di halaman. Karena itu, Anda mencoba menebak parameter yang benar - dan memeriksa apa yang terjadi.

Penting untuk menegaskan kembali bahwa flexbox dirancang untuk memasukkan elemen ke dalam satu kolom atau baris - flexbox tidak dirancang untuk menata seluruh halaman! Meskipun menangani hal ini dengan baik (jauh lebih baik daripada pendekatan berbasis float), spesifikasi yang berbeda telah dirancang khusus untuk tata letak multi-kolom atau multi-baris. Mereka disebut jaringan CSS.

Tata letak berbasis grid

Grid CSS pertama kali diperkenalkan pada tahun 2011 (tidak lama setelah flexbox), tetapi browser membutuhkan waktu lama untuk mendukungnya. Pada awal tahun 2018, CSS grid didukung oleh sebagian besar browser modern (sebuah langkah maju yang besar dibandingkan dengan situasi satu atau dua tahun lalu).

Di bawah ini adalah tata letak berbasis grid untuk contoh kita. Ini didasarkan pada metode pertama yang dijelaskan dalam artikel tentang trik CSS ini. Perhatikan bahwa dalam contoh ini kita dapat menghilangkannya

, yang harus ditambahkan ke tata letak berbasis flexbox. Di sini kami hanya menggunakan HTML asli tanpa perubahan apa pun. Seperti inilah tampilan CSSnya:

/* LAYOUT BERBASIS GRID */ body ( tampilan: grid; min-height: 100vh; grid-template-columns: 200px 1fr 150px; grid-template-rows: min-content 1fr min-content; ) header ( baris grid : 1; kolom kisi: 1/4; ) nav ( baris kisi: 2; kolom kisi: 1/2; padding: 0 10px; ) utama ( baris kisi: 2; kolom kisi: 2/3; padding: 0 20px; ) samping ( baris grid: 2; kolom grid: 3 / 4; padding: 0 10px; ) footer ( baris grid: 3; kolom grid: 1 / 4; )
Hasilnya secara visual identik dengan tata letak berbasis flexbox. Namun, kode CSS di sini jauh lebih baik dalam artian secara eksplisit menunjukkan tata letak yang Anda cari. Ukuran dan bentuk kolom dan baris ditentukan di badan pemilih, dan setiap elemen kisi ditentukan langsung oleh posisinya.

Satu-satunya hal yang mungkin membingungkan adalah properti grid-column, yang menentukan posisi awal dan akhir kolom. Ini bisa membingungkan karena contoh ini memiliki tiga kolom, tetapi menggunakan angka dari 1 sampai 4. Situasinya menjadi lebih jelas jika Anda melihat ilustrasinya:


Klik untuk contoh nyata

Kolom pertama dimulai pada posisi 1 dan berakhir pada posisi 2, kolom kedua dimulai pada 2 dan berakhir pada 3, dan kolom ketiga dimulai pada posisi 3 dan berakhir pada posisi 4. Header memiliki properti grid-column yang disetel ke 1/ 4 untuk perluasan seluruh halaman, navigasi menunjukkan kolom-grid dengan nilai 1/2 untuk diperluas ke kolom pertama, dst.

Setelah Anda terbiasa dengan sintaksis grid, menjadi jelas bahwa ini adalah cara ideal untuk melakukan tata letak di CSS. Satu-satunya kelemahan adalah tidak didukung di semua browser. Namun sekali lagi situasinya telah membaik secara signifikan selama setahun terakhir. Sulit untuk melebih-lebihkan nilai CSS grid sebagai alat nyata pertama dalam CSS, yang sebenarnya awalnya dibuat untuk tata letak, yaitu untuk tata letak seluruh halaman. Dalam arti tertentu, desainer web selalu harus sangat konservatif ketika membuat tata letak yang kreatif, karena hingga saat ini alat tersebut masih sangat rapuh, memerlukan berbagai peretasan dan celah non-standar. Sekarang dengan munculnya grid CSS, muncullah potensi untuk gelombang baru tata letak desain kreatif yang belum pernah dibuat sebelumnya - saat-saat yang indah!


- Diterima? Lucu sekali ketika Anda mengubah sesuatu di CSS, hal lain akan rusak!
- Mungkin, tapi dengan spesifikasi baru seperti flexbox dan grid semuanya menjadi jauh lebih baik!
- Ha! Ada lebih banyak hal di CSS daripada sekadar tata letak!

Menggunakan praprosesor CSS untuk sintaks baru

Sejauh ini kita telah melihat penggunaan CSS untuk penataan gaya dan tata letak sederhana. Sekarang mari kita pelajari alat yang membantu Anda bekerja dengan bahasa CSS itu sendiri. Mari kita mulai dengan praprosesor CSS.

Praprosesor CSS memungkinkan Anda menulis gaya dalam bahasa lain, yang kemudian diubah menjadi CSS sehingga browser dapat memahaminya. Ini sangat penting pada saat browser lambat dalam mendukung fitur-fitur baru. Preprocessor CSS populer pertama, Sass, dirilis pada tahun 2006. Ini menerapkan sintaksis ringkas baru (lekukan bukan tanda kurung, tanpa titik koma, dll.) dan menambahkan fitur-fitur canggih yang tidak ditemukan di CSS, seperti variabel, fungsi pembantu, dan perhitungan. Inilah tampilan bagian berwarna dari contoh sebelumnya ketika menggunakan Sass dengan variabel:

$warna gelap: #4a4a4a $warna terang: #f9f9f9 $warna samping: #eee warna tubuh: $warna gelap header, footer warna latar: $warna gelap warna: $warna terang latar belakang utama: $terang -nav warna, selain latar belakang: $side-color
Perhatikan bagaimana simbol $ menunjukkan variabel yang digunakan kembali. Tidak ada tanda kurung atau titik koma, sehingga sintaksisnya lebih bersih. Sintaks yang bersih memang bagus, tetapi fitur seperti variabel benar-benar revolusioner pada saat itu karena membuka kemungkinan baru untuk menulis CSS yang bersih dan mudah dipelihara.

Untuk menggunakan Sass Anda perlu menginstal Ruby. Bahasa pemrograman ini digunakan untuk mengkompilasi kode Sass menjadi CSS biasa. Selanjutnya Anda perlu menginstal permata Sass, lalu jalankan perintah pada baris perintah untuk mengonversi file .sass Anda menjadi file .css. Berikut adalah contoh tampilan perintah tersebut:

Sass --watch indeks.sass indeks.css

Perintah ini akan mengubah kode Sass di file index.sass menjadi CSS biasa di file index.css (argumen --watch menentukan untuk dijalankan setiap kali input berubah setelah disimpan, yang memudahkan).

Proses ini dikenal sebagai tahap pembangunan, dan pada tahun 2006 ini merupakan hambatan masuk yang cukup signifikan. Jika Anda familiar dengan bahasa pemrograman seperti Ruby, maka semuanya sederhana untuk Anda. Namun banyak pengembang front-end pada saat itu hanya bekerja dengan HTML dan CSS, di mana alat seperti itu tidak diperlukan. Jadi, merupakan tantangan besar bagi pengembang untuk mempelajari keseluruhan ekosistem guna memanfaatkan fitur praprosesor CSS.

Pada tahun 2009, praprosesor Less CSS dirilis. Itu juga ditulis dalam Ruby dan memiliki fungsi yang mirip dengan Sass. Perbedaan utamanya adalah sintaksnya, yang dibuat semirip mungkin dengan CSS. Ini berarti bahwa kode CSS apa pun juga merupakan kode yang lebih sedikit. Berikut contoh yang sama dalam sintaks Less:

@warna gelap: #4a4a4a; @warna terang: #f9f9f9; @ warna samping: #eee; badan ( warna: @warna-gelap; ) header, footer ( warna latar: @warna-gelap; warna: @warna-terang; ) utama ( latar belakang: @warna-terang; ) navigasi, samping ( latar belakang: @sisi- warna;
Ini hampir sama (hanya awalan @, bukan $ untuk variabel), tetapi tidak terlihat sebagus contoh Sass. Di sini kita melihat kurung kurawal dan titik koma yang sama seperti di CSS. Namun faktanya yang dekat dengan CSS memudahkan desainer web untuk menguasai preprocessor ini. Pada tahun 2012, Less ditulis ulang untuk menggunakan JavaScript (khususnya Node.js) alih-alih Ruby saat kompilasi. Setelah itu, Less mulai bekerja lebih cepat dibandingkan kompetitor Ruby, dan praprosesornya sendiri menjadi lebih menarik bagi pengembang yang telah menggunakan Node.js dalam pekerjaan mereka.

Untuk mengubah kode di atas menjadi CSS biasa, Anda harus menginstal Node.js terlebih dahulu, lalu menginstal Less dan menjalankan perintah:

Kurangi indeks.kurang indeks.css

Perintah tersebut mengubah kode Less di file index.less menjadi CSS biasa di file index.css. Perhatikan bahwa perintah lessc tidak memiliki cara untuk memantau perubahan file seperti yang dilakukan sass. Jadi, Anda harus menggunakan beberapa alat lain untuk melacak dan mengkompilasi file .less secara otomatis, yang membuat prosesnya sedikit lebih rumit. Sekali lagi, ini bukan masalah besar bagi pemrogram yang terbiasa menggunakan alat baris perintah, namun ini merupakan hambatan besar bagi desainer biasa yang hanya ingin menggunakan praprosesor CSS.

Ketika Less mendapatkan popularitas, pengembang Sass menambahkan sintaks baru yang disebut SCSS (superset CSS yang mirip dengan Less) ke praprosesor mereka pada tahun 2010. Mereka juga merilis LibSass, port C/C++ dari mesin Ruby Sass, membuatnya lebih cepat dan lebih mudah diakses untuk pemrograman dalam berbagai bahasa.

Praprosesor CSS alternatif lainnya, Stylus, dirilis pada tahun 2010. Itu ditulis dalam Node.js dan memiliki sintaks yang lebih bersih dibandingkan dengan Sass atau Less. Biasanya, ketika membahas praprosesor CSS, ketiga program ini disebutkan sebagai yang paling populer (Sass, Less, dan Stylus). Bagaimanapun, semuanya memiliki fungsi yang sangat mirip, jadi Anda tidak akan salah memilih salah satunya.

Namun, beberapa orang percaya akan hal itu akhir-akhir ini Pentingnya praprosesor CSS telah berkurang karena browser akhirnya mulai mengimplementasikan beberapa fiturnya (seperti variabel dan perhitungan). Selain itu, ada pendekatan sebaliknya - pasca-pemrosesan CSS, yang dapat membuat praprosesor CSS menjadi usang sepenuhnya (tentu saja ini isu kontroversial). Sekarang kita akan melihat post-processor CSS.

Menggunakan Prosesor Posting CSS untuk Fungsi Transformasi

Pasca-pemroses CSS menggunakan JavaScript untuk mengurai dan mengubah CSS Anda menjadi CSS yang valid. Dalam hal ini, ini sangat mirip dengan praprosesor CSS - ini dapat dilihat sebagai cara berbeda untuk menyelesaikan masalah yang sama. Perbedaan utamanya adalah praprosesor CSS menggunakan sintaksis khusus untuk mendefinisikan objek transformasi, sedangkan pascaprosesor CSS dapat mengurai kode CSS asli dan mengubahnya tanpa sintaksis khusus. Cara terbaik untuk menunjukkan hal ini adalah dengan sebuah contoh. Mari kita lihat bagian CSS dari contoh di atas di mana kita memberi gaya pada tag judul:

H1, h2, h3, h4, h5, h6 ( -ms-tanda hubung: otomatis; -moz-tanda hubung: otomatis; -webkit-tanda hubung: otomatis; tanda hubung: otomatis; )
Baris dua sampai empat disebut awalan vendor. Browser menggunakan awalan vendor saat menguji fitur CSS baru atau menggunakannya dalam mode eksperimental. Dengan cara ini, pengembang dapat menguji fitur-fitur ini sebelum implementasi akhir di browser. Ada awalan -ms untuk Microsoft Internet Explorer, awalan -moz untuk Mozilla Firefox, dan awalan -webkit untuk browser berbasis Webkit (seperti Google Chrome, Safari, dan versi terbaru Opera).

Cukup merepotkan untuk memasukkan awalan vendor yang berbeda ini untuk menggunakan properti CSS. Alangkah baiknya jika beberapa alat secara otomatis melakukan ini untuk kita jika diperlukan. Ini dapat dilakukan dengan menggunakan praprosesor CSS. Misalnya, dalam sintaks SCSS:

@mixin tanda hubung($nilai) ( -ms-tanda hubung: $nilai; -moz-tanda hubung: $nilai; -webkit-tanda hubung: $nilai; tanda hubung: $nilai; ) h1, h2, h3, h4, h5, h6 ( @sertakan tanda hubung(otomatis);
Di sini kita menggunakan fungsi mixin di Sass, yang mendefinisikan sepotong CSS satu kali - dan kemudian menggunakannya kembali di mana saja. Saat file ini dikompilasi ke dalam CSS biasa, pernyataan @include apa pun akan diganti dengan kode CSS dari @mixin yang sesuai. Secara keseluruhan ini adalah solusi yang baik, tetapi Anda bertanggung jawab untuk menentukan mixin untuk masing-masing solusi Properti CSS, yang memerlukan awalan vendor. Definisi mixin ini memerlukan dukungan: ketika browser secara resmi mengimplementasikan beberapa fitur CSS, Anda mungkin ingin menghapus awalan vendor yang tidak diperlukan.

Daripada mixin, saya hanya ingin menulis CSS biasa sehingga alat tersebut secara otomatis menemukan properti yang memerlukan awalan dan menambahkannya jika diperlukan. Pasca-pemroses CSS dapat bekerja dengan cara yang persis seperti ini. Misalnya, jika Anda menggunakan PostCSS dengan plugin autoprefixer, Anda dapat menulis CSS normal tanpa awalan vendor apa pun, dan pemroses pos akan melakukan semua pekerjaan:

H1, h2, h3, h4, h5, h6 (tanda hubung: otomatis; )
Jika Anda menjalankan pasca-prosesor CSS pada kode ini, maka alih-alih menggunakan baris tanda hubung: auto; Semua awalan vendor yang sesuai akan muncul (sesuai dengan aturan koreksi otomatis dari plugin autoprefixer, yang tidak perlu diubah secara manual). Ini berarti Anda bisa menulis CSS biasa tanpa mengkhawatirkan kompatibilitas atau sintaks khusus apa pun, dan itu bagus!

Selain autoprefixer, ada plugin PostCSS lain yang memungkinkan Anda melakukan beberapa hal keren. Plugin cssnext memungkinkan Anda menggunakan fitur CSS eksperimental. Plugin modul CSS secara otomatis mengubah kelas untuk menghindari konflik nama. Plugin stylelint menemukan kesalahan dan istilah yang tidak konsisten di CSS Anda. Alat-alat ini benar-benar dimulai tahun lalu atau dua, menampilkan kemampuan alur kerja pengembang yang belum pernah ada sebelumnya!

Namun, kemajuan harus dibayar mahal. Memasang dan menggunakan pasca-prosesor CSS seperti PostCSS memerlukan upaya lebih dibandingkan dengan pra-prosesor CSS. Anda tidak hanya harus menginstal dan menjalankan alat dari baris perintah, tetapi Anda juga harus menginstal dan mengkonfigurasi masing-masing plugin dan menentukan serangkaian aturan yang lebih kompleks (seperti browser mana yang harus dipertimbangkan, dll.). Daripada menjalankan PostCSS langsung dari baris perintah, banyak pengembang mengintegrasikannya ke dalam sistem build yang dapat dikonfigurasi seperti Grunt, Gulp, atau webpack. Hal ini mempermudah pengelolaan semua alat pembangunan berbeda yang mungkin Anda gunakan untuk front end.

Catatan: Jika Anda belum pernah menggunakannya sistem modern membangun untuk bagian depan, sepertinya terlalu banyak informasi yang harus diserap. Jika Anda ingin memulai dari awal, lihat artikel saya JavaScript Modern untuk Dinosaurus, yang menjelaskan semua alat JavaScript yang diperlukan untuk menggunakan ini. fungsi modern dalam pengembangan front-end.

Perlu dicatat bahwa ada beberapa kontroversi seputar postprocessor CSS. Ada yang bilang terminologinya terlalu membingungkan (ada yang bilang semua alat ini seharusnya disebut praprosesor CSS; yang lain bilang sebaiknya disebut saja pemroses CSS, dll.). Beberapa orang percaya bahwa pasca-pemroses CSS akan menghilangkan kebutuhan akan pra-pemroses CSS sama sekali, sementara yang lain percaya bahwa keduanya harus digunakan bersama-sama. Apa pun pilihannya, Anda perlu mempelajari pasca-pemroses CSS jika ingin mendapatkan hasil maksimal dari CSS.


- Ha! Saya pikir CSS berubah terlalu cepat demi kebaikannya sendiri.
- Ya, tidak sekaligus!
- Ha! Tunggu, apa maksudmu?
-Anda mengeluh bahwa CSS itu sulit, tetapi pada saat yang sama Anda mengeluh bahwa orang membuat alat untuk memperbaikinya!
- Mungkin! Namun Anda tidak bisa memperbaiki CSS hanya dengan alat saja!
- Dan di sinilah metodologi CSS akan membantu Anda!

Menggunakan Metodologi CSS untuk Pemeliharaan yang Andal

Alat seperti praprosesor CSS dan pascaprosesor CSS telah berkembang pesat dalam meningkatkan kegunaan pengembangan CSS. Namun alat ini saja tidak cukup untuk memecahkan masalah dukungan basis kode CSS yang besar. Untuk mengatasi masalah ini, berbagai pedoman mulai dibuat tentang cara menulis CSS – biasa disebut metodologi CSS.

Sebelum mendalami metodologi CSS tertentu, penting untuk memahami mengapa pemeliharaan CSS jangka panjang begitu sulit. Masalah utama- dalam sifat global CSS. Setiap gaya yang Anda tetapkan diterapkan secara global ke seluruh bagian halaman. Terserah Anda untuk memperkenalkan konvensi penamaan terperinci untuk mendukung nama kelas yang unik, atau memperkenalkan aturan kekhususan CSS untuk menentukan gaya apa yang harus diterapkan pada setiap elemen. Metodologi CSS menawarkan cara terorganisir untuk menulis CSS untuk menghindari hal ini poin rasa sakit dalam basis kode yang besar. Mari kita lihat beberapa metodologi populer dalam urutan kronologis.

OOCSS

OOCSS (Object Oriented CSS) pertama kali diperkenalkan pada tahun 2009 sebagai metodologi yang didasarkan pada dua prinsip utama. Prinsip pertama adalah pisahkan struktur dari cangkangnya. Artinya, CSS yang mendefinisikan struktur (seperti tata letak) tidak boleh dicampur dengan CSS yang mendefinisikan kulit (seperti warna, font, dll.). Hal ini memudahkan untuk mendesain ulang shell, yaitu tampilan aplikasi. Prinsip kedua - pisahkan konten dari wadah. Ini berarti menganggap elemen sebagai objek yang dapat digunakan kembali, dengan gagasan utama bahwa suatu objek harus terlihat sama terlepas dari posisinya di halaman.

OOCSS menawarkan pedoman yang dipikirkan dengan matang, namun tidak begitu jelas mengenai pendekatan spesifiknya. Metodologi selanjutnya seperti yang diambil SMACSS konsep-konsep kunci dan menambahkan lebih banyak detail untuk membuatnya lebih mudah digunakan.

SMACSS

SMACSS (Arsitektur Scalable dan Modular untuk CSS) muncul pada tahun 2011 sebagai metodologi yang merekomendasikan penulisan CSS dalam lima kategori berbeda: aturan inti, aturan tata letak, modul, aturan negara bagian, dan aturan tema. Metodologi SMACSS juga merekomendasikan konvensi penamaan tertentu. Misalnya, dalam aturan tata letak, nama kelas harus diawali dengan l- atau layout- . Dalam aturan negara bagian, nama kelas harus diawali dengan awalan yang menggambarkan negara tersebut, seperti is-hidden atau is-collapsed .

SMACSS jauh lebih spesifik daripada OOCSS, namun metodologinya masih memerlukan pemikiran yang cermat tentang apa itu aturan CSS harus dimasukkan dalam setiap kategori. Pendekatan selanjutnya seperti BEM mengambil alih sebagian pengambilan keputusan, sehingga lebih mudah digunakan dalam praktik.

BEM

Diperkenalkan pada tahun 2010, metodologi BEM (Block, Element, Modifier) ​​​​didasarkan pada pembagian antarmuka pengguna menjadi blok-blok independen. Memblokir adalah komponen yang dapat digunakan kembali (contohnya adalah formulir pencarian yang didefinisikan sebagai
). Elemen adalah bagian yang lebih kecil dari sebuah blok dan tidak dapat digunakan kembali sendiri (contohnya adalah tombol dari formulir pencarian yang didefinisikan sebagai ). Pengubah adalah entitas yang mendefinisikan penampilan, keadaan, atau perilaku blok atau elemen (contohnya adalah tombol formulir pencarian yang dinonaktifkan yang didefinisikan sebagai ).

Metodologi BEM mudah dipahami, dengan konvensi penamaan khusus yang memungkinkan pemula untuk menerapkannya tanpa harus mengadopsi apa pun solusi yang kompleks. Sisi sebaliknya adalah beberapa nama kelas cukup bertele-tele dan tidak mengikuti aturan tradisional untuk menentukan nama semantik. Selanjutnya, metodologi baru seperti Atomic CSS muncul, di mana pendekatan tidak konvensional ini mencapai tingkat yang benar-benar baru!

CSS atom

Metodologi Atomic CSS (juga dikenal sebagai Functional CSS) muncul pada tahun 2014. Hal ini didasarkan pada ide untuk membuat kelas kecil yang sangat terspesialisasi dengan nama yang didasarkan pada fungsi visual. Pendekatan ini benar-benar kebalikan dari OOCSS, SMACSS, dan BEM yang disebutkan di atas: alih-alih memperlakukan elemen pada halaman sebagai objek yang dapat digunakan kembali, Atomic CSS mengabaikan objek-objek ini sama sekali dan menggunakan kelas utilitas yang sangat terspesialisasi dan dapat digunakan kembali untuk mengatur gaya setiap elemen. Jadi sebagai gantinya Anda akan mendapatkan sesuatu seperti .

Jika reaksi pertama Anda terhadap contoh ini adalah merasa ngeri, Anda tidak sendirian. Banyak yang memandang metodologi ini sebagai pelanggaran total terhadap peraturan yang sudah ada praktik terbaik CSS. Namun, terdapat banyak diskusi substantif yang mempertanyakan efektivitas praktik-praktik ini dalam beberapa kasus.

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat