Proyek CSS Zen Garden
(csszengarden.com)- CSS Zen Garden adalah proyek demo yang menunjukkan bahwa dokumen HTML yang sama pun dapat menjadi pengalaman visual yang sama sekali berbeda hanya dengan desain berbasis CSS
- Saat memilih stylesheet dari daftar desain, HTML tetap apa adanya dan hanya CSS eksternal yang berubah, sehingga rendering halaman menjadi berbeda
- Peserta dapat mengunduh contoh HTML/CSS dan bekerja secara lokal, tetapi saat mengirimkan, mereka hanya boleh memodifikasi stylesheet
- File CSS yang selesai beserta aset terkait diunggah ke server web milik sendiri dan dikirimkan sebagai tautan; karya yang terpilih akan ditempatkan di server CSS Zen Garden
- CSS yang praktis lebih diutamakan daripada fitur eksperimental, serta diperlukan CSS yang dapat divalidasi dan dapat berjalan di IE9+ serta browser Chrome, Firefox, iOS, dan Android terbaru
Eksperimen CSS yang membuat HTML yang sama terlihat sepenuhnya berbeda
- CSS Zen Garden adalah demo untuk menunjukkan daya ekspresi CSS
- Pengguna dapat memilih item yang diinginkan dari daftar desain untuk menerapkan stylesheet tersebut ke halaman saat ini
- Batasan utamanya adalah tidak mengubah HTML dan hanya mengganti file CSS eksternal
- Hasil visual berubah sambil tetap mempertahankan struktur dokumen yang sama
- Menunjukkan sejauh mana desain dan coding dapat memperluas kemungkinan visual web
- Ini dapat dilihat sebagai proyek pembelajaran yang mendorong partisipasi dan inspirasi, serta berbagi hasil yang benar-benar dapat diimplementasikan dengan CSS
Cara berpartisipasi dan alur pengiriman
- Peserta mendesain ulang halaman ini dengan desain visual yang kuat dan kemampuan CSS
- File contoh memiliki komentar, sehingga pemula CSS pun dapat menggunakannya sebagai titik awal
- Tutorial lanjutan dan tips tersedia di CSS Resource Guide
- Pengerjaan dapat dilakukan pada salinan lokal setelah mengunduh contoh HTML dan CSS
- Untuk mengirimkan, unggah file CSS yang sudah selesai beserta aset terkait ke server web yang Anda kendalikan, lalu kirim melalui tautan pengiriman
- Mengirimkan pekerjaan yang belum selesai tidak disarankan
- Kiriman yang terpilih akan diunduh oleh pihak CSS Zen Garden dan ditempatkan di server mereka
- Imbalan partisipasi berupa pengakuan, inspirasi, dan kontribusi pada materi bersama yang menunjukkan kemungkinan CSS
Persyaratan CSS dan lisensi
- Persyaratan difokuskan pada CSS yang fungsional dan praktis, bukan fitur eksperimental terbaru
- Jika memungkinkan, penggunaan CSS 1 & 2 lebih disukai
- CSS 3 & 4 harus dibatasi pada elemen yang didukung secara luas atau menyediakan fallback yang kuat
- CSS harus lolos validasi
- Dengan mempertimbangkan user agent terbaru dan lingkungan mobile, tata letak yang identik hingga tingkat piksel di semua platform mungkin sulit dicapai
- Desain harus berjalan setidaknya di IE9+, serta browser Chrome, Firefox, iOS, dan Android terbaru
- Kiriman harus berupa karya seni orisinal dan menghormati hukum hak cipta
- Materi yang dapat menyinggung sebaiknya diminimalkan
- Karena desain bertema taman sudah cukup banyak, tema visual yang unik dan menarik lebih dianjurkan
- Hak cipta grafis tetap berada pada pengirim, tetapi CSS harus dirilis dengan lisensi Creative Commons BY-NC-SA 3.0 yang sama dengan situs, agar dapat digunakan orang lain untuk belajar
1 komentar
Komentar Hacker News
Ada konteks yang sulit terlihat jika Anda bukan orang yang pernah melakukan pengembangan web pada masa ketika ini dibuat.
Sebelum CSS, elemen table disalahgunakan seperti kisi untuk membuat layout, dan gambar dipotong-potong lalu dimasukkan ke tiap sel. Sekarang orang masih ingat sejauh itu, tetapi penolakan terhadap CSS pada masa itu tampaknya sudah cukup terlupakan.
Banyak pengembang web yang puas dengan status quo dan enggan belajar CSS, dan mitos bahwa “dengan CSS hanya bisa membuat desain kotak-kotak yang membosankan” sangat keras kepala. Dave Shea mengumpulkan dan menampilkan desain-desain keren lewat CSS Zen Garden, praktis mengakhiri argumen itu, dan lucunya kemenangannya begitu telak sampai fakta bahwa perdebatan seperti itu pernah ada pun kini terlupakan.
border-radiuspun baru masuk sekitar 2011, dan bahkan situs yang relatif sederhana seperti https://90s.dev/ membutuhkan sekitar 420 baris menurut CSS modern di https://90s.dev/style.css.Itu pun sudah cukup banyak memakai nesting dan
:hasyang mengubah permainan. Saya ingat, karena keterbatasan mendasar CSS saat itu, untuk mewujudkan bentuk yang tidak bisa dibuat secara intuitif, struktur CSS dan HTML sama-sama harus diubah.Menurut saya CSS Zen Garden ada untuk menunjukkan sejauh mana CSS bisa digunakan pada saat itu.
Jika butuh kisi yang stabil dan bisa diprediksi, orang memakai layout table, terutama pada layout yang rapat dan kompleks. Kasus navigasi saja yang memakai layout table juga umum, dan tujuan saat itu adalah pixel perfect.
Ingat elemen spacer sekitar tahun 2000? Pada akhirnya tidak pernah mapan, dan GIF piksel lebih umum serta lebih bisa diprediksi.
Sampai flexbox populer pada 2014, layout CSS float terasa seperti memutar piring. Div kosong dan div berisi konten berperilaku berbeda sehingga menyiksa; waktu itu tidak bisa saya dapatkan kembali, tetapi setidaknya saya dibayar.
Gagasan bahwa CSS awal dengan mudah memberikan layout “Zen Garden” yang keren tidak sesuai dengan pengalaman saya. Namun saya memang sedang membuat situs media informasi, bukan situs seni yang menarik.
Situs ini sudah tua, dan itu dalam arti yang baik.
Pada tahun 2000-an, ini adalah kejutan budaya bagi saya, dan membuat saya beralih dari Microsoft ASP.NET ke membuat aplikasi di Linux. Saya sadar bahwa “server controls” dengan parameter inline style adalah pendekatan yang sepenuhnya keliru, bisa dibilang “anti-internet”.
Alex Russell, pembuat Dojo JS, menunjukkan sudut pandang seperti itu di sebuah konferensi, dan saya terkejut menyadari betapa banyak informasi yang terlewat selama saya mendapatkan berita teknologi lewat kanal Microsoft.
Selama beberapa tahun, alat saya hanya sekitar Web.py, HTML, JS, dan CSS; kemudian jQuery, Backbone, dan Underscore datang dan pergi, lalu React dan TypeScript terasa membuat “full-stack” baru kembali menjadi tumpul.
Ironisnya, yang lama kembali menjadi baru. Di sisi Next.js, mereka sedang membuat ulang view state, Tailwind memakai inline styling, dan shadcn memakai komponen React, jadi hampir seperti berputar satu putaran penuh.
Untuk sementara, markup semantik dan CSS sempat unggul, tetapi sekarang saya bahkan tidak lagi berminat memeriksa tren terbaru. Saya berhenti peduli kira-kira saat “HTML di dalam JavaScript” (JSX).
Tidak perlu juga pindah ke Linux. Karena departemen IT tidak mengizinkan desktop Linux, saya membuat semuanya di Windows, lalu men-deploy ke server Windows dan Linux.
Saya merasa inti CSS Zen Garden adalah bahwa jika HTML semantik dimanfaatkan semaksimal mungkin, presentasi dan konten bisa dipisahkan dan ditangani sepenuhnya secara independen.
Sampai sekarang pun kurang lebih setingkat Zen Garden masih mungkin, tetapi sebenarnya itu bergerak di dalam batasan CSS. Lebih dekat ke “karena CSS bisa melakukan ini, maka kita membuat desain seperti ini”, bukan alur “karena kita menginginkan desain seperti ini, maka kita memakai CSS ini”.
Banyak pilihan styling yang hanya mungkin jika DOM diubah langsung, dan ada hal-hal yang tidak bisa dilakukan dengan CSS murni. Dalam diskusi W3C pun saya pernah melihat pola seperti “kenapa perlu properti CSS baru kalau cukup membungkusnya dengan satu div lagi”.
Menyisipkan atau mengganti gambar itu sederhana, tetapi mengganti SVG yang bisa di-styling tidak mungkin karena node SVG harus dimasukkan langsung ke HTML. Pada akhirnya, keputusan struktur presentasi dan konten bercampur di level HTML dan JavaScript, sehingga perubahan desain sederhana pun menyentuh seluruh stack.
Setelah 30 tahun menulis GUI, kini saya yakin posisi garis pemisah itu keliru. Sebagai gantinya, yang harus diisolasi adalah intensi. Composites di proyek saya menjalankan peran itu, dan saya sangat menantikan peluncurannya minggu depan.
Dari sudut pandang seseorang yang belajar CSS lewat materi seperti Zen Garden dan Eric Meyer, alat CSS modern seperti Tailwind tampak seperti antipattern
HTML jadi tertutup informasi gaya. Membaca HTML seharusnya berarti melihat konten dan makna, bukan menguraikan
pl-16 pr-8 bg-olive-500 text-gray-700sebagai “mungkin ini header kartu”Bisa saja dikatakan bahwa sekarang orang tidak membaca HTML, tetapi kalau developer yang memakai framework seperti ini membuat HTML menjadi kekacauan mengerikan, siapa yang mau membacanya? Ketika kelas framework menjadi terlalu banyak, HTML berisi lebih banyak noise daripada konten; akibatnya praktik membaca HTML menghilang, lalu developer kembali menumpuk lebih banyak kelas dan gaya—sebuah siklus yang menguatkan diri sendiri
Developer web juga sangat sering menggandakan style. Alih-alih sesuatu seperti
.button, kombinasi sepertitext-white rounded bg-gray-aaatersebar di ratusan tempat. Entah ini masalah Tailwind atau masalah developernya, tetapi di proyek besar, jika ingin mengubah style seluruh elemen UI yang serupa, jadinya seperti main pukul tikus tanah untuk mencari inline style mana pada elemen mana yang harus diubahSetelah itu kotak perkakas ide CSS memang cepat terbentuk, tetapi detail yang membuat CSS bekerja dengan baik terlewat. Saya tahu cara mengakali masalah aneh dengan
position: absolutedantransform, tetapi tidak memahami block formatting context atau rincian box modelJika pengetahuan CSS hanya berupa plester yang ditempel di atas pengetahuan CSS yang rapuh, itu sama saja membakar bahan bakar. Pada saat seperti itu, membawa kotak perkakas style yang bisa dikomposisikan dan membantu menghindari banyak jebakan CSS bisa terlihat menarik
Yang mengubah pandangan saya adalah sebuah seri singkat berbentuk buku online yang mengajarkan HTML/CSS dari dasar. Semuanya dijelaskan dari prinsip pertama dan mengapa demikian, bukan hanya melempar “10 cara menengahkan div” lalu selesai. Saya membacanya habis dalam satu sore dan cara saya memandang pengembangan web berubah, tetapi saya sama sekali tidak ingat judul bukunya. Saya terutama ingat kalimat bahwa “
display: blockitu seperti dokumen Word, sedangkandisplay: flexlebih dekat dengan cara yang orang harapkan”Seperti secercah cahaya di zaman gelap Tailwind dan CSS-in-JS
Sekarang sulit merasakan betapa pentingnya CSS Zen Garden sekitar 20 tahun lalu
Dulu situs ini memberi pengaruh sangat besar pada saya
Untuk yang belum tahu, orang bisa mengirimkan desain untuk konten HTML yang sama hanya dengan CSS dan gambar. Contoh yang sangat berkesan bagi saya adalah berikut ini
https://csszengarden.com/202/
https://csszengarden.com/189/
https://csszengarden.com/177/
https://csszengarden.com/136/
https://csszengarden.com/206/
Ada juga desain dengan pedang
position: fixedyang saat discroll “membelah halaman di tengah”, tetapi sepertinya sekarang sudah tidak ada di daftar. Saya juga ingat satu desain lain: bagian paling atas halaman adalah permukaan laut, dan saat discroll ke bawah, di ujung bawah laut ada salah satu dari gurita, kapal selam, atau penyelamSaya pernah mengunggah dua desain di sana, dan sampai sekarang masih menerima email yang meminta izin untuk menggunakan ulang CSS-nya
Senang sekali melihat CSS Zen Garden di HN hari ini. Masa-masa itu memang menyenangkan
Tapi sekarang saya harus sedikit menggerutu
Hal yang paling saya khawatirkan dari Tailwind dan “framework” CSS sejenisnya, serta pengembangan perangkat lunak modern secara umum, adalah bahwa orang makin bangga karena tidak memahami sistem dasarnya
Tailwind memberi solusi cepat dan dangkal. Tempelkan kelas utilitas ke halaman, lalu hasilnya terlihat “cukup bagus” tanpa perlu belajar bagaimana CSS sebenarnya bekerja. Tidak peduli kalau HTML berubah jadi kekacauan yang berisi lebih banyak kelas CSS daripada konten
Sikapnya seperti, “Apa pentingnya bagaimana cara kerjanya? Halamannya terlihat bagus. Berhasil!”
Ini bukan cuma masalah Tailwind, melainkan tren yang lebih besar di industri. Merayakan ketidaktahuan, dan terburu-buru mengejar hasil tanpa membangun pemahaman yang sungguh-sungguh
Sejak kapan tidak tahu menjadi sesuatu yang dibanggakan? Menyedihkan ketika kedalaman dan keahlian diperlakukan sebagai hal opsional, bahkan tidak diinginkan
divbersarang dan lebih dari 860 kelasJumlah kelasnya lebih banyak daripada jumlah karakter konten teks, dan nama kelasnya saja sekitar 9 kB. Itu diulang untuk setiap postingan di linimasa
Beberapa
div, beberapa kelas, satu kelas per ikon, dan beberapa baris CSS seharusnya sudah cukup. Serius, Anda bisa menata semua postingan di linimasa dengan jumlah karakter yang lebih sedikit daripada jumlah karakter nama kelas untuk satu postinganSaya tidak mengerti bagaimana pengembang profesional bisa membuat HTML yang sebegitu bengkak
Rasanya seperti datang dari masa lalu. Saya menyukai CSS Zen Garden, tetapi tujuan dan filosofinya cocok untuk dunia ketika tujuan utama situs web adalah menyajikan dokumen
Dunia media kaya tampaknya telah meninggalkan visi web itu sekitar pertengahan 2000-an
https://blog.danieljanus.pl/2019/10/07/web-of-documents/
Selain beberapa aplikasi peta, sebagian besar web masih tentang membaca sesuatu, dan tidak membutuhkan begitu banyak barang tidak perlu seperti ini. Web menjadi lebih rumit hanya karena para pengembang lebih menyukai kerumitan daripada kesederhanaan
Senang melihat Garden kembali. Pada masa ketika desain web berbasis CSS berada di garis depan dan orang mulai memakai
divyang bersarang dalam-dalam alih-alihtableyang bersarang dalam-dalam, CSS Zen Garden dan Spoono adalah situs web favorit sayaBukunya juga bagus