Tips & Trik Minimisasi CSS ala CSS1K
Jika anda mengikuti perkembangan dunia persilatan, eh, maksud saya.. perCSSan, mungkin pernah mendengar CSS1K, apa itu? CSS1K merupakan sebuah situs yang diinisiasi oleh Jacob Rask (seorang software developer di Opera) yang dimaksudkan untuk mendemonstrasikan kemampuan layout CSS (mirip-mirip CSS Zen Garden) namun dengan ukuran yang hanya 1KB (mirip seperti kontes JS1K). Adalah sebuah tantangan tersendiri tentunya untuk bisa membuat sebuah visualisasi kreatif atas sebuah struktur HTML tertentu namun dengan jumlah karakter CSS yang dibatasi maksimum sebanyak 1 Kibibyte. Dengan 1 Kibibyte sama dengan 1024 bytes dan 1 karakter menghabiskan 1 byte, maka batasannya adalah 1024 karakter, sebuah jumlah yang sedikit dibandingkan ukuran stylesheet pada umumnya.

Diantara demo yang ada, "Typhon" by eswat, merupakan salah satu tema favorit saya
Setiap orang boleh berpartisipasi dengan mengirimkan tema CSSnya melalui email atau github, saya sendiri mensubmitnya lewat pull request di github ke https://github.com/jacobrask/CSS1K/ karena kebetulan punya akun github dan lebih praktis saja rasanya. Bagaimana demonya? bisa dilihat di situs CSS1K, silakan cari yang mana hehe..
Prototip CSS yang saya buat awalnya memang jauh lebih besar dari 1024 bytes, wajar karena banyak elemen yang distyle sedemikian rupa, sehingga akhirnya harus memutuskan untuk menghilangkan banyak rule yang sebenarnya menarik namun tidak terlalu berdampak pada konsep desain yang saya buat secara keseluruhan. Setelah itu dirasa tidak dapat dikurangi lagi namun masih belum memenuhi batas 1K, masih ada beberapa cara yang bisa dilakukan untuk meminimisasi ukuran CSS, berikut saya rangkumkan diantaranya:
1. Satukan beberapa selector yang sebagian besar atau seluruh nilai propertiesnya redundant
Sebagai contoh, lihat kesamaan rule antara kedua selector ini:
h1 {
color: red;
font-weight: bold;
text-align: center;
}
h2 {
color: blue;
font-weight: bold;
text-align: center;
}
dengan menyatukan kesamaannya, kita dapat menyederhanakannya menjadi:
h1, h2 {
color: red;
font-weight: bold;
text-align: center;
}
h2 {
color: blue;
}
2. Manfaatkan CSS shorthand untuk menyatukan properties setipe yang bisa disatukan
Beberapa shorthand antara lain font, background, margin, padding, list-style, dst. Sebagai contoh:
font-family: sans-serif; font-size: 12px; line-height: 20px; padding-top: 5px; padding-right: 10px; padding-bottom: 15px; padding-left: 10px;
dapat disederhanakan menjadi cukup
font: 12px/20px sans-serif; padding: 5px 10px 15px;
3. Gunakan selector equivalen yang terpendek yang paling mungkin
Ada banyak cara untuk menunjukkan sebuah elemen, apakah itu melalui id, class, atau attribute. Gunakan mana yang paling pendek diantara kesemuanya. Sebagai contoh misalkan ada sebuah elemen HTML seperti ini
<a id="faisalman" class="anchor" href="#">a link</a>
pada CSS kita dapat menunjukkan elemen ini dengan banyak cara
#faisalman {}
a.anchor {}
a[href="#"] {}
a[customattr="apapunlah"] {}
kita dapat memilih salah satu diantara kesemuanya, meskipun tidak selalu yang terpendek bisa dipilih karena tergantung lingkup selector yang diinginkan juga.
4. Hapus semicolon paling akhir di setiap rule
Titik koma di akhir bersifat optional, sehingga pada contoh di bawah ini
h1 {
margin: 0 5px;
padding: 0;
border: 0;
outline: 0;
background: transparent;
}
kita bisa hilangkan tanda titik koma di ujungnya menjadi
h1 {
margin: 0 5px;
padding: 0;
border: 0;
outline: 0;
background: transparent
}
5. Hapus whitespace yang tidak perlu
Spasi dianggap sebagai sebuah karakter yang termasuk dalam 1KB, karena itu salah satu cara termudah untuk meminimisasi adalah dengan meminimalkan penggunaan spasi. Sebagai contoh
h1 {
margin: 0 5px;
padding: 0;
border: 0;
outline: 0;
background: transparent
}
bisa dituliskan menjadi
h1{margin:0 5px;padding:0;border:0;outline:0;background:transparent}
namun perhatikan bahwa ada spasi yang tidak boleh diabaikan karena untuk memisahkan 2 nilai seperti pada property margin di atas.
6. Unit dengan nilai 0 tidak perlu menggunakan satuan px
Sebagai contoh
box-shadow: 0px 0px 1px #000;
cukup dituliskan dengan
box-shadow: 0 0 1px #000;
7. Angka 0 di depan titik boleh tidak dituliskan pada unit bertipe floating point
sebagai contoh
transition: all 0.1s linear;
cukup dituliskan tanpa angka 0
transition: all .1s linear;
8. Gunakan list-style dibandingkan list-style-type jika tidak menggunakan custom image atau posisi pada list
Masih berhubungan dengan CSS shorthand, jika kita hanya menset nilai tipenya
list-style-type: none;
cukup tuliskan shorthandnya saja
list-style: none;
9. Gantikan nilai none dengan 0 dimana bisa
Salah satunya pada property border, dimana kita dapat menggantikan
border: none;
dengan
border: 0;
karena pada property border, masih berhubungan dengan bahasan CSS shorthand, keduanya merujuk pada property yang berbeda, dimana
border: none;
merupakan kependekan dari
border-style: none;
sedangkan
border: 0;
merupakan kependekan dari
border-width: 0;
Namun karena pada akhirnya keduanya menghasilkan efek yang sama, menggunakan 0 jelas lebih singkat dari none bukan?
10. Persingkat nilai hexa warna hingga ke 3 digit terdekat
Untuk menghemat karakter kita bisa melakukan antara lain dengan mengubah ke nilai terdekat yang sama untuk setiap #RRGGBB sehingga cukup dituliskan #RGB, tentu saja dengan kompensasi berupa warna yang tidak sesuai asalnya lagi meskipun mirip. Sebagai contoh
color: #f3e597;
nilai tiap warna terdekatnya bisa kita tuliskan menjadi
color: #ffee99;
sehingga cukup dituliskan nilai ekuivalennya
color: #fe9;
Selain itu, yang menarik ada definisi warna yang cukup singkat yaitu warna merah dimana kita cukup menuliskan
color: red;
lebih singkat penulisannya (3 karakter) dibandingkan jika kita menuliskan nilai hexanya (4 karakter) yaitu
color: #f00;
11. kalau jumlah direct child hanya 2, kita bisa mengganti last-child selector dengan adjacent selector
Misalnya, jika a sebagai child dari li hanya berjumlah 2, maka
li > a:last-child { }
adalah equivalen dengan
li > a+a { }
12. kalau jumlah direct child hanya 1, cukup ganti tipe elemen child tersebut dengan tanda bintang saja
Karena tipe child sudah dapat dipastikan, kita tidak perlu menuliskannya, sehingga
article > section:hover { }
secara pasti bisa kita ganti dengan
article > *:hover { }
13. Dan lain-lain
Masih banyak lagi sebenarnya tips lain yang mungkin belum tercakup disini hanya saja belum kepikiran..
Akhirul kalam, mohon maaf kalau ada salah-salah kata, dan kalau ada yang ingin berbagi trik-trik lain dalam hal menghemat karakter CSS silakan tambahkan lewat kolom komentar dibawah
–
Beberapa referensi dan tautan lain yang mungkin berhubungan dengan bahasan ini:
- CSS1K @Github
- The 30 CSS Selectors you Must Memorize
- Introduction to CSS Shorthand
Filed under: CSS, Tips 'n trik, Web Development | Leave a Comment
Tag:1024bytes, css, css1k, minimize, selector, shorthand


No Responses Yet to “Tips & Trik Minimisasi CSS ala CSS1K”