Un
Après cette étape, vous devriez avoir un tas d’images et de texte tous empilés les uns sur les autres dans une colonne verticale. Cliquez ici pour lancer le live Dabblet.
Définir la galerie
Notre prochaine étape sera de donner à la galerie une largeur et de la centrer sur la page. Nous effacerons également tous les styles d'élément de liste existants par défaut et ajouterons quelques styles de corps de base.
Notez que la largeur du conteneur n'est pas arbitraire. Il permettra quatre images à 200px par pièce avec 50px de marge sur chacune (250 * 4 = 1 000).
Mise à jour en cours
À ce stade, votre arrière-plan doit être sombre et les points de la liste des éléments de votre liste doivent disparaître. Sinon, ça sera en grande partie le même que la dernière fois. Cliquez ici pour lancer le live Dabblet.
Line 'Em Up, Round' Em Off
Ensuite, nous devons cibler les éléments de la liste. Veillez à utiliser un sélecteur plus spécifique que? Li? comme vous ne voudrez sans doute jamais que tous vos éléments de liste aient ce style. La galerie? La classe fournit un crochet pratique pour rendre ces styles spécifiques à toutes les galeries que vous avez configurées.
Malgré le fait que nos images soient au carré de 400 pixels, nous souhaitons en réalité que les cercles de la page aient un carré de 200 pixels. Pour ce faire, il suffit de définir 200px comme hauteur et largeur pour les éléments de la liste. Pour arrondir les éléments de la liste, définissez le bord de la bordure sur 50%. Vous ne verrez ceci prendre effet que si vous appliquez le? Overflow: hidden? commander. Veillez également à les faire flotter à gauche afin qu’elles apparaissent en ligne droite.
Il est important de noter le fait que nous faisons tout cela pour l'élément de liste, pas pour les images. Cela signifie que les images conserveront leur taille d'origine plus grande, elles seront simplement coupées à la taille de l'élément de la liste, ce qui leur permettra de glisser plus tard.
Mise à jour en cours
Après cela, votre galerie devrait prendre forme. Vous devez avoir quatre images circulaires par ligne avec le conteneur parent centré. La partie étrange est que nos cercles sont à plat sur le dessus! Ceci est simplement dû au fait que nos images doivent être mises en place, ce que nous traiterons ensuite. Cliquez ici pour lancer le live Dabblet.
Scoot et définir l'animation
Comme nous l'avons vu dans la dernière étape, nos images sont en réalité trop loin.Nous pouvons résoudre ce problème en ciblant toutes les images dans les éléments de notre liste de galeries et en appliquant une marge négative au sommet.
Pendant que nous sommes ici, nous allons également mettre en place l'animation. Nous venons d'apprendre que nous pouvons parcourir l'image en utilisant les marges, c'est donc la propriété que nous allons cibler dans la transition.
Mise à jour en cours
La seule différence visuelle que vous remarquerez cette fois-ci est que le sommet plat des cercles a été corrigé. Cliquez ici pour lancer le live Dabblet.
Style les paragraphes
Vous avez probablement remarqué que jusqu'à présent, nos paragraphes ont été complètement cachés. En effet, ils sont empilés au-dessus des images et en dehors des limites de l'élément de liste coupé. Résoudre ce problème n'est pas aussi facile que vous ne le pensez.
La première idée qui me vint à l’esprit fut simplement d’utiliser le vieux tour de positionnement absolu / relatif. Cela implique de définir la position des éléments de paragraphe en absolu et l'élément de liste en relatif. Cela nous permettrait de placer le paragraphe en place par rapport au point de départ de l'élément de la liste. Malheureusement, il existe un problème avec la façon dont la plupart des navigateurs rendent le rayon de la bordure, comme illustré dans l'image ci-dessous.
Comme vous pouvez le constater, dès que nous appliquons un positionnement relatif à notre élément parent, celui-ci perdra ses angles arrondis. C'est certainement une gêne, mais ce n'est pas la fin du monde. Au lieu de cela, nous allons simplement utiliser le positionnement relatif sur notre paragraphe et le mettre en place en haut et à gauche.
Cela mettra notre paragraphe en évidence et nous permettra d’appliquer un style de texte de base. Nous allons également configurer l'animation pour le texte, mais au lieu d'utiliser margin comme avant, nous utiliserons la propriété top.
Notez que j'ai mis le? Top? propriété à 75% dans cette étape. Il s’agit simplement de trouver un terrain d’entente pour le dernier point de repos des paragraphes. En réalité, nous souhaitons qu'ils soient masqués. Définissez donc la valeur maximale à 110%.
Mise à jour en cours
Après cette étape, vos extraits de texte devraient maintenant être visibles au bas de vos cercles. Cliquez ici pour lancer le live Dabblet.
Définissez vos styles de survol
Maintenant que tout est configuré et positionné comme il se doit, tout ce que nous avons à faire est de tout déplacer lorsque l'utilisateur survole les éléments de la liste. Pour ce faire, nous allons utiliser une astuce intéressante en ciblant les éléments de la liste en survol, puis en choisissant un enfant de cet élément à modifier. Pour commencer, nous ciblons les éléments de la liste en survol, puis davantage indiquent que les images sont ce que nous changeons. Nous répétons ensuite cette astuce avec les paragraphes.
Pour les images, appliquez un décalage vertical et horizontal dans la marge et pour le paragraphe, ramenez la valeur supérieure aux 75% précédemment définis.
Mise à jour en cours
Avec cela, notre démo fonctionne enfin comme nous le souhaitons! Survolez chacune des images pour voir l'effet en action. Cliquez ici pour lancer le live Dabblet.
Produit fini
Nous avons tous fini! Comme je l’ai mentionné dans l’introduction, la page de démonstration inclut également quelques versions alternatives de l’effet. Il y en a trois au total: panoramique, zoom avant et zoom arrière. Cliquez sur le lien ci-dessous pour le vérifier.
Démo: Cliquez ici pour lancer.
Conclusion
Ce projet a élargi notre zone de confort en adoptant une approche différente du fond d’animation. Au lieu d'utiliser CSS pour placer l'image, nous avons pu supprimer l'effet avec le texte et l'image dans notre balisage. C'est un peu l'opposé du typique, "moins de marge bénéficiaire". stratégie, mais c’est une bonne expérience d’apprentissage. Etre capable de travailler avec l'un ou l'autre scénario fera de vous un meilleur codeur, capable de gérer beaucoup d'obstacles différents.
Par ailleurs, l’un des problèmes qui me préoccupent toujours avec CSS est le fait que ces effets déclenchent souvent des effets visuels inattendus lors du chargement de la page. Ainsi, au fur et à mesure que la page est dessinée, les transitions rendent le processus normalement instantané long et difficile. Je sais que cela peut être résolu avec JavaScript, mais si vous avez une solution CSS pure, j'aimerais bien l'entendre. Pour la démo, j'ai simplement appliqué les animations aux sélecteurs de survol, mais cela tue l'animation de survol. Connaissez-vous un meilleur moyen? Faites-moi savoir dans les commentaires ci-dessous.