Fancy Image Decorations: contouren en complexe animaties PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Fancy Image Decorations: contouren en complexe animaties

We hebben de laatste twee artikelen in deze driedelige serie gespeeld met verlopen om echt nette beelddecoraties te maken met niets anders dan de element. In dit derde en laatste stuk gaan we meer technieken verkennen met behulp van de CSS outline eigendom. Dat klinkt misschien vreemd omdat we over het algemeen outline om een ​​eenvoudige lijn rond een element te trekken — een beetje zoals border maar het kan alleen alle vier de zijden tegelijk tekenen en maakt geen deel uit van het doosmodel.

We kunnen er echter meer mee doen, en daar wil ik in dit artikel mee experimenteren.

Fancy Image Decorations-serie

Laten we beginnen met ons eerste voorbeeld - een overlay die verdwijnt bij de muisaanwijzer met een coole animatie:

We zouden dit kunnen bereiken door een extra element over de afbeelding toe te voegen, maar dat is wat we onszelf uitdagen niet te doen in deze serie. In plaats daarvan kunnen we reiken naar de CSS outline eigenschap en hefboomwerking dat het een negatieve compensatie kan hebben en in staat is om zijn element te overlappen.

img {
  --s: 250px; /* the size of the image */
  --b: 8px;   /* the border thickness*/
  --g: 14px;  /* the gap */
  --c: #4ECDC4;

  width: var(--s);
  aspect-ratio: 1;
  outline: calc(var(--s) / 2) solid #0009;
  outline-offset: calc(var(--s) / -2);
  cursor: pointer;
  transition: 0.3s;
}
img:hover {
  outline: var(--b) solid var(--c);
  outline-offset: var(--g);
}

De truc is om een outline dat is zo dik als de helft van de afbeeldingsgrootte en verschuif deze vervolgens met de helft van de afbeeldingsgrootte met een negatieve waarde. Voeg wat semi-transparantie toe met de kleur en we hebben onze overlay!

Fancy Image Decorations: contouren en complexe animaties

De rest is wat er gebeurt op :hover. We updaten de outline en de overgang tussen beide contouren zorgt voor het coole zweefeffect. Dezelfde techniek kan ook worden gebruikt om een ​​vervagend effect te creëren waarbij we de outline maar maak het transparant.

In plaats van de helft van de afbeeldingsgrootte in deze te gebruiken, gebruik ik een zeer grote outline dikte waarde (100vmax) terwijl u een CSS-masker toepast. Hierdoor is het niet langer nodig om de afbeeldingsgrootte te kennen - de truc werkt bij alle formaten!

Diagram dat laat zien hoe het toevoegen van een masker de extra omtrek rond de afbeelding afsnijdt.
Fancy Image Decorations: contouren en complexe animaties

U kunt problemen ondervinden bij het gebruik van 100vmax als een grote waarde in Safari. Als dit het geval is, overweeg dan de vorige truc waarbij je de vervangt 100vmax met de helft van de afbeeldingsgrootte.

We kunnen nog verder gaan! Bijvoorbeeld, in plaats van simpelweg de extra te knippen outline, kunnen we vormen maken en een mooie onthullingsanimatie toepassen.

Cool toch? De outline is wat de gele overlay creëert. De clip-path clips de extra outline om de stervorm te krijgen. Vervolgens maken we de kleur transparant met de muisaanwijzer.

Oh, wil je in plaats daarvan harten? Dat kunnen wij zeker!

Stelt u zich eens alle mogelijke combinaties voor die we kunnen maken. We hoeven alleen maar een vorm te tekenen met een CSS-masker en/of clip-path en combineer het met de outline truc. Eén oplossing, oneindig veel mogelijkheden!

En ja, we kunnen dit zeker ook animeren. Laten we dat niet vergeten clip-path is animeerbaar en mask is afhankelijk van gradiënten - iets dat we in de eerste twee artikelen van deze serie zeer gedetailleerd hebben behandeld.

Ik weet het, de animatie is een beetje glitchy. Dit is meer een demo om het idee te illustreren in plaats van het "eindproduct" dat in een productiesite moet worden gebruikt. We willen dingen optimaliseren voor een meer natuurlijke overgang.

Hier is een demo die gebruik maakt van mask in plaats van. Het is degene waarmee ik je plaagde aan het einde van het laatste artikel:

Wist je dat de outline eigendom tot zoveel ontzag in staat was? Voeg het toe aan je gereedschapskist voor mooie afbeeldingsdecoraties!

Combineer alle dingen!

Nu we veel trucjes hebben geleerd met verlopen, maskers, knippen en contouren, is het tijd voor de grote finale. Laten we deze serie afsluiten door alles wat we de afgelopen weken hebben geleerd te combineren om niet alleen de technieken te demonstreren, maar ook te laten zien hoe flexibel en modulair deze benaderingen zijn.

Als je deze demo's voor de eerste keer zou zien, zou je kunnen aannemen dat er een heleboel extra divs-wrappers en pseudo-elementen worden gebruikt om ze uit te voeren. Maar alles gebeurt direct op de element. Het is de enige selector die we nodig hebben om deze geavanceerde vormen en effecten te krijgen!

Afsluiten

Nou, jeetje, bedankt dat je de afgelopen weken met me omging in deze driedelige serie. We hebben een hele reeks verschillende technieken onderzocht die eenvoudige afbeeldingen veranderen in iets opvallends en interactiefs. Gebruik je alles wat we hebben behandeld? Zeker niet! Maar ik hoop dat dit een goede oefening voor je is geweest om je te verdiepen in geavanceerd gebruik van CSS-functies, zoals verlopen, mask, clip-path en outline.

En we deden alles met slechts één element! Geen extra div-wrappers en pseudo-elementen. Natuurlijk, het is een beperking die we onszelf opleggen, maar het dwong ons ook om CSS te verkennen en te proberen innovatieve oplossingen te vinden voor veelvoorkomende gebruiksscenario's. Denk dus, voordat u extra opmaak in uw HTML pompt, na of CSS de taak al aankan.

Fancy Image Decorations-serie

Tijdstempel:

Meer van CSS-trucs