På trods af folks forventning om forandring og bevægelse på skærmen har CSS og HTML få kontroller, der giver dig mulighed for at designe interaktivitet, og de der findes er binære.
Et link er enten en farve eller en anden. Et tekstfelt er enten en størrelse eller en anden. Et billede er enten gennemsigtigt eller uigennemtrængeligt. Ingen in-betweens fra en stat til den næste. Ingen overgange .
Dette har ført til, at de fleste websider følte sig pludselige, med elementer, der skiftede og skiftede ungracefully.
Ja, vi kan bruge DHTML og udnytte jQuery-biblioteket til overgange, men det kræver meget kode for noget, der skal være meget enkelt.
Det, vi har brug for, er en hurtig og nem måde at tilføje enkle overgange til siden, og i denne artikel finder du nyttige oplysninger om CSS-overgange og hvordan man bruger dem.
Et par måneder tilbage stak jeg min fod i min mund hvilket tyder på, at designere bør begynde at bruge de nye CSS 3 teknikker som giver dem mulighed for at gøre nogle af de grundlæggende styling, som de har bedt om. Det eneste problem: Ingen af dem arbejdede i Internet Explorer. Nej, ikke engang IE8.
Nogle læsere følte at foreslå teknikker, som omkring 75% af publikum ikke kunne se var uhensigtsmæssigt.
Til disse læsere siger jeg 'Hold på dine hatte' , for jeg vil introducere dig til en anden ny CSS-egenskab, som giver dig mulighed for at tilføje overgange til ethvert element med kun et par linjer kode.
CSS overgange introduceres lige nu i CSS Level 3, men er allerede tilføjet som en udvidelse til Webkit. Lige nu betyder det, at de kun fungerer i browsere baseret på Webkit, herunder Apple Safari og Google Chrome.
Overgange har været en del af Webkit i et stykke tid og er grundlaget for mange af de flotte ting, som Safari UI kan gøre, som andre browsere ikke kan.
Men W3C CSS Workgroup modstod at tilføje overgange til dets officielle specifikationer, nogle medlemmer argumenterede for, at overgange ikke er stilegenskaber og bedre kunne håndteres af et skriptsprog.
Men mange designere og udviklere, selv medtaget, hævdede, at disse faktisk er stilarter - kun dynamiske stilarter, snarere end de traditionelle statiske stilarter, som så mange af os er vant til.
Heldigvis holdt argumentet for dynamiske stilarter dagen. I marts begyndte repræsentanter fra Apple og Mozilla at tilføje CSS Transitions Module til CSS Level 3 specifikationen , nøje modelleret for, hvad Apple allerede havde tilføjet til Webkit.
Før vi fortsætter, lad mig understrege ét punkt: Stol aldrig på stilarter til webstedets funktionalitet, hvis stilarterne ikke er kompatible med browseren (dvs. tilgængelig på alle almindelige browsere).
Endnu en gang for dem, der savnede det: Stol aldrig på stilarter til webstedets funktionalitet, hvis stilarterne ikke er interoperable i browseren .
Når det er sagt, kan du bruge stilarter, såsom overgange, som designforbedringer for at forbedre brugeroplevelsen uden at ofre brugervenlighed for dem der ikke kan se dem. Dette er okay, så længe du ellers kunne leve uden overgangene, og brugerne stadig kan fuldføre deres opgaver.
CSS-overgange erstatter ikke alle anvendelser af DHTML, men her er et par måder at forbedre dit design i browsere, der understøtter overgange, uden at ødelægge det for resten af dit publikum.
Du skal se denne side i Apple Safari 3+ eller Google Chrome at se disse overgange arbejder. Begge browsere er tilgængelige i Mac og PC smag.
Den mest oplagte brug for overgange er at fremhæve elementer (om links, tabeller, formularfelter, knapper eller noget andet), når brugerens mus svæver over dem. Overgange er en fantastisk måde at give siden et glattere udseende.
Eksempel nr. 1
Rene CSS-menuer er nemme at opnå, og overgange giver dig mulighed for at give menuer glide ned og fremhæve effekter.
Eksempel nr. 2
Du kan flytte et objekt mellem to punkter på siden og bruge overgange til at animere bevægelsen.
Eksempel nr. 3
Klik & hold!
Men hold et øjeblik der, Tex. Før du dyker i overgange, skal vi forstå de forskellige stater, som et element kan overgå.
Stater definerer, hvordan et bestemt element i øjeblikket interagerer med brugeren eller siden, og de er specificeret i CSS ved hjælp af pseudoklasserne. For eksempel, når brugeren svæver over et element, vil elementet blive stylet med hover
pseudo-klasse.
Dynamisk Pseudoklasse | Berørte elementer | Beskrivelse |
:link | Kun links | Unvisited links |
: besøgt | Kun links | Besøgte links |
: hover | Alle elementer | Musemarkør over element |
:aktiv | Alle elementer | Museklik element |
:fokus | Alle elementer, der kan vælges | Element er valgt |
Ingen | Alle elementer | Standardtilstand for alle elementer |
Overgange virker ved at ændre en stil over en tidsperiode mellem forskellige elementstilstande. F.eks. Vil farveværdien af standardtilstanden for et element passere gennem mellemliggende farver i spektret, før det vises som farveværdien for hover-tilstanden.
Lad os overveje en simpel overgang fra en farve til en anden, når brugeren svæver over et link. Som enhver anden CSS-egenskab tilføjes overgange direkte til den vælger, den skal anvendes til. Ejendommen kan derefter tage en af følgende fire værdier.
CSS ejendom
Ejendommen, der skal ændres (fx farve). Se nedenstående tabel for en liste over alle de CSS-egenskaber, der kan overføres.
Varighed
Hvor længe overgangen vil vare, generelt i sekunder (for eksempel, .25s
).
Timing funktion
Tillader dig at kontrollere, hvordan varigheden er tidsbestemt. I stedet for at bruge et simpelt lineært tal kan du fremskynde eller sænke overgangen eller endda angive et beat eller tælle (for eksempel, linear
). Mere om dette senere i artiklen.
Forsinke
Hvor lang tid at vente mellem handlingen og begyndelsen af overgangen, som oftest udtrykt i sekunder (for eksempel, .1s
). Denne værdi kan udelades, hvis du ikke ønsker en forsinkelse.
Da overgangsejendommen startede som en Webkit-udvidelse, skal vi inkludere både transition
og -webkit-transition
Egenskaber til bagudkompatibilitet.
Lad os først tilføje begge disse egenskaber til :hover
pseudo-klasse:
[Css]
a: svever {
farve: rød;
-webkit-overgang: farve .25s lineær;
overgang: farve .25s lineær;
}
[/ Css]
Nu, når et link er svævet over, snarere end at hoppe fra blå til rødt, vil det overgang for kvart i et sekund gennem mellemfarverne.
Selvfølgelig vil vi også overgå tilbage til standard linkfarve, så vi tilføjer en overgang til :link
(og sandsynligvis :visited
) pseudoklasser, med bare en meget kort forsinkelse (en tiendedel af et sekund), før det falder:
[Css]
a: link, a: besøgte {
farve: blå;
-webkit-overgang: farve .25s lineær .1s;
overgang: farve .25s lineær .1s;
}
[/ Css]
Fordi en overgang er en CSS-ejendom, hvis du tilføjer flere forekomster af overgangsegenskaben i samme regel, vil den sidste overstyre tidligere, i stedet for at tilføje dem. Så i den følgende regel ville den eneste overgang være baggrundsfarven:
[Css]
a: svever {
farve: rød;
baggrundsfarve: rgb (235.235.185);
-webkit-overgang: farve .25s lineær;
overgang: farve .25s lineær;
overgang: baggrundsfarve .15s lineær .1;
}
[/ Css]
Flere overgange tilføjes som en kommasepareret liste i samme overgangsegenskabsdefinition:
[Css]
a: svever {
farve: rød;
baggrundsfarve: rgb (235.235.185);
-webkit-overgang: farve .25s lineær, baggrundsfarve .15s lineær .1s;
overgang: farve .25s lineær, baggrundsfarve .15s lineær .1s;
}
[/ Css]
Dette vil skabe både en farve- og baggrundsfarveovergang.
Næsten enhver CSS-ejendom, der har en farve-, længde- eller positionskomponent, herunder mange af de nye CSS 3-egenskaber, kan overføres. En bemærkelsesværdig undtagelse ser ud til at være bokseskygge.
Lige fra W3C's Transitions-spec er her en liste over CSS-egenskaber, som kan overføres, sammen med de aspekter, der omdannes. Jeg har fremhævet et par af de mere nyttige egenskaber.
CSS Ejendom | Hvad ændrer sig |
baggrundsfarve | Farve |
baggrundsbillede | Kun gradienter |
baggrund-stillingen | Procentdel, længde |
border-bottom-farve | Farve |
border-bottom-bredde | Længde |
border-color | Farve |
border-venstre-farve | Farve |
border-venstre-bredde | Længde |
border-højre-farve | Farve |
border-højre-bredde | Længde |
border-spacing | Længde |
border-top-farve | Farve |
border-top-bredde | Længde |
border-width | Længde |
bund | Længde, procentdel |
farve | Farve |
afgrøde | Rektangel |
skriftstørrelse | Længde, procentdel |
font-weight | Nummer |
Skal net- * | Forskellige |
højde | Længde, procentdel |
venstre | Længde, procentdel |
Spatiering | Længde |
linjehøjde | Antal, længde, procentdel |
margin-bottom | Længde |
margin-left | Længde |
margin-ret | Længde |
margin-top | Længde |
max-højde | Længde, procentdel |
max-bredde | Længde, procentdel |
min-højde | Længde, procentdel |
min-bredde | Længde, procentdel |
Gennemsigtighed | Nummer |
skitse-farve | Farve |
skitsere-offset | Heltal |
outline-width | Længde |
padding-bottom | Længde |
padding-venstre | Længde |
padding-højre | Længde |
padding-top | Længde |
højre | Længde, procentdel |
tekst-led | Længde, procentdel |
tekst-skygge | Skygge |
top | Længde, procentdel |
vertical-align | Nøgleord, længde, procentdel |
sigtbarhed | Sigtbarhed |
bredde | Længde, procentdel |
word-spacing | Længde, procentdel |
z-index | Heltal |
zoom | Nummer |
Med overgange kan du variere tællefrekvensen, tælle langsommere i begyndelsen og fremskynde i slutningen, omvendt eller noget imellem. CSS-overgange kommer med fem søgeord til overgangstidsplanlægning og giver dig mulighed for at angive værdier for din egen timingkurve.
Navn | Hvordan det virker |
kubisk-bezier (x1, y1, x2, y2) | X og Y værdier er mellem 0 og 1 for at definere formen af en bezier kurve, der anvendes til timing funktionen. |
lineær | Konstant hastighed |
lethed | Gradvis afmatning |
lethed-i | Fremskynde |
lethed-out | Sænk farten |
lethed-i-out | Fremskynde og sænk derefter |
Overgange bliver hurtigt standard operativ procedure for alle hjemmesider, hvilket forbedrer feedback fra brugergrænsefladen.
For at tilføje overordnede overgange på hele din hjemmeside, er en mulighed at tilføje en overgang til universalvælgeren, svarende til en CSS-nulstilling. Dette gælder en standard overgang til alle elementer på siden, så du kan holde en ensartet overgang:
[Css]
*: link, *: besøgt, *: svinge, *: aktiv, *: fokus {
-webkit-overgang:
farve .25s lineær,
baggrundsfarve .25s lineær,
border-color .25s lineær;
overgang:
farve .25s lineær,
baggrundsfarve .25s lineær,
border-color .25s lineær;
}
[/ Css]
Et argument mod en universel overgang, og faktisk mod at bruge den universelle vælger til CSS nulstilles generelt, er at ved at anvende en stil på hvert element på siden, kan der sænkes sidegengivelse. Jeg har dog aldrig fundet noget bevis for, at dette er tilfældet. Nogen kender anderledes?
Jason Cranford Teague er forfatter til mere end 13 bøger om digitale medier, herunder Taler i stilarter: Grundlaget for CSS for webdesignere . For mere information om CSS og web typografi, se Jason's nye bog, Fluid Web Typografi . Følg Jason på Twitter: @jasonspeaking .