• Animer un autre élément

    Nous savons animer un élément en le survolant ou en cliquant dessus, mes exemples seront au survol:

     

    <p id="gh1">&nbsp;</p>
    <style><!--
    #gh1{width:10vw; height:12vh; background:yellow; transition:all 1s linear;}
    #gh1:hover{width:15vw;}
    --></style>


    Parfois, le survol de cet élément est difficile: il se trouve au milieu d'autres éléments ou alors, il se déplace ce qui oblige à le suivre dans son mouvement pour que l'animation ne s'arrête pas.

    De plus, dans des montages, il est pratique d'animer les éléments par des boutons, pour afficher différentes images.

    Solution: animer cet élément au survol ou au clic d'un autre élément visible ou non qui lui, sera fixe.

    Dans le cas d'un élément visible, il pourra s'agir d'un bouton visible.

    Dans le cas d'un élément invisible, il pourra s'agir d'un bouton invisible, placé au dessus de l'élément animé.

    Premier cas: le survol d'un bouton visible anime l'élément:

     

     

     

    <p id="gh2">&nbsp;</p>
    <p id="gh3">&nbsp;</p>
    <style><!--
    #gh2{float:left; width:2vw; height:4vh; border-radius:50%; border:0.1vh solid black;}
    #gh3{float:left; width:10vw; height:12vh; margin:0 0 0 50px; background:green; transition:all 1s linear;}
    #gh2:hover ~ #gh3{width:15vw;}
    --></style>

    Le symbole ~ (tilde) s'écrit au clavier, en appuyant, en même temps sur Alt Gr et 2 du clavier non numérique.


    Exemple: si vous avez plusieurs éléments proches et que le survol de l'élément à animer est difficile: 

     

     

     

     

    <p id="gh5">&nbsp;</p>
    <p id="gh6">&nbsp;</p>
    <p id="gh7">&nbsp;</p>
    <p id="gh8">&nbsp;</p>
    <p style="clear: both;">...</p>
    <style><!--
    #gh5{float:left; width:2vw; height:4vh; border-radius:50%; border:0.1vh solid black;}
    #gh6{float:left; width:10vw; height:12vh; margin:0 0 10px 50px; background:blue; transition:all 1s linear;}
    #gh7{float:left; width:10vw; height:12vh; margin:0 0 10px 5px; background:white; transition:all 1s linear;}
    #gh8{float:left; width:10vw; height:12vh; margin:0 0 10px 5px; background:red; transition:all 1s linear;}
    #gh5:hover ~ #gh7{width:15vw;}
    --></style>


    Une autre façon de faire est de superposer un bouton invisible, au dessus de l'élément animé: dans cet exemple, j'ai laissé une bordure sur le bouton invisible, pour être plus clair.

     

     

    <p id="gj1">&nbsp;</p>
    <p id="gj2">&nbsp;</p>
    <p style="clear: both;">...</p>
    <style><!--
    #gj1{position:absolute; z-index:5; width:10vw; height:12vh; border:0.1vh solid black;}
    #gj2{position:absolute; z-index:1; width:10vw; height:12vh; background:pink; transform:translate(0vw,0vh); transition:all 1s linear;}
    #gj1:hover ~ #gj2{transform:translate(15vw,0vh);}
    --></style>


    Ceci convient bien lorsque l'animation est du genre retournement, qui fait perdre le survol.

     

     

    <p id="gj3">&nbsp;</p>
    <p id="gj4">&nbsp;</p>
    <style><!--
    #gj3{position:absolute; z-index:5; width:10vw; height:12vh;}
    #gj4{position:absolute; z-index:1; width:10vw; height:12vh; background:pink; transform:translate(0vw,0vh) rotatey(180deg); transition:all 1s linear;}
    #gj3:hover ~ #gj4{transform:translate(0vw,0vh) rotatey(0deg); background:coral;}
    --></style>