Comment créer dynamiquement '@-image-clé' les animations CSS?
J'ai une exigence pour faire tourner un div et de s'arrêter à un poste particulier ( La valeur sera reçu par le serveur).
J'ai essayé natif de JS pour faire pivoter et de s'arrêter mais il est en train de manger mon CPU gros temps.
Je peux le faire tourner avec les animations CSS, mais j'ai besoin de créer une classe qui va décrire de façon dynamique où pour arrêter l'animation. Quelque chose comme
@-webkit-keyframes spinIt {
100% {
-webkit-transform: rotate(A_DYNAMIC_VALUE);
}
}
@-moz-keyframes spinIt {
100% {
-webkit-transform: rotate(A_DYNAMIC_VALUE);
}
}
Ici est une référence
Merci d'Avance
- Si vous connaissez la valeur avant le chargement de la page, vous pouvez juste écrire la valeur avec PHP echo, si vous ne connaissez pas la valeur avant le chargement de la page vous pouvez utiliser Ajax
- hey, dans fiddle chaque chose semble de travail, pouvez-vous s'il vous plaît vider votre exigence
Vous devez vous connecter pour publier un commentaire.
eh bien, je ne pense pas que c'est facile de créer des dynamiques
@keyframes
elles sont rigides car elles doivent être codées en dur.Les Transitions sont un peu plus facile de travailler avec, car ils peuvent normalement répondre à toutes les CSS modifications apportées par JavaScript.
Cependant, la complexité que les transitions CSS peut vous donner est assez limité — une animation avec plusieurs étapes est difficile à réaliser.
C'est un problème de CSS @les animations d'images clés sont destinés à résoudre, mais ils n'offrent pas le niveau de la dynamique de la réactivité que les transitions ne.
mais ces liens peuvent vous aider à
Link1 : un outil qui génère un @-webkit-animation avec des images clés avec beaucoup de petites étapes. Cela ouvre la porte à un choix illimité de l'assouplissement de la formule.
Link2 il sera d'une grande aide pour vous de prendre comme base, car il fournit une INTERFACE utilisateur pour créer des animations et des exportations pour le code CSS.
Je suppose que cette solution sera certainement travailler pour vous. Son est utilisé pour la dynamique des images clés
Vous pouvez insérer la feuille de style dynamique de règles pour remplacer des styles précédents dans la tête. Cela permet d'éviter l'ajout d'une autre bibliothèque pour une seule tâche.
document.head.appendChild(style)
style-src 'unsafe-inline'
.Alex Grande réponse fonctionne très bien pour quelques images clés. Mais, disons que vous avez de vouloir continuer à ajouter dans les images clés, encore et encore, alors votre page web vraiment de lag vraiment rapide. Pour résoudre ce problème, il suffit d'ARRÊTER de créer de nouveaux éléments du DOM. Plutôt, créer 1 nouveau DOM feuille de style, et de la réutiliser avec les inertRule. Si vous voulez encore plus d'images clés (comme si vous êtes à la génération d'une nouvelle image clé toutes les animationframe), alors vous avez besoin de mettre en place un système qui supprime les anciennes images clés après qu'ils ne sont plus utilisés. C'est un bon début pour comment quelque chose comme cela peut être réalisé.
Exemple d'utilisation:
Aussi, Alex Grande, je suis assez sûr que
document.getElementsByTagName('head')[0]
ettype = 'text/css'
n'a pas été nécessaire étant donné que la IE8, et@keyframes
ne sont pas pris en charge jusqu'à IE10. Juste pour dire...Vous pouvez changer le style en CSSKeyframeRule, et cela fonctionne très bien pour moi en Chrome, tout comme le code ci-dessous.
Espérons que cela aidera:)
HTML:
En JavaScript est-il possible d'accéder à la feuille de style avec document.les feuilles de style. Chaque fiche a un règle et/ou cssRule liste (navigateur en fonction) et un CSSStyleSheet.insertRule() méthode.
Cette méthode permet d'ajouter une nouvelle image-clé raw comme une chaîne de caractères:
JavaScript
html
démo: https://jsfiddle.net/axd7nteu/
la user7892745 l'habitude de travailler pour moi, besoin d'un peu d'ajustement
1° "pos" ne pas comprendre wot devrait être, mais le journal de la console de dire "non défini"
j'ai donc supprimer "pos"
2° " myReuseableStylesheet.insertRule" donnez-moi de l'erreur "n'est pas une fonction"
j'ai donc utilisé "innerHTML" place de "insertRule"
3° enfin, j'ai déménagé"
document.tête.appendChild( myReuseableStylesheet );" à la fin
mais après cela, il fonctionne bien et c'est exacte ce que je recherche.
merci beaucoup user7892745 😀
peut-être que le problème que j'ai eu, venir de la façon dont je l'utilise
c'est le script que j'ai utilisé avec
je sais thath html marquee cuold semblent symple pour faire la même chose, mais ne fonctionnent pas bien,
Vous pouvez créer un
<style>
élément, placez son contenu dans le fichier CSS que vous voulez, dans ce cas, la déclaration de votre animation et l'ajouter à la<head>
de la page.Aussi, comme d'autres l'ont suggéré, si vous avez besoin pour créer de nombreuses animations différentes, alors il serait préférable de réutiliser un seul
<style>
balise plutôt que de créer plusieurs d'entre eux et d'ajouter de nouveaux modèles à l'aide deCSSStyleSheet.insertRule()
.Enfin, si vous pouvez utiliser ES6 du modèle de littéraux/chaînes, votre code est beaucoup plus propre:
JS:
CSS:
HTML:
Ou encore mieux:
JS:
CSS:
HTML:
Vous pouvez créer une nouvelle feuille de style avec l'animation que vous voulez dedans.
Par Exemple:
Cela permettrait de créer une nouvelle feuille de style avec votre animation.
Cette méthode a été testée uniquement sur Chrome.
Permettez-moi de partager une mise à jour (2019) réponse à cette question. **Oui, c'est possible sans Javascript ** à l'aide de CSS Variables (pris en charge par tous les navigateurs modernes).
Voir démo sur Codepen Dynamique les Animations CSS CSS Variables