Détails
Utilisation de CSS pour un effet de fondu au chargement de la page
Peut-on utiliser des transitions CSS pour permettre à un paragraphe de texte d'apparaître en fondu au chargement de la page ?
J'aime beaucoup l'effet obtenu sur [http://dotmailapp.com/][1] et j'aimerais utiliser un effet similaire en utilisant les CSS. Le domaine a depuis été acheté et ne présente plus l'effet mentionné. Une copie archivée peut être consultée [sur la Wayback Machine][1].
Illustration
Ayant ce balisage :
<div id="test">
<p>This is a test</p>
</div>
Avec la règle CSS suivante :
#test p {
opacity: 0;
margin-top: 25px;
font-size: 21px;
text-align: center;
-webkit-transition: opacity 2s ease-in;
-moz-transition: opacity 2s ease-in;
-o-transition: opacity 2s ease-in;
-ms-transition: opacity 2s ease-in;
transition: opacity 2s ease-in;
}
Comment la transition peut-elle être déclenchée au chargement ?
[1] : http://web.archive.org/web/20120728071954/http://www.dotmailapp.com/
411
3
Méthode 1 :
Si vous recherchez une transition stimulante, utilisez [CSS 3 Animations][1]. Elles ne sont pas prises en charge non plus, mais c'est exactement le genre de choses pour lesquelles elles ont été conçues.
CSS
Demo
Support des navigateurs
Tous les navigateurs modernes et Internet Explorer 10 (et plus) : http://caniuse.com/#feat=css-animation
Méthode 2 :
Vous pouvez également utiliser jQuery (ou simplement JavaScript ; voir le troisième bloc de code) pour changer la classe au chargement :
jQuery
CSS
Plain JavaScript (pas dans la démo)
Démo
Support des navigateurs
Tous les navigateurs modernes et Internet Explorer 10 (et plus) : http://caniuse.com/#feat=css-transitions
Méthode 3 :
Ou bien, vous pouvez utiliser la méthode utilisée par .Mail :
jQuery
CSS
Demo
Support des navigateurs
jQuery 1.x : Tous les navigateurs modernes et Internet Explorer 6 (et plus) : http://jquery.com/browser-support/
jQuery 2.x : Tous les navigateurs modernes et Internet Explorer 9 (et ultérieur) : http://jquery.com/browser-support/
Cette méthode est la plus compatible car le navigateur cible n'a pas besoin de prendre en charge les transitions CSS 3 ou les animations.
[1] : https://developer.mozilla.org/en-US/docs/Web/CSS/animation
Vous pouvez utiliser l'attribut HTML
onload=""
et utiliser JavaScript pour ajuster le style d'opacité de votre élément.Laissez votre CSS tel que vous l'avez proposé. Modifiez votre code HTML pour :
Ceci fonctionne également pour faire apparaître en fondu la page complète à la fin du chargement:
HTML :
CSS :
Consultez le site Web [W3Schools][1] : [transitions][2] et un article sur [la modification des styles avec JavaScript][3].
[1] : http://en.wikipedia.org/wiki/W3Schools [2] : http://www.w3schools.com/css/css3_transitions.asp [3] : http://www.w3schools.com/js/js_htmldom_css.asp
En réponse à la question de @A.M.K's sur la façon de faire des transitions sans jQuery. Un exemple très simple que j'ai mis au point. Si j'avais le temps d'y réfléchir un peu plus, je pourrais peut-être éliminer complètement le code JavaScript :