Startpagina » Coding » Hoe maak je 3D Button Flip-animaties met CSS

    Hoe maak je 3D Button Flip-animaties met CSS

    Flip animaties zijn populaire CSS-effecten die worden weergegeven zowel de voorkant als de achterkant van een HTML-element door ze van boven naar beneden of van links naar rechts (en vice versa) te draaien. Ze zijn rad in 2 dimensies, maar ze zijn zelfs koeler wanneer ze in 3D worden uitgevoerd.

    In dit bericht laat ik je zien hoe maak eenvoudige 3D-knoppen, en flip-animaties toevoegen naar hen.

    Als je op de knoppen klikt, kun je het resultaat in de onderstaande demo zien. Ze voeren dan de gelabelde flipanimatie uit.

    1. De HTML maken voor de 3D-knop

    Om een ​​3D-knop te maken (met Top → Bottom flip), stapelen we eerst drie

    s op elkaar, twee voor de voor- en achterkant van de knop en een derde voor het vullen van de diepte in het midden. We plaatsen de drie knopvlakken in de .flipBtn container die zal functioneren als de 3D-knop, en we plaatsen de 3D-knop in de .flipBtnWrapper wikkel.

     
    2. Basisstijlen toevoegen met CSS

    We hebben de breedte en hoogte eigenschappen van de verpakking, de knop en de knoopvlakken, en positioneer ze met behulp van de relatieve / absolute positioneringstechniek.

     .flipBtnWrapper width: 200px; hoogte: 200 px; positie: relatief;  .flipBtn, .flipBtn_face width: 100%; hoogte: 100%; positie: absoluut;  
    3. Stijl de gezichten van de 3 knoppen

    We voegen achtergrondafbeeldingen toe aan de voor- en achterknopvlakken en plaatsen een koele lineaire gradiënt achter de afbeeldingen voor beide. De truc hier is dat je in CSS meerdere afbeeldingen kunt instellen als achtergrondafbeelding voor hetzelfde element, en je kunt ook gradiënten declareren als achtergrondafbeeldingen.

    Het middelste gezicht, .flipBtn_mid, krijgt een hoogte van 20 px, en eenzelfde ruimte van 20 px wordt gecreëerd tussen de voor- en achterkant. We bereiken de laatste door het gebruik van de translateZ () CSS-functie dat verplaatst een element langs de z-as. We duwen de achterkant 10x terug en brengen de voorkant naar voren met 10 px.

     .flipBtn_front background-image: url ("image / css-3d-flip-button-animation-play.png"), lineair verloop (# FF6366 50%, # FEA56E); backface-visibility: verborgen; transformatie: translateZ (10px);  .flipBtn_back background-image: url ("image / css-3d-flip-button-animation-pause.png"), lineaire gradiënt (# FF6366 50%, # FEA56E); achtergrondkleur: blauw; transformatie: translateZ (-10px);  .flipBtn_mid height: 20px; achtergrondkleur: # d5485a; transformeren: rotateX (90deg); top: -10px; 

    Naar bedek de ruimte tussen de voor- en achterkant gezichten met de middelste, wij leg het middelste vlak plat over het x-vlak van de 3D-ruimte met behulp van de transformeren: rotateX (90deg); regel dat maakt het loodrecht naar zowel de voor- als de terugknop op het y-vlak.

    Omdat het middelste vlak vlak over het x-vlak is gelegd, gaat het bovenste punt op de y-as 10px (de helft van de hoogte) omlaag van het origineel. Dus om het weer omhoog te trekken en de bovenkant uit te lijnen met de twee andere knopvlakken, heb ik het top: -10px regel ook.

    Ik gebruikte de achtervlak-zichtbaarheid CSS-eigenschap voor de voorkant, dus wanneer we de knop omdraaien, is de achterkant van de voorkant niet zichtbaar.

    Tot nu toe zie je alleen de voorkant op het scherm, omdat het x-vlak aan het zicht is onttrokken en op het y-vlak (scherm) was het laatste gezicht dat was neergelegd de voorkant. Door de knop te draaien je zult ook de andere gezichten kunnen zien.

    De knop
    4. De knop draaien

    De CSS-eigenschap in transformstijl bepaalt of de onderliggende elementen van een HTML-element plat worden weergegeven of in de 3D-ruimte worden geplaatst. In het onderstaande codefragment, de transformatiestijl: behouden-3d; regel geeft 3D volume aan onze knop, terwijl de transformeren: rotatexX () eigenschap roteert het rond de x-as.

     .flipBtn transform-style: preserverve-3d; transformeren: rotateX (-120deg);  

    Merk op dat ik gebruikte -120deg alleen voor demonstratiedoeleinden, omdat het op deze manier eenvoudiger is om te illustreren hoe de knoprotatie werkt.

    Knop geroteerd met -120 °

    In de volgende stap zullen we dit echter veranderen -180 graden om de knop volledig rond te laten draaien.

    5. Animatie van de knop

    Op dit moment is onze 3D-knop nog steeds niet geanimeerd. We kunnen dit doen door de overgang eigendom. Wij gebruiken de transformeren eigenschap voor de eerste waarde, omdat dit de eigenschap is waarvoor we het overgangseffect willen toepassen. De tweede waarde is de duur, 2s.

    Laten we ervoor zorgen dat de knop alleen tijdens zweven draait, dus in plaats van de .flipBtn selector, laten we gebruiken .flipBtnWrapper: hover .flipBtn. Zoals eerder vermeld, verander ook de waarde van rotateX () naar -180 graden om de knop rond te laten draaien.

     .flipBtn overgang: transform 2s; transformatiestijl: behouden-3d;  .flipBtnWrapper: hover .flipBtn transform: rotateX (-180deg); 

    Merk op dat ik in de Github repo een selectievakje toegevoegd aan elke knop om de animatie aan te zetten : aangevinkt in plaats van op : hover, op deze manier gedraagt ​​het zich meer als een echte knop. Ik heb ook vier verschillende knoppen met vier fliprichtingen (Boven → Onder, Onder → Boven, Rechts → Links en Links → Rechts) toegevoegd, zodat je gemakkelijk kunt gebruiken wat je wilt.

    • Demo bekijken
    • Download de bron