Ondanks de verwachting van mensen van verandering en beweging op het scherm, hebben CSS en HTML weinig besturingselementen waarmee u interactiviteit kunt ontwerpen en de bestaande die bestaan zijn binair.
Een link is één kleur of een andere. Een tekstveld is één formaat of een ander. Een foto is transparant of ondoorzichtig. Geen in-betweens van de ene staat naar de volgende. Geen overgangen .
Dit heeft ertoe geleid dat de meeste webpagina's abrupt voelden, met elementen die verschoven en ongracieus veranderden.
Ja, we kunnen DHTML gebruiken en de jQuery-bibliotheek gebruiken voor overgangen, maar dit vereist veel code voor iets dat heel eenvoudig zou moeten zijn.
Wat we nodig hebben, is een snelle en eenvoudige manier om eenvoudige overgangen aan de pagina toe te voegen en in dit artikel vindt u nuttige informatie over CSS-overgangen en hoe u ze kunt gebruiken.
Een paar maanden geleden stak ik mijn voet in mijn mond suggererend dat ontwerpers de nieuwe CSS 3-technieken zouden moeten gaan gebruiken waarmee ze een deel van de basisstijl kunnen doen waarvoor ze smeekte. Het enige probleem: geen van hen werkte in Internet Explorer. Nee, zelfs IE8 niet.
Sommige lezers vonden dat technieken suggereren die ongeveer 75% van het publiek niet zou kunnen zien, onvoorzichtig was.
Aan die lezers zeg ik: 'Houd je hoed vast' , want ik ga je voorstellen aan een nieuwe CSS-eigenschap waarmee je overgangen kunt toevoegen aan elk element met slechts een paar regels code.
CSS-overgangen worden momenteel geïntroduceerd in CSS Level 3, maar zijn al toegevoegd als een uitbreiding op Webkit. Op dit moment betekent dit dat ze alleen werken in browsers op basis van Webkit, inclusief Apple Safari en Google Chrome.
Overgangen zijn al een tijdje onderdeel van Webkit en vormen de basis voor veel van de leuke dingen die de Safari-gebruikersinterface kan doen die andere browsers niet kunnen.
Maar de W3C CSS Workgroup verzette zich tegen het toevoegen van overgangen aan zijn officiële specificaties, sommige leden beweerden dat overgangen geen stijleigenschappen zijn en beter kunnen worden afgehandeld door een scripttaal.
Maar veel ontwerpers en ontwikkelaars, waaronder ikzelf, voerden aan dat dit in feite alleen dynamische stijlen zijn, in plaats van de traditionele statische stijlen die zo velen van ons gewend zijn.
Gelukkig bevatte het argument voor dynamische stijlen de dag. Afgelopen maart begonnen vertegenwoordigers van Apple en Mozilla het CSS-overgangsmodule naar de CSS Level 3-specificatie , nauw gemodelleerd naar wat Apple al aan Webkit had toegevoegd.
Voordat we verder gaan, wil ik nog een punt benadrukken: vertrouw nooit op stijlen voor websitefunctionaliteit als de stijlen niet interoperabel zijn voor de browser (dus beschikbaar op alle gangbare browsers).
Nog een keer voor diegenen die het hebben gemist: vertrouw nooit op stijlen voor websitefunctionaliteit als de stijlen niet door de browser kunnen worden gebruikt .
Dat gezegd hebbende, kunt u stijlen, zoals overgangen, gebruiken als ontwerpverbeteringen om de gebruikerservaring te verbeteren, zonder in te boeten op bruikbaarheid voor degenen die ze niet kunnen zien. Dit is ok zolang je anders zonder de overgangen zou kunnen leven en gebruikers hun taken nog steeds kunnen voltooien.
CSS-overgangen vervangen niet alle toepassingen van DHTML, maar hier zijn een paar manieren om je ontwerp te verbeteren in browsers die overgangen ondersteunen, zonder het voor de rest van je publiek te verpesten.
U moet deze pagina bekijken in Apple Safari 3+ of Google Chrome om deze overgangen te zien werken. Beide browsers zijn verkrijgbaar in Mac- en pc-smaken.
Het meest voor de hand liggende gebruik voor overgangen is het markeren van elementen (links, tabellen, formuliervelden, knoppen of iets anders) wanneer de muis van de gebruiker eroverheen beweegt. Overgangen zijn een geweldige manier om de pagina een gladdere uitstraling te geven.
Voorbeeld 1
Pure CSS-menu's zijn eenvoudig te realiseren en met overgangen kunt u menu's omlaag- en markeereffecten geven.
Voorbeeld # 2
U kunt een object tussen twee punten op de pagina verplaatsen en overgangen gebruiken om de beweging ervan te animeren.
Voorbeeld # 3
Click & Hold!
Maar wacht even, Tex. Voordat we in transities duiken, moeten we de verschillende toestanden begrijpen waartoe een element kan overgaan.
Staten definiëren hoe een bepaald element op dit moment interactie heeft met de gebruiker of de pagina, en ze worden gespecificeerd in CSS met behulp van de pseudo-klassen. Wanneer de gebruiker bijvoorbeeld boven een element zweeft, zou dat element worden gestileerd met de hover
pseudo-class.
Dynamische pseudoklasse | Betreffende elementen | Beschrijving |
:link | Alleen links | Onbezochte links |
: visited | Alleen links | Bezochte links |
:zweven | Alle elementen | Muiscursor over element |
:actief | Alle elementen | Muis klikt element |
:focus | Alle elementen die kunnen worden geselecteerd | Element is geselecteerd |
Geen | Alle elementen | Standaardstatus van alle elementen |
Overgangen werken door een stijl in de loop van de tijd tussen verschillende elementstaten te veranderen. De kleurwaarde van de standaardstatus van een element passeert bijvoorbeeld tussenliggende kleuren in het spectrum voordat deze wordt weergegeven als de kleurwaarde voor de zweeftoestand.
Laten we een eenvoudige overgang van de ene kleur naar de andere overwegen wanneer de gebruiker over een link zweeft. Net als elke andere CSS-eigenschap worden overgangen rechtstreeks toegevoegd aan de selector waarop deze moet worden toegepast. De eigenschap kan dan een van de volgende vier waarden aannemen.
CSS-eigenschap
De eigenschap die moet worden gewijzigd (bijvoorbeeld kleur). Zie de onderstaande tabel voor een lijst met alle CSS-eigenschappen die kunnen worden overgezet.
Looptijd
Hoe lang de overgang duurt, meestal in seconden (bijvoorbeeld .25s
).
Timing functie
Hiermee kunt u bepalen hoe de duur getimed is. In plaats van een eenvoudige lineaire telling te gebruiken, kunt u de overgang versnellen of vertragen of zelfs een tel of tel specificeren (bijvoorbeeld linear
). Meer hierover verderop in het artikel.
Vertraging
Hoe lang te wachten tussen de actie en het begin van de overgang, meestal uitgedrukt in seconden (bijvoorbeeld .1s
). Deze waarde kan worden weggelaten als u geen vertraging wilt.
Omdat de overgangseigenschap begon als een Webkit-extensie, moeten we zowel de transition
en -webkit-transition
eigenschappen voor achterwaartse compatibiliteit.
Laten we eerst beide eigenschappen toevoegen aan de :hover
pseudo-klasse:
[Css]
a: hover {
kleur rood;
-webkit-overgang: kleur .25s lineair;
overgang: kleur .25s lineair;
}
[/ Css]
Wanneer een link nu wordt verplaatst, in plaats van van blauw naar rood te springen, zal deze een kwart seconde door de tussenliggende kleuren bladeren.
Natuurlijk willen we ook teruggaan naar de standaard linkkleur, dus we zullen een overgang naar de :link
(en waarschijnlijk :visited
) pseudo-klassen, met slechts een zeer korte vertraging (een tiende van een seconde) voordat het vervaagt:
[Css]
a: link, a: visited {
kleur blauw;
-webkit-overgang: kleur .25s lineair .1s;
overgang: kleur .25s lineair .1s;
}
[/ Css]
Omdat een overgang een CSS-eigenschap is en u meerdere exemplaren van de overgangseigenschap toevoegt in dezelfde regel, vervangt de laatste eerdere exemplaren in plaats van deze toe te voegen. Dus in de volgende regel zou de enige overgang de achtergrondkleur zijn:
[Css]
a: hover {
kleur rood;
achtergrondkleur: rgb (235,235,185);
-webkit-overgang: kleur .25s lineair;
overgang: kleur .25s lineair;
overgang: achtergrondkleur .15s lineair .1;
}
[/ Css]
Meerdere overgangen worden toegevoegd als een door komma's gescheiden lijst in dezelfde overgangseigenschapdefinitie:
[Css]
a: hover {
kleur rood;
achtergrondkleur: rgb (235,235,185);
-webkit-overgang: kleur .25s lineair, achtergrondkleur .15s lineair .1s;
overgang: kleur .25s lineair, achtergrondkleur .15s lineair .1s;
}
[/ Css]
Hierdoor wordt zowel een overgang in kleur als in een achtergrondkleur gecreëerd.
Bijna elke CSS-eigenschap met een kleur-, lengte- of positiecomponent, inclusief veel van de nieuwe CSS 3-eigenschappen, kan een overgang krijgen. Een opmerkelijke uitzondering lijkt doosschaduw te zijn.
Rechtstreeks van de Transitions-specificatie van de W3C, hier is een lijst met CSS-eigenschappen die een overgang kunnen krijgen, samen met de aspecten die zijn getransformeerd. Ik heb een aantal van de nuttigere eigenschappen gemarkeerd.
CSS-eigenschap | Wat verandert |
Achtergrond kleur | Kleur |
achtergrond afbeelding | Alleen verlopen |
background-position | Percentage, lengte |
border-bottom-color | Kleur |
border-bottom-width | Lengte |
rand kleur | Kleur |
-Border left-color | Kleur |
-Border left-width | Lengte |
border-rechts-color | Kleur |
border-right-width | Lengte |
border-spacing | Lengte |
border-top-color | Kleur |
border-top-width | Lengte |
grensbreedte | Lengte |
bodem | Lengte, percentage |
kleur | Kleur |
gewas | Rechthoek |
lettertypegrootte | Lengte, percentage |
lettertype dikte | Aantal |
GRID * | divers |
hoogte | Lengte, percentage |
links | Lengte, percentage |
letterafstand | Lengte |
lijnhoogte | Aantal, lengte, percentage |
margin-bottom | Lengte |
-Marge | Lengte |
margin-right | Lengte |
margin-top | Lengte |
maximale hoogte | Lengte, percentage |
Maximale wijdte | Lengte, percentage |
min-height | Lengte, percentage |
min-width | Lengte, percentage |
ondoorzichtigheid | Aantal |
outline-color | Kleur |
outline-offset | Geheel getal |
outline-width | Lengte |
padding-bottom | Lengte |
-Padding left | Lengte |
padding-rechts | Lengte |
padding-top | Lengte |
rechts | Lengte, percentage |
tekst streepje | Lengte, percentage |
schaduw tekst | Schaduw |
top | Lengte, percentage |
vertical-align | Sleutelwoorden, lengte, percentage |
zichtbaarheid | Zichtbaarheid |
breedte | Lengte, percentage |
word-spacing | Lengte, percentage |
z-index | Geheel getal |
zoom | Aantal |
Met overgangen kunt u de telsnelheid variëren, aan het begin langzamer tellen en aan het einde sneller versnellen, of omgekeerd. CSS-overgangen worden geleverd met vijf sleutelwoorden voor transitietiming en bieden u de mogelijkheid om waarden voor uw eigen timingcurve op te geven.
Naam | Hoe het werkt |
kubieke bezier (x1, y1, x2, y2) | X- en Y-waarden liggen tussen 0 en 1 om de vorm van een beziercurve te definiëren die wordt gebruikt voor de timingfunctie. |
lineair | Constante snelheid |
gemak | Geleidelijke vertraging |
gemak-in | Versnellen |
gemak-out | Vertragen |
gemak-in-out | Versnel en vertraag dan |
Overgangen worden snel een standaardprocedure voor alle websites, waardoor feedback van gebruikersinterfaces wordt verbeterd.
Als u alomtegenwoordige overgangen op uw volledige website wilt toevoegen, kunt u een overgang toevoegen aan de universele selector, vergelijkbaar met een CSS-reset. Dit past een standaardovergang toe op alle elementen op de pagina, zodat u een consistente overgang kunt behouden:
[Css]
*: link, *: visited, *: hover, *: active, *: focus {
-webkit-overgang:
kleur .25s lineair,
achtergrondkleur .25s lineair,
randkleur .25s lineair;
overgang:
kleur .25s lineair,
achtergrondkleur .25s lineair,
randkleur .25s lineair;
}
[/ Css]
Een argument tegen een universele overgang en inderdaad tegen het gebruik van de universele selector voor CSS-resetten in het algemeen, is dat het toepassen van een stijl op elk element op de pagina de weergave van pagina's kan vertragen. Ik heb echter nooit enig bewijs gevonden dat dit het geval is. Iedereen weet het anders?
Jason Cranford Teague is de auteur van meer dan 13 boeken over digitale media, waaronder Spreken in stijlen: de basisprincipes van CSS voor webontwerpers . Voor meer informatie over CSS en webtypografie, bekijk Jason's nieuwe boek, Fluid Web Typography . Volg Jason op Twitter: @jasonspeaking .