Menu

CSS Hover: :hover, :active ve Link Renk Durumları

:hover sözde sınıfı, fare imleci bir elementin üzerindeyken ona stil verir. Butonlar ve kartlar için hover efektlerini, yumuşak geçişleri, doğru sırada :link, :visited, :hover ve :active ile link renklerini ve dokunmatik ekranlarda hover'ı öğren.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

:hover nasıl çalışır

:hover, fare imleci bir elementin üzerindeyken onunla eşleşen bir sözde sınıftır. Onu herhangi bir seçiciye ekle ve hover durumunun stillerini yaz:

Yalnızca :hover kuralındaki bildirimler değişir; geri kalan her şey .btn'den gelir. İmleç ayrıldığında element normal stillerine döner.

transition ile yumuşak hover efektleri

Bir hover değişimi, transition'ı normal kurala (:hover kuralına değil) eklemedikçe anlıktır; bu şekilde hem girişte hem çıkışta canlanır:

transform ve opacity, canlandırması en ucuz özelliklerdir; çevrelerindeki elementleri yerinden oynatmazlar. width, height ya da margin canlandırmak ise sayfanın her karede yeniden yerleşim yapmasına neden olur. Süreler, gecikmeler ve hızlanma eğrileri CSS transition sayfasında anlatılıyor.

Linklerin dört klasik durumu ve bir de klavye odağı vardır; kuralların sırası önemlidir:

Sözde sınıfNe zaman uygulanır
:linkLink ziyaret edilmemişse
:visitedURL tarayıcı geçmişinde varsa
:hoverİmleç üzerindeyse
:activeBasılıyorsa
:focus-visibleKlavye odağı ondaysa

Bunların hepsi aynı özgüllüğe sahiptir, bu yüzden ikisi eşleştiğinde sonraki kural kazanır. Üzerine gelinen ziyaret edilmiş bir link hem :visited hem :hover ile eşleşir; :visited en sonda gelirse hover rengi hiç görünmez. Güvenli sıra Link, Visited, Hover, Active'dir (LVHA):

Tarayıcılar, sayfaların geçmişini okumasını engellemek için :visited'ın neleri değiştirebileceğini sınırlar. Yalnızca renkle ilgili özellikler (color, background-color, border-color, outline-color ve birkaç tane daha) etkili olur ve scriptler her zaman ziyaret edilmemiş değeri görür.

:active: basılı durum

:active, element basılı tutulurken eşleşir. Küçük bir hareket, butonun fiziksel bir şey gibi hissettirmesini sağlar:

Çocuğa stil vermek için ebeveynin üzerine gelmek

Hover durumu imlecin altındaki elemente ve onun bütün atalarına aittir. Bu yüzden .card:hover .title, kartın herhangi bir kısmının üzerine gelindiğinde başlığa stil verir; aynı fikir gizli elementleri ortaya çıkarır:

:focus-within satırı önemlidir: o olmadan, Delete butonuna Tab ile gelen bir klavye kullanıcısı görünmez bir butona basardı. Hover ile ortaya çıkan her şeyi bir odak kuralıyla eşleştir.

Dokunmatik ekranlarda hover

Telefonlarda ve tabletlerde bir elementin üzerinde duran bir imleç yoktur. Çoğu mobil tarayıcı :hover'ı ilk dokunuşta uygular ve başka bir yere dokunana kadar tutar, bu yüzden bir hover stili takılı kalmış gibi görünebilir. Bunu iki kural kontrol altında tutar:

  • İçeriğe ulaşmanın tek yolunu asla :hover'ın arkasına koyma. Hover ile açılan bir menü tıklamayla da açılmalıdır.
  • Tamamen dekoratif hover efektlerini, gerçek bir hover cihazı olup olmadığını kontrol eden bir medya sorgusunun içine al:
@media (hover: hover) {
  .card:hover { transform: translateY(-4px); }
}

Sık yapılan hatalar

  • İki noktadan önce boşluk. .btn :hover, ".btn içinde üzerine gelinen bir element" anlamına gelir. .btn:hover yaz.
  • transition yalnızca :hover kuralında. O zaman girişte canlanır ama çıkışta birden geri döner. Onu normal kurala koy.
  • Yanlış link sırası. :link, :visited, :hover, :active sırasını koru.
  • Odak stili olmayan hover. Klavye kullanıcıları :hover'ı hiç tetiklemez; etkileşimli elementlere bir :focus-visible stili de ver.
  • Başka bir elementin örttüğü elementte hover. Görünmez bir katman (çoğunlukla absolute konumlu bir sözde element) imleci yakalayabilir. Katmana pointer-events: none vermek bunu çözer.

Sıkça Sorulan Sorular

CSS'te hover efekti nasıl eklenir?

Seçiciden sonra :hover olan bir kural yaz: .btn:hover { background: #1d4ed8; }. Bildirimler, imleç elementin üzerindeyken uygulanır. Değişimi canlandırmak için normal kurala transition: background 0.2s; ekle.

:hover ile :active arasındaki fark nedir?

:hover, imleç elementin üzerindeyken uygulanır. :active ise element basılı tutulurken, fare tuşu inişinden bırakılana kadar uygulanır. Basılan bir buton genellikle hem hover hem active durumundadır.

Link sözde sınıfları hangi sırada olmalı?

:link, :visited, :hover, :active (LVHA olarak ya da İngilizce "LoVe HAte" diye aklında tut). Özgüllükleri eşittir, bu yüzden sonraki kural kazanır; başka herhangi bir sırada visited ya da hover stili, hover veya active stilini gizleyebilir.

CSS'te link rengi nasıl değiştirilir?

a elementine stil ver: a { color: #2563eb; }, ardından diğer durumlar için a:visited { color: #7c3aed; } ve a:hover { color: #1d4ed8; }. a üzerinde color ayarlamak hem ziyaret edilmemiş hem ziyaret edilmiş linkleri kapsar.

Hover mobilde çalışır mı?

Dokunmatik ekranlarda bir elementin üzerinde duracak bir imleç yoktur. Çoğu mobil tarayıcı :hover'ı dokunuşta uygular ve başka bir yere dokunana kadar tutar, bu da bir hover stilinin takılı kalmasına yol açabilir. Yalnızca hover'a özel efektleri @media (hover: hover) içine al ve temel içeriği asla hover'ın arkasına saklama.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA