De opening van Star Wars is iconisch. Het effect van tekst die zowel naar boven als van het scherm af rolde, was zowel een gek cool speciaal effect voor een film in 1977 als een coole typografische stijl die in die tijd gloednieuw was.
We kunnen een soortgelijk effect bereiken met HTML en CSS! Dit bericht gaat meer over hoe je dat glijdende teksteffect kunt krijgen in plaats van te proberen de volledige Star Wars-openingsreeks opnieuw te maken of de exacte stijlen die in de film worden gebruikt te matchen, dus laten we naar een plek gaan waar dit het uiteindelijke resultaat is:
Zie de penStar Wars-introdoor Geoff Graham (@geoffgraham) opCodePen.
De basis-HTML
Laten we eerst HTML instellen voor de inhoud:
Aflevering IV
Een nieuwe hoop
< p>Het is een periode van burgeroorlog. Rebellenruimteschepen, aanvallend vanuit een verborgen basis, hebben hun eerste overwinning behaald tegen het boosaardige Galactische Rijk. Tijdens het gevecht slaagden rebellenspionnen erin om geheime plannen te stelen voor het ultieme wapen van het rijk, de DEATH STAR, een gepantserde ruimtestation met genoeg kracht om een hele planeet te vernietigen.
Prinses Leia wordt achtervolgd door de sinistere agenten van het rijk en racet naar huis aan boord van haar ruimteschip, bewaarder van de gestolen plannen die haar volk kunnen redden en de vrijheid in de melkweg kunnen herstellen...
Dit geeft ons alle stukken die we nodig hebben:
- Een container belde
sterrenoorlogen
die we zullen gebruiken om de inhoud te positioneren. Dit is ook nodig omdat we deperspectief
CSS-eigenschap, waarbij het hebben van een bovenliggend element een handige manier is om diepte toe te voegen of die van een onderliggend element scheef te trekkentransformeren
eigendom. - Een container belde
kruipen
dat zal de daadwerkelijke tekst bevatten en het element zijn waarop we de CSS-animatie toepassen. - De inhoud!
Het is je misschien opgevallen dat de filmtitel is verpakt in een extraatje De truc is om je een driedimensionale ruimte voor te stellen waar de tekst verticaal omhoog kruipt Laten we eerst het document instellen Nu kunnen we verder gaan met het stylen van onze Vervolgens kunnen we stijlen toepassen op de Tot nu toe hebben we een mooie hoeveelheid tekst, maar deze is niet scheef of geanimeerd. Laten we dat mogelijk maken. Dit is waar je echt om geeft, toch? Eerst gaan we de definiëren Laten we die animatie nu toepassen op de Je kunt wat meer plezier hebben met dingen als het hoofdeffect eenmaal op zijn plaats is. We kunnen bijvoorbeeld een kleine vervaging aan de bovenkant van het scherm toevoegen om het effect te accentueren van de tekst die in de verte wegkruipt: Voeg dat element toe aan de bovenkant van de HTML en de tekst zal achter een verloop lopen dat van transparant naar dezelfde achtergrond gaat als de Hier is de volledige code van dit bericht bij elkaar gebracht. Aflevering IV Het is een periode van burgeroorlog. Rebellenruimteschepen, aanvallend vanuit een verborgen basis, hebben hun eerste overwinning behaald tegen het boosaardige Galactische rijk. Tijdens het gevecht slaagden rebellenspionnen erin om geheime plannen te stelen voor het ultieme wapen van het rijk, de DEATH STAR, een gepantserde ruimtestation met genoeg kracht om een hele planeet te vernietigen. Prinses Leia wordt achtervolgd door de sinistere agenten van het rijk en racet naar huis aan boord van haar ruimteschip, bewaarder van de gestolen plannen die haar mensen kunnen redden en de vrijheid in de melkweg kunnen herstellen... Sommige andere mensen hebben meer getrouwe weergaven van de Star Wars-opening gemaakt met andere technieken dan degene die hier in dit bericht worden behandeld. Team Pietruskyheeft een prachtig georkestreerde versie met behulp van Zie de penStar Wars openingscrawl uit 1977door Tim Pietrusky (@TimPietrusky) opCodePen. Ukeleletoepassingen Zie de penPure CSS Star Wars openingscrawldoor Yukulele (@yukulele) opCodePen. wortelstoepassingen Zie de penStar Wars-crawldoor Karottes (@wortels) opCodePen.titel
. Dit is niet nodig, maar kan u extra stylingopties bieden als u ze nodig heeft.De basis-CSS
Y-as
en langs deZ-as
. Dit wekt de indruk dat de tekst tegelijkertijd over het scherm schuift en van de kijker weg is.
zodat het scherm niet verschuifbaar is. We willen dat de tekst vanaf de onderkant van het scherm omhoog komt zonder dat de kijker kan scrollen en de tekst kan zien voordat deze binnenkomt. We kunnen gebruikenoverloop verborgen
om dat te doen:body { /* Dwing de body om het hele scherm te vullen */ width: 100%; hoogte: 100%; /* Verberg elementen die buiten de zichtbare ruimte stromen */ overflow: hidden; /* Zwarte achtergrond voor het scherm */ achtergrond: #000;}
sterrenoorlogen
container, het bovenliggende element voor onze demo:.star-wars { /* Flexbox om het hele element op het scherm te centreren */ display: flex; rechtvaardigen-inhoud: centrum; /* Dit is een magisch getal gebaseerd op de context waarin dit fragment wordt gebruikt en beïnvloedt het perspectief */ height: 800px; /* Deze set stelt ons in staat om de tekst op een 3D-vlak te transformeren, en is enigszins een magisch getal */ perspectief: 400px; /* De rest is helemaal aan persoonlijke stijlvoorkeuren */ kleur: #feda4a; lettertypefamilie: 'Pathway Gothic One', schreefloos; lettergrootte: 500%; lettergewicht: 600; letterafstand: 6px; regelhoogte: 150%; text-align: rechtvaardigen;}
kruipen
element. Nogmaals, dit element is belangrijk omdat het de eigenschappen bevat die de tekst transformeren en animeren..crawl { /* Positioneer het element zodat we de eigenschap top in de animatie kunnen aanpassen */ position: relative; /* Ervoor zorgen dat de tekst aan het begin en einde van de animatie volledig buiten beeld is */ top: -100px; /* Definieert de schuine oorsprong in het midden wanneer we transformaties toepassen op de animatie */ transformatie-oorsprong: 50% 100%;}
Animatie!
@sleutelframes
voor de animatie. De animatie doet iets meer dan animeren voor ons, omdat we onze gaan toevoegentransformeren
eigenschappen hier, met name voor de beweging langs deZ-as
. We beginnen de animatie om0%
waar de tekst het dichtst bij de kijker staat en zich onder het scherm bevindt, uit het zicht, beëindig dan de animatie op100%
waar het ver weg is van de kijker en omhoog en over de bovenkant van het scherm stroomt./* We noemen deze animatie "crawl" */@keyframes crawl { 0% { /* Het element begint onder het scherm */ top: 0; /* Roteer de tekst 20 graden maar houd hem dicht bij de kijker */ transform: rotationX(20deg) translateZ(0); } 100% { /* Dit is een magisch getal, maar gebruik een groot getal om ervoor te zorgen dat de tekst aan het einde volledig van het scherm af is */ top: -6000px; /* De rotatie aan het einde iets verhogen en de tekst ver weg van de kijker verplaatsen */ transform: rotationX(25deg) translateZ(-2500px); }}
.kruipen
element:.crawl { /* Positioneer het element zodat we de eigenschap top in de animatie kunnen aanpassen */ position: relative; /* Definieert de schuine oorsprong in het midden wanneer we transformaties toepassen op de animatie */ transformatie-oorsprong: 50% 100%; /* Voegt de crawl-animatie toe, die gedurende één minuut wordt afgespeeld */ animatie: crawl 60s lineair;}
Leuke tijden met fijnafstemming
.fade { positie: relatief; breedte: 100%; min-hoogte: 60vh; bovenaan: -25px; achtergrondafbeelding: lineair verloop (0 graden, transparant, zwart 75%); z-index: 1;}
:Het volledige voorbeeld
Een nieuwe hoop
lichaam { breedte: 100%; hoogte: 100%; achtergrond: #000; overloop: verborgen;}.fade { positie: relatief; breedte: 100%; min-hoogte: 60vh; bovenaan: -25px; achtergrondafbeelding: lineair verloop (0 graden, transparant, zwart 75%); z-index: 1;}.star-wars {weergave: flex; rechtvaardigen-inhoud: centrum; positie: relatief; hoogte: 800px; kleur: #feda4a; lettertypefamilie: 'Pathway Gothic One', schreefloos; lettergrootte: 500%; lettergewicht: 600; letterafstand: 6px; regelhoogte: 150%; perspectief: 400px; text-align: rechtvaardigen;}.crawl { positie: relatief; boven: 9999px; transformatie-oorsprong: 50% 100%; animatie: crawl 60s lineair;}.crawl > .title { lettergrootte: 90%; text-align: center;}.crawl > .title h1 { margin: 0 0 100px; text-transform: hoofdletters;}@keyframes crawl { 0% { top: 0; transformeren: roterenX(20graden) vertalenZ(0); } 100% { boven: -6000px; transformeren: roterenX(25graden) translateZ(-2500px); }}
Andere voorbeelden
bovenkant
voor de beweging enondoorzichtigheid
om het vervagende effect te creëren:marge
om de langs het scherm te verplaatsen:transformeren
lijkt veel op dit bericht, maar vertrouwt meer opVertalenY
om de tekst langs de te verplaatsenY-as
.