@property kuralı tüm modern tarayıcılarda destekleniyor ve CSS özel özelliklerinin sözdizimini, başlangıç değerini ve kalıtımını açıkça tanımlama olanağı sunuyor
- CSS Houdini ve CSS Properties and Values API ilk kez tanıtıldığından bu yana epey zaman geçti
@property olasılıklarını inceleyen demolar üzerinden yeni nesil CSS’in neler sunabildiğine bakılıyor
Calls to action (eyleme çağrı öğeleri)
- Web sayfalarında dikkat çeken CTA’ler birçok sitede kullanılıyor
- Bu stil doğrudan denenmiş ve sonuç CodePen’de görülebiliyor
- Demonun CSS panelini açarsanız animasyon gereken özel özelliklerle ilgili
@property kurallarını görebilirsiniz
@property --gradient-angle {
syntax: "";
initial-value: 0deg;
inherits: false;
}
@property kuralı tarayıcıya sözdizimine izin verildiğini bildiriyor ve başlangıç değerini 0deg olarak ayarlıyor
- Böylece tarayıcı
0deg ile 360deg arasında yumuşak geçiş yapabiliyor ve dönen bir gradient üretebiliyor
@keyframes rotate-gradient {
to {
--gradient-angle: 360deg;
}
}
.rotate-gradient {
background: conic-gradient(from var(--gradient-angle), transparent, black);
animation: rotate-gradient 10s linear infinite;
}
- Basit bir gradient döndürme demosu, bu kavramı uygulamak için gereken birkaç satır kodu gösteriyor
Yumuşak hover geçişi
- Bir öğe hover olduğunda yumuşak bir gradient geçişi için bazı özel unsurlar gerekiyor
- Animasyon gereken her özel özellik,
@property tanımında sözdizimini bildirerek tarayıcının değer değişimini akıcı biçimde geçirmesini sağlıyor
.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;
}
--gradient-percent değeri parlayan alanın boyutunu belirliyor; hover sırasında daha yüksek bir yüzde ile ışık daha uzun hale geliyor
--gradient-angle-offset değeri gradient açısını yeniden ayarlayarak hover sırasında ışığın geri dönmesini engelliyor
Dönüş hızını ayarlama
- Hover sırasında dönüşü yavaşlatmaya yönelik CSS ipucu oldukça kullanışlı
- Aynı dönüş animasyonu iki kez tanımlanıyor; ikincisi ters yönde ayarlanıyor, duraklatılıyor ve süresi yarıya indiriliyor
- Öğe hover olduğunda
animation-play-state: running, duraklatılmış değeri geçersiz kılıyor ve dönüşü yarı hızda yavaşlatıyor
Küçük parlayan noktalar
- Butonun içine küçük noktalarla parıltı efekti ekleniyor
- Bunun için
radial-gradient arka planı oluşturuluyor
.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;
}
--gradient-angle özel özelliği, conic-gradient maskesinde kullanılarak nokta deseninin bir kısmını dönerken görünür hale getiriyor
Hover renklerini geliştirme
- Hover stili daha derin ve daha dikkat çekici hale gelecek şekilde iyileştiriliyor
- Buton metni bir
span öğesiyle sarılıyor ve hover sırasında genişleyip küçülmesi için blur uygulanmış bir box-shadow ekleniyor
Yeni bir stilin gelişi
- Yukarıdaki tekniklerin çoğu kısa süre öncesine kadar neredeyse imkânsızdı
- Özel özellikleri açıkça tanımlamak pek çok yeni fırsat yaratıyor
@property’nin büyük ölçekli uygulamalarda ve tasarım sistemlerinde nasıl kullanılacağını görmek heyecan verici
GN⁺ Özeti
@property kuralı, CSS özel özelliklerinin sözdizimini, başlangıç değerini ve kalıtımını açıkça tanımlama imkânı sunuyor
- Bu sayede web geliştiricileri daha karmaşık ve daha rafine animasyonlar ile stiller oluşturabiliyor
- Özellikle büyük ölçekli uygulamalar ve tasarım sistemlerinde faydalı olma potansiyeli yüksek
- Benzer işlevler sunan diğer projeler arasında CSS Houdini ve CSS Properties and Values API yer alıyor
1 yorum
Hacker News görüşleri
Yeni bir kavramla karşılaşınca beynin direnç gösterdiği hissediliyor
@property'yi bizzat kullanarak anlamak gerekiyorBir web geliştiricisi değil ama temel web framework'lerini kullanabiliyor
Son dönemdeki CSS çalışmaları, özellikle Houdini, ilgi çekici bulunuyor
Yapılabiliyor olması, mutlaka yapılması gerektiği anlamına gelmez
CSS animasyonlarıyla yapılabilen şeyler sihir gibi geliyor
Teknik olarak ilginç bir demo ama butonlar böyle animasyonlandırılmamalı
Önceki gönderiler fazla ilgi görmedi ama ilginç ve öğretici
Bu web sitesi neşe veriyor
CSS ile çalışmayı seviyor ama iş arkadaşlarının zorlandığını görüyor
Bir süredir web geliştirme yapmıyor ve bu özelliğin ne yaptığını anlaması zaman almış
@property --gradient-angle {...}bloğunda tanımlanan değerin kullanılmasını sağlıyorinherits: false;kısmının ne yaptığı açık ama neden gerekli olduğu anlaşılmıyor@propertybloğunda tanımlanması gerektiği anlaşılmıyor@propertykullanılan yerlere bakıp türü çıkaramayacağı düşünülüyor