2013-05-23 14 views
6

Bunun neden Chrome'da değil Safari'de çalıştığı hakkında bir fikriniz var mı?CSS glow animasyon anahtar kareleri Chrome'da çalışır, ancak iOS Safari'de değil

http://jsfiddle.net/tTxMV/

CSS:

@-webkit-keyframes glow { 
    0% { 
     opacity: 0; 
    } 
    50% { 
     opacity: 1; 
    } 
    100% { 
     opacity: 0; 
    } 
} 
.glow:after { 
    -webkit-animation-name:    glow; 
    -webkit-animation-duration:   1s; 
    -webkit-animation-iteration-count: infinite; 
    -webkit-animation-timing-function: ease-in-out; 
    background: rgba(255,255,255,0.5); 
    border: 1px solid rgba(255,255,255,0.5); 
    position: absolute; 
    top: -1px; 
    left: -1px; 
    right: -1px; 
    bottom: -1px; 
    content: ""; 
    border-radius: 3px; 
    opacity: 0; 
} 

#btn { 
    background: red; 
    text-align: center; 
    font-size: 100px; 
    color: white; 
    line-height: 100px; 
} 

HTML:

<div id="btn" class="glow"> 
    Start 
</div> 

cevap

5

Eh, iOS sözde elemanları üzerinde animasyonları desteklemediği gerçekten değil, öyle WebKit gelen daha bir hata oldu. solved it in January ve Chrome'un hızlı güncellemeleri nedeniyle Chrome'da şu anda çalışıyor, ancak Safari'de değil, mobil cihaz veya masaüstü sürümü de değil.

Söz konusu öğenin yerine yalnızca tüm öğe (#btn) üzerinde animasyon çalışması yapın.

.glow:after { 
    background: rgba(255,255,255,0.5); 
    border: 1px solid rgba(255,255,255,0.5); 
    position: absolute; 
    top: -1px; 
    left: -1px; 
    right: -1px; 
    bottom: -1px; 
    content: ""; 
    border-radius: 3px; 
} 

#btn { 
    -webkit-animation-name:    glow; 
    -webkit-animation-duration:   1s; 
    -webkit-animation-iteration-count: infinite; 
    -webkit-animation-timing-function: ease-in-out; 
    background: red; 
    text-align: center; 
    font-size: 100px; 
    color: white; 
    line-height: 100px; 
    opacity: 0; 
} 

http://jsfiddle.net/tTxMV/2/

+0

cevap için teşekkürler, ama noktası ': after' sözde eleman ışıma herhangi bir renk üzerinde çalışacak, böylece beyaz 'maske' eklemek oldu. Bununla, tüm elemanımın opaklığı azalır ve parlaklık yerine daha mat görünmesini sağlar. Düğmenin önüne bir eleman eklemeden beyaz bir maske olarak yapmamın bir yolu var mı? – Garrett

+1

@Garrett Sadece keman güncelledim, belki böyle bir şey yaparak tamam olacak: http://jsfiddle.net/tTxMV/4. HTML'de fazladan öğe yok, ancak CSS'de biraz daha fazla çalışma var. Fazladan işaret eklemeden, bunu başarmanın en kolay yolu olacağını düşünüyorum ve kodunuzun sözde-elemanlar kullanmak gibi bir şekilde tekrar kullanılabilir olmasını sağlayın. Bazen tarayıcıları kazanmaya zorlandık: ´ ( – pzin

+0

Sanırım bu, Safari hatasıyla olduğu kadar yakın. Teşekkürler! – Garrett

3

iOS sözde sınıfları üzerinde animasyonları desteklemez.

Hata, Webkit'te 2 Ocak 2013'te (http://trac.webkit.org/changeset/138632) düzeltildi, dolayısıyla bunun iOS 7 ve üzerinde çalışmasını bekleyebiliriz.

Şimdilik, öğeyi animasyon üzerinde doğrudan kullanamazsınız (yani .glow için .glow:after takas ve opaklık yerine rgba animasyonu olarak değiştirin)?

İlgili konular