HTML 5 — forms - Instytutu Informatyki UJ

Transkrypt

HTML 5 — forms - Instytutu Informatyki UJ
Programowanie w Sieci Internet
— o HTML 5 i CSS 3.0 słów kilka
Kraków, 12 października 2012
mgr Piotr Rytko
Wydział Matematyki i Informatyki UJ
Plan zajęć
HTML5:
• struktura HTML5,
• nowe elementy HTML5,
• HTML forms,
• A/V (Audio i Video),
• Różne formaty plików A/V,
• Inne ciekawostki w HTML5.
CSS 3.0
• wzorce dopasowania elementów,
• selektory,
• reguły,
• deklaracje,
HTML 5 — Struktura
<!DOCTYPE html>
<!-- tyle wystarczy aby zacząć -->
<meta charset=utf-8> <!-- wreszcie całkowicie poprawne -->
<p>I możemy już zacząć pisać a po zamknięciu akapitu mamy całkowicie walidowalny
kod HTML5</p>
Powyższy kod wystarczy aby przeglądarka zgodna z HTML5 zbudowała naszą stronę.
<!DOCTYPE html>
<html lang=pl>
<!-- to zapewnia rozpoznanie języka strony -->
<head>
<meta charset=utf-8>
</head>
<body>
<p>A ten kod jest już pełny i zapewnia czytelność dla innych developerów</p>
</body>
</html>
HTML 5 — najważniejsze nowe tagi
W HTML5 mamy 30 nowych elementów semantycznych, które możemy użyć do
budowania statycznych stron. Kilka najważniejszych z nich:
• <header> do tworzenia nagłówków,
• <hgroup> do grupowania tytułów z podtytułami np.:
<hgroup><h1>...</h1><h2>...<h2></hgroup>
• <nav> menu / nawigacja po stronie,
• <article> treść (razem z nagłówkami i stopkami) pojedynczego wpisu / artykułu,
• <footer> dla umieszczania notek autorskich itp. stopek,
• <aside> można w nim pogrupować różne elementy i połączyć je tym samym w jeden
blok. Np. można wrzucić w jeden blok umieszczony z boku strony, nawigację i kanały
rss, tak aby je oddzielić od głównej sekcji strony,
• <time datetime=”2012-10-12 08:30:00.003+01:00”>początek tych ćwiczeń</time>
— element ten przekazuje czas/date w formacie zrozumiałym dla komputera.
Elementy te dają nam dużo nowych możliwości odpowiedniego stylowania strony
według naszych zachcianek.
HTML 5 — inne ciekawostki związane z tagami
• <wbr> mówi przeglądarce, że może łamać linię w tym miejscu jeśli ma ją gdzieś
łamać;
• <ruby> nie służy wcale do wstawiania kodu ruby na stronę ;], jest on jednak
używanay tak ja <rt> i <rp> do oznaczania odpowiednio sposobu czytania niektórych
języków;
• <figure> i <figcaption> używane do obudowania obrazów lub filmów wraz z
podpisem;
• <details> krok w kierunku zmniejszenia ilości kodu JS. wraz z <summary> element
ten tworzy rozwijalne okienko z dodatkowymi informacjami. Po kliknięciu na element
umieszczony w <summary> rozwija on resztę zawartości okienka;
• contenteditable daje możliwość edycji tego co znajduje się w danym elemencie.
Można także włączyć możliwość edycji całego dokumentu a nie poszczególnych
elementów poprzez atrybut designMode (ten nie jest boolem ‘true’/‘false’, a ‘on’/‘off’);
• w HTML 5 możemy nadać elementom atrybut draggable dla akcji drag-and-drop;
• <style scoped> mówi przeglądarce, że do ostylowania zawartych tu elementów ma
szukać definicji stylów w środku kodu HTML a nie tylko w dołączonych stylach w
sekcji <head>. Pozwala to na mocną lokalną stylizację.
HTML 5 — forms
Największą i najważniejszą zmianą w formularzach HTML 5 jest walidacja zawartości.
Ostrzeżenia generowane automatycznie przez przeglądarkę mogą być lokalizowane i
wyświetlane np. po chińsku używając odpowiedniego alfabetu.
• input type email — sprawdza czy wprowadzony adres jest w formacie adresu
mailowego. Ponadto atrybut multiple pozwala na wpisywanie wielu adresów
separowanych przecinkami. Niektóre przeglądarki mogą nawet wyświetlić listę
adresów z książki adresowej lub pamięci telefonu;
• input type date — wyświetla dla nas kalendarz do wyboru daty, nie trzeba już kodu js;
• input type number — niby tylko liczba, ale dzięki atrybutom min, max i step mamy
większą kontrolę nad wprowadzanymi danymi, a ponadto mamy kontrolki;
• input type range — podobnie jak wyżej, ale wyświetla slider kontrolujący wejście;
• search — niby pole tekstowe, ale można zdefiniować długość historii wyszukiwania;
• input type tel — przyjmuje różnego rodzaju formaty numerów tel., ale dodatkowo
może wywołać klawiaturę numeryczną lub kontakty na urządzeniu mobilnym;
• input type color — pozwala na wybranie koloru przy pomocy colorpicker’a.
HTML 5 — forms c.d.
Formularze w HTML 5 przyjmują kilka przydatnych atrybutów:
• placeholder — pozwala na umieszczenie informacji w polu tekstowym, która znika po
umieszczeniu w nim kursora;
• require — wymusza wypełnienie pola nim formularz będzie mógł być wysłany;
• multiple — pozwala na wybranie wielu adresów mailowych, lub wielu plików bez
użycia skryptów JS;
• pattern — pozwala specyfikować własne wzorce walidacji (przyjmuje wyrażenia
regularne);
• autocomplete — jak nazwa wskazuje;
• form — tak! atrybut ‘form’. Pozwala nam on rozrzucić elementy formularza w różnych
miejscach strony, nawet mieszając kolejnością z innymi formularzami. Wystarczy, że
podasz nazwę formularza do którego odnosi się dany element.
HTML 5 — A/V (Audio i Video)
<video src=movie.webm></video> tag pozwala na umieszczenie wideo wprost w
kodzie html. Rozszerzenie webm użyłem aby podkreślić format WebM-encoded plików.
<audio> działa podobnie jak <video>
Jednakże tak umieszczone wideo nie jest chronione przed pobraniem w żaden sposób,
więc jeśli przejmujecie się prawami DRM, to macie problem. Plik audio/wideo
umieszczony w ten sposób, można pobrać tak łatwo jak obrazek w tagu <img>.
autoplay — nie najlepszy pomysł na odtwarzanie tuż po załadowaniu strony, ale można,
controls — prosi przeglądarkę o wyświetlenie własnego panelu kontrolnego dla wideo
(w audio kontrolki są umieszczane automatycznie),
poster — obrazek który będzie wyświetlany przed startem odtwarzania (brak w audio),
muted — wycisza video automatycznie,
height, width — rozmiary, jeśli nie podane, to wyświetlany jest natywny rozmiar video,
rozmiar jest skalowany z zachowaniem aspect ratio (brak w audio),
loop — jak można się domyślić, zapętla odtwarzanie,
preload — zaczyna pobieranie pliku po otwarciu strony. Preload ma kilka metod
działania preload=none; preload=metadata; preload=auto;
HTML 5 — Różne formaty plików A/V
Niestety niema formatu który byłby obsługiwany przez wszystkie przeglądarki.
W <source> można umieścić różne formaty, do wyboru dla przeglądarki.
<video controls>
<source src=movie.mp4 type=‘video/mp4; codecs=”av1.42E01E, mp4a.40.2”’>
<source src=movie.webm type=‘video/webm; codecs=”vp8, vorbis”’>
<p>Sorry, twoja przeglądarka nie obsługuje html video</p>
</video>
FFmpeg library daje nam możliwość szybkiej konwersji plików video do formatu webm,
możemy to zrobić prostym poleceniem:
$ ffmpeg -i video.avi video.webm
<source src=hiResVideo.webm ... media=”(min-divace-width: 800px)”>
<source src=loResVideo.webm>
Dwie powyższe linie określają czy ma być załadowany plik w dużej rozdzielczości, jeśli
urządzenie obsługuje co najmniej 800px szerokości, lub małej rozdzielczości wpp.
HTML 5 — inne ciekawostki warte eksploracji
HTML 5 oferuje nam wiele więcej. Oto kilka ciekawostek, które warte są eksploracji we
własnym zakresie:
• canvas,
• data storage,
• offline,
• drag and drop,
• geolocaion,
• messages i workers,
• real time (WebSockets, Server-Sent Events),
• i wiele więcej.
CSS 3.0 — wzorce dopasowania elementów
#E — element o id E,
.E — element z klasą E,
E — element typu E,
E F — element F zagnieżdżony w elemencie E,
E > F — element F będący dzieckiem E,
E + F — element F występuje jako następny po elemencie E,
E ~ F — element F po elemencie E,
.E.F — element posiadający obie klasy E i F,
E[foo] — element E z atrybutem foo,
E[foo=bar] — element E z atrybutem foo o wartości bar,
E[foo~=bar] — wartości atrybutu foo oddzielone spacjami, jedna z nich ma wartość bar,
E[foo^=bar] — wartość atrybutu foo zaczyna się od ciągu bar,
E[foo$=bar] — wartość atrybutu foo kończący się ciągiem bar,
E[foo*=bar] — wartość atrybutu foo zawiera podciąg bar.
CSS 3.0 — selektory
E:root — element przypięty bezpośrednio do roota dokumentu,
E:nth-child(n) — n-te dziecko elementu E,
E:nth-last-child(n) — n-te, licząc od końca, dziecko elementu E,
E:nth-of-type(n) — n-ty element typu E,
E:empty — pusty element nie zawierający nawet tekstu,
E:lang(pl) — element E wyświetlany na stronie w języku polskim (<html lang=pl>),
E:enabled — element E aktywny na stronie,
E:disabled — element E nieaktywny na stronie,
E:checked — element E zaznaczony,
E:first-line — pierwsza linia w elemencie E,
E:first-letter — pierwsza litera w elemencie E,
E::before — generowany element przed elementem E,
E::after — element generowany po elemencie E,
E:not(s) — element niepasujący do selektora s,
CSS 3.0 — reguły
@charset utf-8 — na samym początku pliku stylów, mówi przeglądarce, że ma ona
czytać plik jako plik o kodowaniu znaków utf-8,
@media screen, print { ... } — określa jakiego typu urządzenia lub aplikacje będą
stylowane przy użyciu reguł wymienionych w tym bloku (np. screen - monitor
komputera, handheld - urządzenia mobilne itp.),
@import url(‘...’); — określa z jakiego pliku mają być czytane dalsze deklaracje css,
@font-face { ... } — pozwala na podanie przeglądarce dostępu do czcionek, których
klient nie ma zainstalowanych w swoim systemie.
CSS 3.0 — deklaracje
float: left; — element przyklejony do lewej strony i pozwalający innym elementom
opływać się z prawej,
clear: both; — element jest przenoszony pod wszelkie elementy z atrybutem float, z
obu stron,
counter-increment: CounterName; — zwieksza wartość countera o 1 (domyślnie),
counter-reset: CounterName; — resetuje wartość counera o nazwie CounterName,
direction: left; — nadaje kierunek pisania tekstu,
list-style-image: url(‘...’); —
quotes: "«" "»" "'" "'"; — określa rodzaje cudzysłowów zagnieżdżonych,
border-image: url(border.png) 30 30 round; — ramka z obrazka o grubości 30px,
powtarzająca grafikę co 30 px.
Niektóre przeglądarki wymagają przedrostków dla atrybutów jak:
-moz- — dla mozilli,
-webkit- — dla przeglądarek korzystających z webkitu,
-o- — dla opery.
CSS 3.0 — transformacje
Transformacje w CSS 3.0 pozwalają na manipulacje obiektami na kilka różnych
sposobów. Dodatkowo do transformacji 2D dostajemy także transformacje w 3D.
transform: rotate(30deg);
-ms-transform: rotate(30deg);
-moz-transform: rotate(30deg);
-webkit-transform: rotate(30deg);
-o-transform: rotate(30deg);
To obroty obiektu dla różnych przeglądarek.
translate() — pozwala na przesunięcie elementu o pewne współrzędne,
scale() — skaluje element,
skew() — przekształcenie nożycowe elementu,
matrix() — pozwala na mieszanie wszystkich tych transformacji w jednej macierzy,
transform: rotateY(30deg) rotateX(30deg); — obroty w przestrzeni 3D,
Dziękuję za uwagę!