Beberapa hal telah berputar-putar di kepala saya:
- Posting Chris Coyier tentang kilasan tema warna yang tidak akurat (FART) menjadi istilah resmi.
- Postingan Jason Lengstorf tentang mencapai pengalih tema tanpa kilatan warna yang tidak akurat dengan menggunakan fungsi tepi Netlify.
- Posting saya tentang permintaan ketergantungan npm dan sintaks pemilih khusus mereka, seperti
:semver()
kelas semu
Ini semua jadi berpikir…
Saat Anda melihat halaman web, yang Anda miliki di bawahnya adalah DOM:
Ups, salah DOM. Ini dia (gambar milik Wikipedia).
Bagaimana kita mendapatkan DOM? Browser mengetahui cara membuatnya dari permintaan HTTP yang terdiri dari URL, beberapa header, dan beberapa HTML. Misalnya, ini adalah representasi sederhana dari (awal) halaman web untuk www.jim-nielsen.com
.
> GET / HTTP/2
> Host: www.jim-nielsen.com
>
< HTTP/2 200
< content-type: text/html; charset=UTF-8
< date: Tue, 15 Nov 2022 19:47:19 GMT
< content-length: 475979
<
<!DOCTYPE html>
<html lang="en">
<head>…</head>
<body>…</body>
</html>
Perhatikan berbagai informasi yang terjerat dalam permintaan HTTP tersebut: URL, beberapa header, dan beberapa HTML. Peramban tahu cara mengambil semua informasi itu dan merendernya sebagai halaman web.
HTML biasanya adalah apa yang kita pikirkan ketika kita menggunakan CSS untuk menata halaman web (mis. “jika ada elemen dengan kelas .foo
membuat teks color: red
”). Namun, lebih dari sekadar informasi dalam HTML dapat bermanfaat saat menata halaman web. Permintaan HTTP memiliki informasi terkait, seperti URL dan header, yang tidak dapat kami kueri dan menerapkan gaya berdasarkan logika.
Saya kira Anda dapat melakukan ini hari ini, setidaknya sebagian kecil, dengan sesuatu seperti itu :target
pseudo class yang memungkinkan Anda untuk menargetkan dan memberi gaya pada elemen tertentu di DOM berdasarkan nilai fragmen di URL (hati-hati: ini memiliki kebiasaan seperti history.pushState tidak memengaruhi :target
gaya).
Maksud saya adalah: mungkin ada informasi penting untuk menata halaman web yang berada di luar HTML saja. Seluruh respons HTTP tetap tidak dapat diakses oleh CSS. Mengapa demikian? Bagaimana jika Anda dapat menulis pemilih berdasarkan informasi apa pun dalam respons HTTP?
Pemilih URL: Aturan @document
Ternyata, ada/dulu a @document
at-rule — diusulkan dalam CSS3, ditangguhkan ke CSS4, tampaknya sudah tidak digunakan lagi sekarang? — yang memungkinkan Anda menulis gaya yang berlaku untuk URL tertentu. Ini akan luar biasa untuk menulis gaya pengguna khusus domain, tetapi juga (menurut saya) untuk gaya penulis.
@document url("https://blog.jim-nielsen.com/about/")
body …
Sintaks yang diusulkan memungkinkan pencocokan aturan berdasarkan nilai, awalan, atau domain URL. Jika itu tidak cukup, ada cara untuk mencocokkan berdasarkan regex.
@document regexp("https:.*")
body …
Regex memang bagus, tetapi saya bertanya-tanya seberapa mudahnya mereka diakses oleh banyak orang? Dan sementara ada yang diusulkan @document url-prefix()
itu membuat Anda bertanya-tanya, “Bagaimana dengan @document url-suffix()
?” Dan tidak ada yang pernah saya lihat menyentuh tentang cara menata gaya berdasarkan parameter kueri (saya kira untuk itulah regex itu?).
Sebagian dari diri saya bertanya-tanya apakah, alih-alih fungsi yang disebutkan ini (url()
, url-prefix()
, domain()
, regex()
) dapatkah kita memanfaatkan idiom pemilih atribut CSS yang ada? Saya tidak yakin seperti apa sintaksnya, tetapi bayangkan ini sebagai contoh:
@document[url="https://blog.jim-nielsen.com/about"] …
@document[url*="foo=bar"] …
@document[url^="https:"] …
@document[url$=".php"] …
@document[domain="jim-nielsen.com"] …
@document[domain="jim-nielsen.com"][url$=".html"] …
Memang saya meludah di sini, tapi untuk itulah posting blog.
Pemilih HTTP…?
Sejauh yang saya tahu, tidak ada yang meminta pemilih CSS yang dapat menanyakan header HTTP. Mungkin ada alasan untuk itu, tapi sekali lagi saya membayangkan.
Mengesampingkan kemungkinan terbuka yang mungkin diimpikan orang dengan non-standar X-
header, bayangkan bisa mendeklarasikan beberapa gaya berdasarkan keberadaan cookie. Cookie menarik karena merupakan bagian dari status yang ditetapkan oleh server dan dikirim oleh klien pada setiap permintaan berikutnya — JavaScript tidak diperlukan!
Ini bisa sangat berguna untuk mendukung kasus penggunaan seperti mode gelap yang dapat dikonfigurasi pengguna tanpa FART pada host file statis. Anda mengirim pengguna ke URL yang sesuai, server menyetel cookie, dan sekarang Anda memiliki status yang dapat diminta oleh CSS. Tidak perlu penulisan ulang HTML fungsi tepi, tidak ada kilasan tema warna yang tidak akurat, dan tidak diperlukan JavaScript klien! Contoh CSS:
:root background: #fff
@media (prefers-color-scheme:dark)
:root background: #000
:http([set-cookie*="THEME=dark"])
:root background: #000
Mungkin ada banyak alasan mengapa kami tidak dapat melakukan hal seperti ini — tetapi ini adalah blog saya dan di sinilah saya bermimpi!
Pengeluaran hk tercepat hari ini berasal dari web site togel Data SGP pools https://generationsremembered.com/ hasil keluaran hk terkini tiap hari. Dengan memakai rekapan bagan information hk prize, Pasti mempermudah bettor di dalam menyaksikan no pengeluaran SGP hari ini. Di mana tiap hasil pengeluaran hk https://goldenretrieverthevenet.com/ ini terkini senantiasa kami pembaharuan menjajaki result keluaran hongkong terkini berasal dari hongkongpools.com. Tujuannya sehingga para fans judi togel https://receptizakolace.net/ di Indonesia dapat bersama mudahnya mengenali hasil hk hari ini terkini serta benar-benar kilat.