Est-il possible d'utiliser l'animation de transition CSS3 au chargement de la page sans utiliser Javascript?
C'est un peu ce que je veux, mais au chargement de la page:
http://rilwis.googlecode.com/svn/trunk/demo/image-slider.html
Ce que j'ai trouvé jusqu'ici
- CSS3 transition-delay , un moyen de retarder les effets sur les éléments. Fonctionne uniquement en survol.
- L'image clé CSS3 , fonctionne à la charge mais est extrêmement lente. Pas utile à cause de ça.
- La transition CSS3 est assez rapide mais ne s'anime pas au chargement de la page.
css
webkit
css-transitions
css-animations
Jens Törnell
la source
la source
Réponses:
Vous pouvez exécuter une animation CSS lors du chargement de la page sans utiliser de JavaScript; il vous suffit d'utiliser des images clés CSS3 .
Regardons un exemple ...
Voici une démonstration d'un menu de navigation glissant en place en utilisant uniquement CSS3 :
Décomposez-le ...
Les parties importantes ici sont l'animation d'images clés que nous appelons
slideInFromLeft
...... qui dit essentiellement "au début, l'en-tête sera sur le bord gauche de l'écran par sa pleine largeur et à la fin sera en place".
La deuxième partie appelle cette
slideInFromLeft
animation:Ci-dessus se trouve la version abrégée, mais voici la version verbeuse pour plus de clarté:
Vous pouvez faire toutes sortes de choses intéressantes, comme glisser dans le contenu ou attirer l'attention sur des zones.
Voici ce que le W3C a à dire.
la source
Très peu de Javascript est nécessaire:
Maintenant le CSS:
Je sais que la question disait "sans Javascript", mais je pense qu'il vaut la peine de souligner qu'il existe une solution simple impliquant une ligne de Javascript.
Cela pourrait même être du Javascript en ligne, quelque chose comme ça:
C'est tout le JavaScript nécessaire.
la source
body
classes existantes , utilisez:document.body.classList.add('loaded)
document.body.className += " loaded";
un peu moins verbeux pour ajouter laloaded
classe aux classes existantes.Je pense avoir trouvé une sorte de contournement pour la question OP - au lieu d'une transition commençant `` on.load '' de la page - j'ai trouvé que l'utilisation d'une animation pour un fondu d'opacité avait le même effet, (je cherchais la même chose que OP).
Je voulais donc que le corps du texte passe du blanc (identique à l'arrière-plan du site) à la couleur du texte noir lors du chargement de la page - et je ne codifie que depuis lundi, donc je cherchais un code de chose de style 'on.load', mais je ne connais pas encore JS - voici donc mon code qui a bien fonctionné pour moi.
Et pour une raison quelconque, cela ne fonctionne que pour les
.class
seuls#id
(du moins pas pour les miens)J'espère que cela aide - car je sais que ce site m'aide beaucoup!
la source
Eh bien, c'est une question délicate.
La réponse est "pas vraiment".
CSS n'est pas une couche fonctionnelle. Il n'a aucune conscience de ce qui se passe ou quand. Il est utilisé simplement pour ajouter une couche de présentation à différents "drapeaux" (classes, identifiants, états).
Par défaut, CSS / DOM ne fournit aucun type d'état «à la charge» pour CSS à utiliser. Si vous vouliez / pouviez utiliser JavaScript, vous alloueriez une classe à
body
ou quelque chose pour activer du CSS.Cela étant dit, vous pouvez créer un hack pour cela. Je vais vous donner un exemple ici, mais il peut ou non être applicable à votre situation.
Nous partons du principe que "fermer" est "assez bon":
Voici un extrait de notre feuille de style CSS:
Nous partons également du principe que les navigateurs modernes sont rendus progressivement, donc notre dernier élément sera rendu en dernier, et donc ce CSS sera activé en dernier.
la source
Similaire à la solution de @ Rolf, mais saute la référence aux fonctions externes ou joue avec la classe. Si l'opacité doit rester fixée à 1 une fois chargée, utilisez simplement le script en ligne pour changer directement l'opacité via le style. Par exemple
où le sytle CSS "fadein" est défini par @ Rolf, définissant la transition et définissant l'opacité à l'état initial (c'est-à-dire 0)
le seul problème est que cela ne fonctionne pas avec les éléments SPAN ou DIV, car ils n'ont pas d'événement onload fonctionnel
la source
Commencez-le avec le survol du corps.
c'est la meilleure chose à laquelle je puisse penser: http://jsfiddle.net/faVLX/
plein écran: http://jsfiddle.net/faVLX/embedded/result/
Modifier voir les commentaires ci-dessous:
Cela ne fonctionnera sur aucun appareil à écran tactile car il n'y a pas de survol, donc l'utilisateur ne verra pas le contenu à moins qu'il ne le touche. - Rich Bradshaw
la source
CSS uniquement avec un délai de 3s
quelques points à prendre ici:
Code:
la source
Ok j'ai réussi à réaliser une animation lorsque la page se charge en utilisant uniquement des transitions css (en quelque sorte!):
J'ai créé 2 feuilles de style css: la première est la façon dont je veux que le html soit stylé avant l'animation ... et la seconde est la façon dont je veux que la page ressemble après que l'animation a été réalisée.
Je ne comprends pas entièrement comment j'ai accompli cela mais cela ne fonctionne que lorsque les deux fichiers css (tous deux dans la tête de mon document) sont séparés par du javascript comme suit.
J'ai testé cela avec Firefox, safari et opéra. Parfois, l'animation fonctionne, parfois elle passe directement au deuxième fichier css et parfois la page semble se charger mais rien ne s'affiche (peut-être que c'est juste moi?)
Voici un lien vers mon site Web de travail en cours: http://www.hankins-design.co.uk/beta2/test/index.html
Peut-être que je me trompe, mais je pensais que les navigateurs qui ne prennent pas en charge les transitions css ne devraient pas avoir de problèmes car ils devraient passer directement au deuxième fichier css sans délai ni durée.
Je suis intéressé de savoir comment cette méthode est conviviale pour les moteurs de recherche. Avec mon chapeau noir, je suppose que je pourrais remplir une page de mots-clés et appliquer un délai de 9999 secondes sur son opacité.
Je serais intéressé de savoir comment les moteurs de recherche traitent l'attribut transition-delay et si, en utilisant la méthode ci-dessus, ils verraient même les liens et les informations sur la page.
Plus important encore, j'aimerais vraiment savoir pourquoi ce n'est pas cohérent à chaque fois que la page se charge et comment je peux y remédier!
J'espère que cela peut générer des points de vue et des opinions si rien d'autre!
la source
Si quelqu'un d'autre a eu des problèmes pour faire deux transitions à la fois, voici ce que j'ai fait. J'avais besoin que le texte vienne de haut en bas lors du chargement de la page.
HTML
HTML
CSS
Je ne sais pas pourquoi j'ai continué à essayer d'utiliser 2 déclarations de transition dans 1 sélecteur et (pas vraiment) en pensant qu'il utiliserait les deux.
la source
Solution encore plus simple (toujours avec [une ligne en ligne] javascript):
Utilisez ceci comme balise corps: Notez que
body.
outhis.
n'a pas fonctionné pour moi. Seulement le long;querySelector
autoriser l'utilisation declassList.remove
(Linux Chromium)et ajoutez cette ligne en plus de vos autres règles css.
Notez que cela peut s'appliquer à l'opacité (comme demandé par OP [autres affiches]) simplement en utilisant l'opacité comme déclencheur de transition à la place. (peut même fonctionner sur toute autre règle css de la même manière et vous pouvez utiliser plusieurs classes pour le délai d'explicité entre le déclenchement)
La logique est la même. N'appliquez aucune transformation (avec
:none !important
sur tous les éléments enfants debody.onload
et une fois le document chargé, supprimez la classe pour déclencher toutes les transitions sur tous les éléments comme spécifié dans votre css.PREMIÈRE RÉPONSE CI-DESSOUS (VOIR MODIFICATION CI-DESSUS POUR UNE RÉPONSE PLUS COURTE)
Voici une solution inverse:
Fonctionne avec plusieurs transitions sur plusieurs éléments. N'a pas essayé la compatibilité entre navigateurs.
la source
Pas vraiment, car CSS est appliqué dès que possible, mais les éléments ne sont peut-être pas encore dessinés. Vous pouvez deviner un délai de 1 ou 2 secondes, mais cela ne semblera pas correct pour la plupart des gens, en fonction de la vitesse de leur Internet.
De plus, si vous voulez faire fondre quelque chose, par exemple, il faudrait un CSS qui cache le contenu à livrer. Si l'utilisateur n'a pas de transitions CSS3, il ne la verra jamais.
Je recommanderais d'utiliser jQuery (pour faciliter l'utilisation + vous souhaiterez peut-être ajouter une animation pour d'autres UA) et certains JS comme ceci:
Avec les transitions ajoutées dans le CSS. Cela a l'avantage de permettre facilement l'utilisation d'animation au lieu du deuxième CSS dans les navigateurs hérités si nécessaire.
la source
#id_to_fade in
, bien que je sois d'accord, ce n'est pas si clair d'après la réponse.#id_to_fade_in { -webkit-transition:opacity 0.5s ease-in-out; }
+-o-
, les-moz-
préfixes également.