JavaScript ile webkit anahtar karesinin from
veya to
ayarlanmasını sağlayan bir yol var mı?JavaScript ile webkit anahtar karelerini/parametresinden ayarlayın
cevap
Bir çeşit çözüm:
var cssAnimation = document.createElement('style');
cssAnimation.type = 'text/css';
var rules = document.createTextNode('@-webkit-keyframes slider {'+
'from { left:100px; }'+
'80% { left:150px; }'+
'90% { left:160px; }'+
'to { left:150px; }'+
'}');
cssAnimation.appendChild(rules);
document.getElementsByTagName("head")[0].appendChild(cssAnimation);
Sadece başlığına bir stil tanımını ekler. Mümkünse DOM'yi tanımlamak için çok daha temiz/daha iyi olurdu.
Düzenleme: eski yöntemle Chrome'da Hata
Neden bunun yerine CSSOM API'sini kullanmıyorsunuz? –
Bunu çözmek için benim örnekte, benim seçenekleri için kırmızı ve sarı renklendirme ayrı kural benim CSS seçicisi bir 'webkit animasyon adını' eklendi ve sonra oluşturuldu:
jQuery kullanarak Sonra.spinner {
-webkit-animation-name: spinnerColorRed;
}
@-webkit-keyframes spinnerColorRed {
from {
background-color: Black;
}
to {
background-color: Red;
}
}
@-webkit-keyframes spinnerColorYellow {
from {
background-color: Black;
}
to {
background-color: Yellow;
}
}
:
$("#link").click(function(event) {
event.preventDefault();
$(".spinner").css("-webkit-animation-name", "spinnerColorYellow");
});
JQuery'yi gerekli olmadığı yerlerde kullanmayın ... Ve bunun olmadığı durum budur. DOM seviyelerini temizlemek için – m93a
Sanırım bu da set getirmemektir işlemek Öyle ya eleman tarzı için ben css dosyasında ve befo manipüle ediyorum dan Animasyonu tetiklerken javascript ile gitmesi gereken öğe stilini ayarlayacağım. Bu şekilde, js'de bunu doğrudan yönetebilmemiz için hangi şeylerin ne yapması gerektiğini dinamik olarak yönetebilirsiniz. Sadece ikisinden birini belirtmeniz gerekiyor. SetTimeout, canlandırma tetiklenmeden önce css kuralının öğeye uygulanmasına izin verir, aksi takdirde bir yarış durumunuz olur ve animasyon olmaz.
#someDiv.slideIn {
-webkit-animation: slideIn 0.5s ease;
}
@-webkit-keyframes slideIn {
0% {
left:0px;
}
100% {}
}
var someDiv = document.getElementById('someDiv');
someDiv.style.left = '-50px';
setTimeout(function(){
someDiv.addClass('slideIn');
},0);
Sen CSS DOM arayüzünü kullanabilirsiniz. Örneğin:
<html>
<body>
<style>
@keyframes fadeout {
from { opacity:1; }
to { opacity:0; }
}
</style>
<script text="javascript">
var stylesheet = document.styleSheets[0];
var fadeOutRule = stylesheet.cssRules[0];
alert(fadeOutRule.name); // alerts "fadeout"
var fadeOutRule_From = fadeOutRule.cssRules[0];
var fadeOutRule_To = fadeOutRule.cssRules[1];
alert(fadeOutRule_From.keyText); // alerts "0%" (and not "from" as you might expect)
alert(fadeOutRule_To.keyText); // alerts "100%"
var fadeOutRule_To_Style = fadeOutRule_To.style;
alert(fadeOutRule_To_Style.cssText); // alerts "opacity:0;"
fadeOutRule_To_Style.setProperty('color', 'red'); // add the style color:red
fadeOutRule_To_Style.removeProperty('opacity'); // remove the style opacity
alert(fadeOutRule_To_Style.cssText); // alerts "color:red;"
</script>
</body>
</html>
+1! – cdehaan
Bu örnekte birkaç farklı tarayıcılar kapsar:
var keyFramePrefixes = ["-webkit-", "-o-", "-moz-", ""];
var keyFrames = [];
var textNode = null;
for (var i in keyFramePrefixes){
keyFrames = '@'+keyFramePrefixes[i]+'keyframes cloudsMove {'+
'from {'+keyFramePrefixes[i]+'transform: translate(0px,0px);}'+
'to {'+keyFramePrefixes[i]+'transform: translate(1440px'
'px,0px);}}';
textNode = document.createTextNode(keyFrames);
document.getElementsByTagName("style")[0].appendChild(textNode);
}
- 1. WebKit on th iPhone: JavaScript
- 2. PyQt (PySide), WebKit ve/Javascript
- 3. Javascript kullanarak yüksekliği ayarlayın
- 4. WebKit
- 5. JavaScript sabitleri | Stil ve anahtar kelime
- 6. WebKit
- 7. Javascript varsayılan anahtar kelime
- 8. Hash anahtar sözcükler içinde JavaScript anahtar sözcükleri
- 9. Pencerenin konumunu AppleScript ile ayarlayın
- 10. Nodejs-webkit
- 11. JavaScript kullanarak WebKit tarayıcılarından yerel dosya sistemine nasıl erişilir?
- 12. Greasemonkey JavaScript Anahtar Basın Yardım
- 13. webkit geçiş yüksekliği?
- 14. Entity Framework 6.1.3: Benzersiz anahtar kısıtlamasını bir sütuna ayarlayın
- 15. Javascript kullanarak bir CSS3 (webkit) animasyonu nasıl aktive edilir?
- 16. -webkit-background-size jQuery Css ile çalışmaz
- 17. WebKit Hyphenation
- 18. Webkit önbelleğe değil
- 19. Javascript sözdizimi geçersiz olarak Safari/Webkit, Chrome/Firefox'ta düzgün çalışıyor
- 20. Anahtar girilirken bir işlev çağırmak, JavaScript
- 21. javascript anahtar bildirimi/büyük/küçük harf ifadesi
- 22. CGAffineTransform ile ölçeklendirin ve bağlantıyı ayarlayın
- 23. jQuery.ajax ve JSONP ile Üstbilgileri Ayarlayın
- 24. Proses Tepkimesi ile Başlık Seviyesini Ayarlayın
- 25. Varsayılan lacivert geçişi ile NULL olarak ayarlayın
- 26. Güncelleştirme ve değeri max() + 1 ile ayarlayın
- 27. anahtar değeri 'anahtar' ile değiştirilirken() twer
- 28. ValidationMessageFormModelError (anahtar, mesaj) ile birlikte. Anahtar nedir?
- 29. eval() anahtar kelime molası derleyici optimizasyonlar javascript
- 30. Node-Webkit - Başlangıç Maximized
Ben de bu ilgileniyorum. Javascript'ten (webkit için @ -webkit-anahtar kareleri) animasyonu tanımlayacağına inanıyorum. Spec: http://www.w3.org/TR/css3-animations/ –
Bu özelliğin altında aşağı doğru fark edildiğinde, "CSS animasyonu CSSOM'a anahtar karelerini açıklayan yeni arayüzler çifti. " Bunun Javascript ile nasıl erişileceğini/kullanıldığını bilen var mı? –
@ adam-heath - DOM arayüzünü kullanma örneği için cevabımı inceleyin. –