İstatistik Sayacı Kartı
Bu, sayfa kaydırıldıkça sayılar hareketlendiğinden ve sıfırdan arttığından gösterge tabloları ve açılış sayfaları için ideal olan bir istatistik kartı bileşenidir.
HTMLCSSJavaScript
Önizleme
Dört istatistik kartı bir tablo halinde düzenlenmiştir ve siz kaydırdıkça sayılar sıfırdan başlayarak sayılır.
0
Active Users
0%
Satisfaction
0+
Countries
0%
Uptime
Kullanım durumları ve özellikleri
- Açılış sayfası performansı bölümü: Görüntülemeler, müşteri memnuniyeti, ülke sayısı vb. gibi ölçümleri etkili bir şekilde iletin.
- Kavşak Gözlemcisini Kullanma: Animasyon kaydırıldığında ve ilk kez göründüğünde tetiklenir.
- Ondalık nokta desteği: “data-decimals” özelliğiyle hem tamsayı hem de ondalık sayaçları destekler.
- CSS değişkenleriyle renk yönetimi: Her kartın vurgu renklerini ayırmak için
--accentdeğişkenini kullanabilirsiniz.
Tasarım ve kullanıcı deneyiminin önemli noktaları
- Ease-out animasyonu: “Kübik-bezier” yerine, kübik bir gizli işlevin kullanıldığı benzersiz bir hareket hızı, sayısal değerin hızlanmasının durduğu doğal bir harekettir.
- Degrade metin:
-webkit-background-clip: textile sayının kendisi bir derecelendirmeye dönüşerek birinci sınıf bir his yaratır. - Sayıları
toLocaleString()ile biçimlendir: Sayıları 12847 → 12,847 gibi yerel ayara göre görüntüleyin.
Nasıl kişiselleştirilir
Sayma hızını değiştir (milisaniye):
// Animasyon süresini kısaltın
// animateCounter(el, target, suffix, decimals, 1000);
// Animasyon süresini uzatın
// animateCounter(el, target, suffix, decimals, 3000);
Ondalık basamak sayısını değiştir:
<!-- 3 ondalık basamak -->
<span class="stat-number" data-target="99.999" data-suffix="%" data-decimals="3">0%</span>
Uygulama kodu
<div class="stats-grid">
<div class="stat-card stat-card-1">
<div class="stat-icon">🚀</div>
<span class="stat-number" data-target="12847" data-suffix="" data-decimals="0">0</span>
<div class="stat-label">Active Users</div>
</div>
<!-- Diğer kartlar için benzer yapı -->
</div>
<style>
`
.stat-number {
background: linear-gradient(135deg, var(--accent), var(--accent-light));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.stat-card-1 { --accent: #6366f1; --accent-light: #8b5cf6; }
`
</style>
<script>
(function() {
function animateCounter(el, target, suffix, decimals, duration) {
var start = null;
function step(ts) {
if (!start) start = ts;
var p = Math.min((ts-start)/duration,1);
var v = (1-Math.pow(1-p,3))*target;
el.textContent=(decimals>0?v.toFixed(decimals):Math.floor(v).toLocaleString())+suffix;
if(p<1) requestAnimationFrame(step);
}
requestAnimationFrame(step);
}
var observer = new IntersectionObserver(function(entries) {
entries.forEach(function(e) {
if (e.isIntersecting) {
var el = e.target;
if (!el.classList.contains('animated')) {
el.classList.add('animated');
animateCounter(el, parseFloat(el.dataset.target), el.dataset.suffix || '', parseInt(el.dataset.decimals || '0'), 2000);
}
}
});
}, { threshold: 0.5 });
document.querySelectorAll('.stat-number').forEach(function(el) {
observer.observe(el);
});
})();
</script> Tarayıcı uyumluluk durumu
| Tarayıcı | Uyumluluk durumu |
|---|---|
| Krom 51+ | ✅ Tamamen uyumlu |
| Firefox 55+ | ✅ Tamamen uyumlu |
| Safari 12.1+ | ✅ Uyumlu |
| Kenar 79+ | ✅ Tamamen uyumlu |
Intersection Observer API, Nenewa’yı yalnızca modern tarayıcılarda destekler. IE11 desteği istiyorsanız çoklu doldurma gereklid