Pomimo oczekiwanych przez ludzi zmian i ruchów na ekranie, CSS i HTML mają niewiele elementów sterujących, które pozwalają zaprojektować interaktywność, a te, które istnieją, są binarne.
Łącze jest albo w jednym kolorze, albo w innym. Pole tekstowe ma jeden rozmiar lub inny. Zdjęcie jest przezroczyste lub nieprzejrzyste. Bez pośredników z jednego stanu do drugiego. Brak przejść .
Doprowadziło to do tego, że większość stron internetowych czuje się nagle, a elementy zmieniają się nieprzyzwoicie.
Tak, możemy użyć DHTML i wykorzystać bibliotekę jQuery do przejść, ale wymaga to dużej ilości kodu, co powinno być bardzo proste.
Potrzebujemy szybkiego i łatwego sposobu dodawania prostych przejść do strony, aw tym artykule znajdziesz przydatne informacje o przejściach CSS i sposobach ich używania.
Kilka miesięcy temu wsunąłem stopę w usta sugerując, że projektanci powinni zacząć używać nowych technik CSS 3 które pozwalają im wykonać niektóre z podstawowych stylizacji, o które prosili. Jedyny problem: żaden z nich nie działał w Internet Explorerze. Nie, nawet IE8.
Niektórzy czytelnicy uważali, że sugerowanie technik, które około 75% widzów nie byłby w stanie zobaczyć, było nierozważne.
Do tych czytelników mówię: "Trzymajcie swoje kapelusze" , ponieważ zamierzam przedstawić wam inną nową właściwość CSS, która pozwala dodawać przejścia do dowolnego elementu za pomocą tylko kilku linii kodu.
Przejścia CSS są teraz wprowadzane na poziomie 3 CSS, ale zostały już dodane jako rozszerzenie do Webkita. Obecnie oznacza to, że działają tylko w przeglądarkach opartych na Webkit, w tym Apple Safari i Google Chrome.
Przejścia były częścią Webkita przez pewien czas i są podstawą wielu fajnych rzeczy, które może zrobić interfejs użytkownika przeglądarki Safari, czego nie potrafią inne przeglądarki.
Ale grupa robocza W3C CSS oparła się dodawaniu przejść do jej oficjalnych specyfikacji, niektórzy członkowie argumentowali, że przejścia nie są właściwościami stylu i lepiej byłoby je obsługiwać za pomocą języka skryptowego.
Jednak wielu projektantów i programistów, włącznie ze mną, twierdziło, że są to w rzeczywistości style dynamiczne , a nie tradycyjne style statyczne, do których przywykło wielu z nas.
Na szczęście argument dynamicznych stylów utrzymywał ten dzień. W marcu przedstawiciele Apple i Mozilli zaczęli dodawać Moduł CSS Transitions do specyfikacji CSS Level 3 , ściśle wzorowane na tym, co Apple już dodał do Webkita.
Zanim przejdziemy dalej, chciałbym podkreślić jedną kwestię: nigdy nie polegać na stylach funkcjonalności strony internetowej, jeśli style nie są interoperacyjne z przeglądarką (tj. Dostępne we wszystkich popularnych przeglądarkach).
Jeszcze raz dla tych, którzy go przegapili: nigdy nie polegaj na stylach funkcjonalności strony internetowej, jeśli style nie są interoperacyjne z przeglądarką .
Powiedział, że możesz używać stylów, takich jak przejścia, jako ulepszenia projektu, aby poprawić wygodę użytkownika, bez poświęcania użyteczności dla tych, którzy ich nie widzą. Jest to w porządku, o ile w przeciwnym razie można byłoby żyć bez przejść, a użytkownicy nadal mogą wykonywać swoje zadania.
Przejścia CSS nie zastąpią wszystkich zastosowań DHTML, ale oto kilka sposobów na ulepszenie wyglądu w przeglądarkach obsługujących przejścia, bez niszczenia ich dla reszty odbiorców.
Musisz wyświetlić tę stronę w Apple Safari 3+ lub Google Chrome aby zobaczyć, jak działają te przejścia. Obie przeglądarki są dostępne w wersjach Mac i PC.
Najbardziej oczywistym zastosowaniem przejść jest podświetlanie elementów (linków, tabel, pól formularzy, przycisków lub innych elementów), gdy mysz nad nimi unosi się. Przejścia są doskonałym sposobem nadania stronie gładszego wyglądu.
Przykład 1
Czyste menu CSS są łatwe do wykonania, a przejścia umożliwiają nadawanie menu zsuwaniem i podświetlaniem efektów.
Przykład # 2
Możesz przesuwać obiekt między dwoma punktami na stronie i używać przejść do animowania jego ruchu.
Przykład # 3
Kliknij i przytrzymaj!
Ale chwileczkę, Tex. Zanim zanurzymy się w przejściu, musimy zrozumieć różne stany, do których może przejść dany element.
Stany definiują sposób, w jaki dany element aktualnie współdziała z użytkownikiem lub stroną, i są one określone w CSS przy użyciu pseudoklasy. Na przykład, gdy użytkownik unosi się nad elementem, element ten będzie stylizowany na hover
pseudo-klasa.
Dynamiczna pseudo klasa | Elementy, których dotyczy problem | Opis |
:połączyć | Tylko linki | Nieodwiedzone linki |
: odwiedzone | Tylko linki | Odwiedzone linki |
:wahać się | Wszystkie elementy | Kursor myszy nad elementem |
:aktywny | Wszystkie elementy | Kliknięcie elementu myszy |
:skupiać | Wszystkie elementy, które można wybrać | Element jest wybrany |
Żaden | Wszystkie elementy | Domyślny stan wszystkich elementów |
Przejścia działają, zmieniając styl w pewnym okresie czasu między różnymi stanami elementów. Na przykład wartość koloru domyślnego stanu elementu przejdzie przez pośrednie kolory w widmie, zanim pojawi się jako wartość koloru dla stanu zawisu.
Rozważmy proste przejście z jednego koloru do drugiego, gdy użytkownik unosi się nad linkiem. Tak jak każda inna właściwość CSS, przejścia są dodawane bezpośrednio do selektora, do którego ma być zastosowana. Właściwość może następnie przyjąć jedną z następujących czterech wartości.
Właściwość CSS
Właściwość, która ma zostać zmieniona (na przykład kolor). Poniższa tabela zawiera listę wszystkich właściwości CSS, które można przenieść.
Trwanie
Jak długo potrwa przemiana, ogólnie w sekundach (na przykład .25s
).
Funkcja pomiaru czasu
Umożliwia kontrolowanie czasu trwania. Zamiast używać prostej liczby liniowej, możesz przyspieszyć lub zwolnić przejście, a nawet określić rytm lub liczbę (na przykład linear
). Więcej na ten temat w dalszej części artykułu.
Opóźnienie
Czas oczekiwania między akcją a początkiem przejścia, zwykle wyrażony w sekundach (na przykład .1s
). Tę wartość można pominąć, jeśli nie chcesz opóźnienia.
Ponieważ właściwość przejścia rozpoczęła się jako rozszerzenie Webkit, musimy uwzględnić oba transition
i -webkit-transition
właściwości dla kompatybilności wstecznej.
Najpierw dodajmy obie te właściwości do :hover
pseudoklasa:
[css]
a: hover {
kolor czerwony;
-webkit-transition: kolor .25s liniowy;
przejście: kolor .25s liniowy;
}
[/ css]
Teraz, gdy link jest zawieszony, zamiast przeskakiwać z niebieskiego na czerwony, przejdzie on na kwadrans przez pośrednie kolory.
Oczywiście chcemy również wrócić do domyślnego koloru linku, więc dodamy przejście do :link
(i prawdopodobnie :visited
) pseudoklasie, z bardzo krótkim opóźnieniem (jedna dziesiąta sekundy), zanim zniknie:
[css]
a: link, a: visited {
kolor niebieski;
-webkit-transition: kolor .25s liniowy .1s;
przejście: kolor .25s liniowy .1s;
}
[/ css]
Ponieważ przejście jest właściwością CSS, jeśli dodasz wiele instancji właściwości przejścia w tej samej regule, to ostatnia zastąpi poprzednie, zamiast je dodać. Tak więc w poniższej zasadzie jedynym przejściem byłby kolor tła:
[css]
a: hover {
kolor czerwony;
kolor tła: rgb (235,235,185);
-webkit-transition: kolor .25s liniowy;
przejście: kolor .25s liniowy;
przejście: background-color .15s linear .1;
}
[/ css]
Wiele przejść jest dodawanych jako lista rozdzielana przecinkami w tej samej definicji właściwości przejścia:
[css]
a: hover {
kolor czerwony;
kolor tła: rgb (235,235,185);
-webkit-transition: kolor .25s liniowy, kolor tła .15s liniowy .1s;
przejście: kolor .25s liniowy, kolor tła .15 s liniowy .1s;
}
[/ css]
Spowoduje to zmianę koloru i przejścia tło-kolor.
Niemal każda właściwość CSS, która ma składnik koloru, długości lub położenia, w tym wiele nowych właściwości CSS 3, może otrzymać przejście. Jednym z godnych uwagi wyjątków wydaje się być box-shadow.
Prosto ze specyfikacji W3C Transitions, tutaj znajduje się lista właściwości CSS, którym można nadać przejście, wraz z aspektami, które są transformowane. Podkreśliłem kilka bardziej użytecznych właściwości.
Właściwość CSS | Jakie zmiany |
kolor tła | Kolor |
zdjęcie w tle | Tylko gradienty |
pozycja tła | Procent, długość |
border-bottom-color | Kolor |
border-bottom-width | Długość |
kolor ramki | Kolor |
border-left-color | Kolor |
border-left-width | Długość |
border-right-color | Kolor |
border-right-width | Długość |
border-spacing | Długość |
border-top-color | Kolor |
border-top-width | Długość |
szerokość granicy | Długość |
Dolny | Długość, procent |
kolor | Kolor |
przyciąć | Prostokąt |
rozmiar czcionki | Długość, procent |
grubość czcionki | Numer |
krata-* | Różnorodny |
wysokość | Długość, procent |
lewo | Długość, procent |
odstępy między literami | Długość |
Wysokość linii | Liczba, długość, procent |
margines-dół | Długość |
margin-left | Długość |
margin-right | Długość |
margin-top | Długość |
maksymalna wysokość | Długość, procent |
maksymalna szerokość | Długość, procent |
min-wysokość | Długość, procent |
min-szerokość | Długość, procent |
nieprzezroczystość | Numer |
kolor konspektu | Kolor |
zarys-przesunięcie | Liczba całkowita |
szerokość konspektu | Długość |
padding-bottom | Długość |
padding-left | Długość |
padding-right | Długość |
podszewka | Długość |
dobrze | Długość, procent |
tekst-wcięcie | Długość, procent |
cień tekstu | Cień |
Top | Długość, procent |
wyrównanie w pionie | Słowa kluczowe, długość, procent |
widoczność | Widoczność |
szerokość | Długość, procent |
odstępy między wyrazami | Długość, procent |
z-index | Liczba całkowita |
Powiększenie | Numer |
Dzięki przejściom możesz zmieniać szybkość zliczania, odliczając wolniej na początku i przyspieszając na końcu, na odwrót lub cokolwiek pomiędzy. Przejścia CSS są dostarczane z pięcioma słowami kluczowymi do określania czasu przejścia i umożliwiają określenie wartości dla własnej krzywej czasowej.
Nazwa | Jak to działa |
cubic-bezier (x1, y1, x2, y2) | Wartości X i Y są w zakresie od 0 do 1, aby zdefiniować kształt krzywej Beziera wykorzystywanej do funkcji pomiaru czasu. |
liniowy | Stała prędkość |
łatwość | Stopniowe spowolnienie |
łatwość wejścia | Przyśpieszyć |
łatwość | Zwolnij |
łatwość wejścia | Przyspiesz, a następnie zwolnij |
Przejścia szybko staną się standardową procedurą operacyjną dla wszystkich stron internetowych, zwiększając reakcje interfejsu użytkownika.
Aby dodać wszechobecne przejścia w całej witrynie, jedną z opcji jest dodanie przejścia do uniwersalnego selektora, podobnego do resetowania CSS. Stosuje to domyślne przejście do wszystkich elementów na stronie, co pozwala zachować spójne przejście:
[css]
*: link, *: visited, *: hover, *: active, *: focus {
-webkit-transition:
kolor .25s liniowy,
kolor tła .25s liniowy,
border-color .25s linear;
przejście:
kolor .25s liniowy,
kolor tła .25s liniowy,
border-color .25s linear;
}
[/ css]
Jednym z argumentów przemawiających przeciwko powszechnej transformacji, a nawet przeciwko używaniu uniwersalnego selektora do resetowania CSS w ogóle, jest to, że zastosowanie stylu do każdego elementu na stronie może spowolnić renderowanie strony. Jednak nigdy nie znalazłem żadnych dowodów, że tak jest. Ktoś wie inaczej?
Jason Cranford Teague jest autorem ponad 13 książek na temat mediów cyfrowych, w tym Mówienie w stylach: Podstawy CSS dla projektantów stron internetowych . Aby uzyskać więcej informacji na temat CSS i typografii internetowej, sprawdź nową książkę Jasona, Fluid Web Typography . Śledź Jason na Twitterze: @jasonspeaking .