CSS: Fare üzerinden dışarı çıktığında geçiş opaklığı?


115
.item:hover {
        zoom: 1;
        filter: alpha(opacity=50);
        opacity: 0.5;
        -webkit-transition: opacity .15s ease-in-out;
        -moz-transition: opacity .15s ease-in-out;
        -ms-transition: opacity .15s ease-in-out;
        -o-transition: opacity .15s ease-in-out;
        transition: opacity .15s ease-in-out;
    }

Bu neden yalnızca üzerine geldiğimde opaklığı canlandırırken, nesneyi fareyle bıraktığımda neden olmuyor?

Demo burada: http://jsfiddle.net/7uR8z/


Safari kullanıyorum ve nesneyi fareyle bıraktığımda bile mükemmel çalışıyor ... Sorun nedir?
AleVale94

Hayır, benim için çalışmıyor! Kırmızı kutunun üzerine geldiğimde geçiş çalışıyor! Kırmızı kutuyu fareyle terk ederken, tam opaklığa geri "sıçrar" - fareyi çekerken de canlandırılmasını istiyorum!
matt

Neden filtreyi kullanmıyorsunuz ... caniuse.com/#search=filter
DevWL

Yanıtlar:


202

Geçişleri :hoveröğenin kendisine değil, yalnızca sözde sınıfa uyguluyorsunuz .

.item {   
  height:200px;
  width:200px;
  background:red; 
  -webkit-transition: opacity 1s ease-in-out;
  -moz-transition: opacity 1s ease-in-out;
  -ms-transition: opacity 1s ease-in-out;
  -o-transition: opacity 1s ease-in-out;
  transition: opacity 1s ease-in-out;
}

.item:hover {
  zoom: 1;
  filter: alpha(opacity=50);
  opacity: 0.5;
}

Demo: http://jsfiddle.net/7uR8z/6/

Geçişin mouse-overolayı etkilemesini istemiyorsanız , ancak yalnızca durum mouse-outiçin geçişleri kapatabilirsiniz :hover:

.item:hover {
  -webkit-transition: none;
  -moz-transition: none;
  -ms-transition: none;
  -o-transition: none;
  transition: none;
  zoom: 1;
  filter: alpha(opacity=50);
  opacity: 0.5;
}

Demo: http://jsfiddle.net/7uR8z/3/


2

Rahat olduğum css / jQuery kullanarak bir çözüm bulmayı başardım. Asıl sorun: Alanın dışında asılı öğelerim olduğu için animasyon sırasında görünürlüğü göstermeye zorlamam gerekiyordu. Bunu yaparak, büyük metin blokları artık animasyon sırasında içerik alanının dışında asılı kalıyor.

Çözüm, ana metin öğelerini 0 opaklık ile başlatmak ve 1 opaklığa addClassenjekte etmek ve geçiş yapmaktı. Sonra removeClasstekrar tıklandığında.

Eminim bunu yapmanın bir jQquery yolu vardır. Bunu yapacak kişi ben değilim. :)

Yani en basit şekliyle ...

.slideDown().addClass("load");
.slideUp().removeClass("load");

Herkese yardım için teşekkürler.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.