Hemsida » Kodning » Hur man skapar 3D-knappen Flip Animation med CSS

    Hur man skapar 3D-knappen Flip Animation med CSS

    Flip animationer är populära CSS-effekter som visar både fram och bak av ett HTML-element genom att vrida dem från toppen till botten eller från vänster till höger (och vice versa). De är rad i 2 dimensioner, men de är ännu svalare när de utförs i 3D.

    I det här inlägget ska jag visa dig hur du ska skapa enkla 3D-knappar, och lägg till flip animationer till dem.

    Du kan se resultatet på demo nedan, om du klickar på knapparna utför de märkta flip animationen.

    1. Skapa HTML för 3D-knappen

    För att skapa en 3D-knapp (med Top → Bottom flip), staplar vi först tre

    s på varandra, två för knappens främre och bakre sidor, och en tredje för att fylla djupet i mitten. Vi sätter de tre knappansikten in i .flipBtn behållare som kommer att fungera som 3D-knappen, och vi placerar 3D-knappen i .flipBtnWrapper omslag.

     
    2. Lägga till grundläggande stilar med CSS

    Vi satte bredd och höjd egenskaper på omslaget, knappen och knappytorna och placera dem med hjälp av relativ / absolut positioneringsteknik.

     .flipBtnWrapper bredd: 200px; höjd: 200px; position: relativ;  .flipBtn, .flipBtn_face width: 100%; höjd: 100%; position: absolut;  
    3. Stil in de 3 knapparna

    Vi lägger till bakgrundsbilder på fram- och baksideknapparna och ställer en cool linjär gradient bakom bilderna för båda. Tricket här är att i CSS kan du ställa in flera bilder som bakgrundsbild för samma element, och du kan också deklarera gradienter som bakgrundsbilder.

    Mitt ansikte, .flipBtn_mid, ges a höjd av 20px, och ett samma utrymme på 20px skapas mellan fram- och baksidorna. Vi uppnår det senare genom att använda translateZ () CSS funktion som rör ett element längs z-axeln. Vi trycker tillbaka ansiktet tillbaka med 10px, och ta framsidan framåt med 10px.

     .flipBtn_front bakgrundsbild: url ("bild / css-3d-flip-button-animation-play.png"), linjär gradient (# FF6366 50%, # FEA56E); backface-visibility: hidden; transformera: translateZ (10px);  .flipBtn_back background-image: url ("bild / css-3d-flip-button-animation-pause.png"), linjär gradient (# FF6366 50%, # FEA56E); bakgrundsfärg: blå; transformera: translateZ (-10px); . flipBtn_mid höjd: 20px; bakgrundsfärg: # d5485a; transformera: rotateX (90deg); topp: -10px; 

    Till täcka utrymmet mellan främre och bakre ansikten med mitten, vi lägg mittande ansikte platt tvärs över x-planet i 3D-rymden med hjälp av transformera: rotateX (90deg); bestämma det gör den vinkelrätt till både främre och bakre knappytor på y-planet.

    Eftersom mittytan låg platt över x-planet går toppunktet på y-axeln 10px (hälften av dess höjd) ner från originalet. Så, för att dra tillbaka den och anpassa sin topp med de två andra knappytorna, lade jag till topp: -10px regel också.

    Jag använde backface-synlighet CSS-egenskapen för framsidan, så när vi vrider på knappen kommer baksidan av framsidan inte att synas.

    Hittills kommer du bara att se framsidan på skärmen, eftersom x-planet är gömd från vyn och på y-planet (skärm) var det sista ansiktet nedtill. Genom att vrida på knappen du kommer också att kunna se de andra ansiktena.

    Knappen
    4. Rotera knappen

    CSS-egenskapen för transformationsstil bestämmer huruvida barnelementen i ett HTML-element visas platt eller placeras i 3D-rymden. I kodfältet nedan, visas transform-stil: bevara-3d; regel ger 3D-volymen till vår knapp, medan transformera: rotatexX () egenskapen roterar den runt x-axeln.

     .flipBtn transform-style: preserve-3d; transformera: rotateX (-120deg);  

    Observera att jag använde -120deg endast för demonstration, så det är lättare att illustrera hur knapprotationen fungerar.

    Knapp roterad med -120 °

    Men i nästa steg kommer vi att ändra det till -180 grader för att få knappen helt att vända runt.

    5. Animering av knappen

    Vid denna tidpunkt är vår 3D-knapp fortfarande inte animerad. Vi kan göra detta genom att använda övergång fast egendom. Vi använder omvandla egendom för det första värdet, eftersom det här är egenskapen som vi vill tillämpa övergångseffekten för. Det andra värdet är varaktigheten, 2s.

    Låt oss göra att knappen bara roterar på svävar, så istället för .flipBtn väljare, låt oss använda .flipBtnWrapper: svep. flipBtn. Som tidigare nämnts ändras också värdet av rotateX () till -180 grader för att göra knappen flip runt.

     .flipBtn övergång: transform 2s; transform-stil: bevara-3d;  .flipBtnWrapper: sväva .flipBtn transform: rotateX (-180deg); 

    Observera att i Github repo, jag lade en kryssruta till varje knapp för att elda animationen på :kontrollerade snarare än på :sväva, På så sätt beter sig det som en riktig knapp. Jag har också inkluderat fyra olika knappar med fyra flip-riktningar (Top → Bottom, Bottom → Top, Right → Vänster och Vänster → Höger), så att du enkelt kan använda det du vill.

    • Visa demo
    • Hämta källa