- Aturan @property didukung di semua browser modern dan menyediakan kemampuan untuk mendefinisikan secara eksplisit sintaks, nilai awal, dan pewarisan untuk properti kustom CSS
- Sudah banyak waktu berlalu sejak CSS Houdini dan CSS Properties and Values API pertama kali diperkenalkan
- Melalui demo yang mengeksplorasi kemungkinan @property, kita bisa melihat apa yang dapat ditawarkan oleh generasi berikutnya dari CSS
Calls to action (elemen ajakan bertindak)
- CTA yang menarik perhatian di halaman web digunakan di banyak situs
- Gaya ini telah dicoba langsung, dan hasilnya dapat dilihat di CodePen
- Jika membuka panel CSS pada demo, Anda bisa melihat aturan @property yang terkait dengan properti kustom yang memerlukan animasi
@property --gradient-angle {
syntax: "";
initial-value: 0deg;
inherits: false;
}
- Aturan @property memungkinkan sintaks tersebut di browser dan menetapkan nilai awal ke 0deg
- Dengan ini, browser dapat bertransisi mulus dari 0deg ke 360deg dan menampilkan gradient yang berputar
@keyframes rotate-gradient {
to {
--gradient-angle: 360deg;
}
}
.rotate-gradient {
background: conic-gradient(from var(--gradient-angle), transparent, black);
animation: rotate-gradient 10s linear infinite;
}
- Melalui demo rotasi gradient sederhana, kita dapat melihat beberapa baris kode yang diperlukan untuk menerapkan konsep ini
Transisi hover yang mulus
- Saat elemen di-hover, dibutuhkan beberapa komponen khusus untuk transisi gradient yang mulus
- Setiap properti kustom yang memerlukan animasi mendeklarasikan sintaks dalam definisi @property agar browser dapat mentransisikan perubahan nilainya dengan lancar
.shiny-cta {
background: linear-gradient(var(--shiny-cta-bg), var(--shiny-cta-bg)) padding-box,
conic-gradient(from calc(var(--gradient-angle) - var(--gradient-angle-offset)),
transparent, var(--shiny-cta-highlight) var(--gradient-percent),
var(--gradient-shine) calc(var(--gradient-percent) * 2),
var(--shiny-cta-highlight) calc(var(--gradient-percent) * 3),
transparent calc(var(--gradient-percent) * 4)) border-box;
}
- Nilai --gradient-percent menentukan ukuran area yang berkilau, dan saat hover cahaya dibuat lebih panjang dengan persentase yang lebih tinggi
- Nilai --gradient-angle-offset menyesuaikan ulang sudut gradient agar cahaya tidak bergerak kembali saat hover
Mengatur kecepatan rotasi
- Tip CSS untuk memperlambat rotasi saat hover sangat berguna
- Animasi rotasi yang sama dideklarasikan dua kali, yang kedua diatur terbalik lalu dijeda, dan durasinya dibagi dua
- Saat elemen di-hover,
animation-play-state: running menimpa nilai jeda dan memperlambat rotasi menjadi setengah kecepatan
Titik-titik kecil yang berkilau
- Efek titik-titik kecil yang berkilau ditambahkan di dalam tombol
- Untuk ini dibuat latar belakang
radial-gradient
.shiny-cta::before {
--position: 2px;
--space: calc(var(--position) * 2);
background: radial-gradient(circle at var(--position) var(--position),
white calc(var(--position) / 4),
transparent 0) padding-box;
background-size: var(--space) var(--space);
background-repeat: space;
}
- Properti kustom
--gradient-angle digunakan dalam mask conic-gradient untuk menampilkan sebagian pola titik sambil berputar
Meningkatkan warna hover
- Gaya hover ditingkatkan agar terasa lebih dalam dan lebih menonjol
- Teks tombol dibungkus dalam elemen span, lalu diterapkan box-shadow blur agar mengembang dan menyusut saat hover
Memperkenalkan gaya baru
- Banyak teknik di atas hingga belum lama ini hampir mustahil dilakukan
- Dengan mendefinisikan properti kustom secara eksplisit, banyak peluang baru terbuka
- Menarik untuk menantikan bagaimana @property akan dimanfaatkan dalam aplikasi skala besar dan design system
Ringkasan GN⁺
- Aturan @property menyediakan kemampuan untuk mendefinisikan secara eksplisit sintaks, nilai awal, dan pewarisan untuk properti kustom CSS
- Melalui fitur ini, pengembang web dapat menerapkan animasi dan gaya yang lebih kompleks serta lebih canggih
- Fitur ini terutama berpotensi sangat berguna dalam aplikasi skala besar dan design system
- Proyek lain yang menyediakan kemampuan serupa antara lain CSS Houdini dan CSS Properties and Values API
1 komentar
Komentar Hacker News
Merasa seperti otak menolak saat berhadapan dengan konsep baru
Bukan pengembang web, tetapi bisa menggunakan framework web dasar
Baru-baru ini tertarik dengan pekerjaan CSS, terutama Houdini
Hanya karena sesuatu bisa dilakukan bukan berarti harus dilakukan
Hal-hal yang bisa dilakukan dengan animasi CSS terasa seperti sihir
Demo ini menarik secara teknis, tetapi tombol tidak seharusnya dianimasikan seperti ini
Kiriman-kiriman sebelumnya tidak banyak mendapat perhatian, tetapi menarik dan edukatif
Situs web ini memberi kebahagiaan
Menikmati bekerja dengan CSS, tetapi melihat rekan kerja kesulitan
Sudah lama tidak melakukan pengembangan web dan perlu waktu untuk memahami fungsi fitur ini
@property --gradient-angle {...}inherits: false;jelas melakukan apa, tetapi tidak paham mengapa itu diperlukan