← Lekcje
HTML · lekcja 09

Dodatkowe elementy HTML

Drobiazgi, które przydają się na prawie każdej stronie

  1. Pojemniki bez znaczenia: div i span; komentarze i encje
  2. Okno w oknie: iframe z mapą lub filmem
  3. Rozwijany blok, zaznaczenie, data, paski postępu, klawisze
  4. Ćwiczenie: strona FAQ z mapą i stopką
Rozgrzewka · 3 minuty

Trzy pytania z formularzy

  1. Który znacznik otacza cały formularz i mówi, gdzie wysłać dane?
  2. Jaki type pola input ukrywa wpisywane znaki kropkami?
  3. Po co label ma atrybut for?
Pojemniki · div i span

Pudełko i kawałek

Czasem chcecie zgrupować treść, ale żaden znacznik nie pasuje. Do tego są dwa pojemniki bez własnego znaczenia:

MDN: „<div> HTML content division element” i „<span> HTML content span element” · developer.mozilla.org/docs/Web/HTML/Reference/Elements/div · …/span
Powtórka i nowe encje

Komentarz i znaki, których nie ma na klawiaturze

<!-- Stopka: zmienić rok na początku stycznia -->
<p>&copy; 2016 Klub Modelarski · bilet: 5&nbsp;&euro;</p>
PiszecieWidaćDo czego?
&copy;©znak praw autorskich w stopce
&euro;cena w euro
&nbsp;spacjaspacja, której przeglądarka nie złamie na nową linię (5 €, 10 km)

Encja to kod znaku: zaczyna się od &, kończy średnikiem. Komentarz <!-- --> widzicie tylko Wy w kodzie, przeglądarka go pomija.

MDN: „Entity” · developer.mozilla.org/docs/Glossary/Entity · komentarze: „Basic HTML syntax”
Osadzanie · iframe

iframe: okno w oknie

<iframe src="https://www.openstreetmap.org/export/embed.html?bbox=20.99,52.22,21.03,52.24&layer=mapnik"
        width="600" height="400" title="Mapa dojazdu do klubu"></iframe>
MDN: „<iframe> HTML inline frame element” · developer.mozilla.org/docs/Web/HTML/Reference/Elements/iframe
Osadzanie · iframe

Kiedy uważać z iframe?

Atrybut sandbox to kaganiec dla osadzonej strony: bez skryptów, bez formularzy, bez wyskakujących okienek. Jak to wygląda w firmach, zobaczycie na slajdzie „w produkcji”.

MDN: „General embedding technologies” (Security concerns) · developer.mozilla.org/docs/Learn_web_development/Core/Structuring_content/General_embedding_technologies
Rozwijany blok · details i summary

Rozwijany blok bez JavaScriptu

<details>
  <summary>Czy trzeba mieć własny sprzęt?</summary>
  <p>Nie. Na pierwsze zajęcia sprzęt wypożycza klub, za darmo.</p>
</details>

Ciekawostka z MDN: atrybut name to nowość w details. Dawniej taki akordeon (tylko jeden otwarty naraz) dało się zrobić wyłącznie JavaScriptem. Dziś wystarczy ten jeden atrybut, bez skryptu.

MDN: „<details> HTML details disclosure element” i „<summary>…” · developer.mozilla.org/docs/Web/HTML/Reference/Elements/details · …/summary · ciekawostka: developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/details#name
Drobiazgi · mark i time

Zakreślacz i data dla maszyny

<p>Szukaliście „silnik”: model z <mark>silnikiem</mark> elektrycznym.</p>

<p>Zlot odbył się <time datetime="2016-01-20">20 stycznia 2016</time>
o <time datetime="19:30">19:30</time>.</p>
MDN: „<mark> HTML mark text element” i „<time> HTML time (date) element” · developer.mozilla.org/docs/Web/HTML/Reference/Elements/mark · …/time
Drobiazgi · progress i meter

Dwa paski: postęp i poziom

Wysyłanie pliku: <progress value="70" max="100">70 %</progress>

Miejsce na dysku: <meter value="0.9" low="0.3" high="0.8">90 %</meter>
ZnacznikCo pokazuje?Z życia
progressjaka część zadania jest już zrobiona, od 0 do maxpasek pobierania pliku
meterwartość w znanym zakresie; low i high zmieniają kolorwskaźnik paliwa, poziom baterii

Tekst w środku (70 %) widzą tylko stare przeglądarki, które nie obsługują paska. progress bez value kręci się w kółko: „coś trwa, nie wiadomo ile”.

MDN: „<progress> HTML progress indicator element” i „<meter> HTML meter element” · developer.mozilla.org/docs/Web/HTML/Reference/Elements/progress · …/meter
Strona techniczna · code, kbd, samp

Kod, klawisze i odpowiedź komputera

<p>Zapiszcie plik: <kbd>Ctrl</kbd> + <kbd>S</kbd>.</p>
<p>W GitHub Desktop kliknijcie <kbd>Push origin</kbd>. To samo w konsoli: <code>git push</code>.</p>
<p>Komputer odpowiada: <samp>Everything up-to-date</samp></p>
ZnacznikCzym jest tekst?
codefragment kodu albo polecenie do wpisania
kbdto, co użytkownik wciska lub klika: klawisz, przycisk
sampto, co komputer wypisał w odpowiedzi

Wszystkie trzy wyglądają podobnie (czcionka jak z maszyny do pisania), ale mówią co innego. Tak pisze się instrukcje i dokumentację.

MDN: „Advanced text features” (code, pre, var, kbd, samp) · developer.mozilla.org/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features
Head · meta i favicon

Trzy linijki do head, które warto znać

<meta name="description" content="Klub modelarski: zajęcia, cennik, dojazd.">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="favicon.ico" type="image/x-icon">
MDN: „What's in the head? Web page metadata” · developer.mozilla.org/docs/Learn_web_development/Core/Structuring_content/Webpage_metadata
Dodatkowe elementy · egzamin

Tak pytają na egzaminie

1. <head> <meta name="Description" content="…"> </head>
Metainformacja "Description" zawarta w pliku źródłowym HTML powinna zawierać

  1. opis, co znajduje się na stronie.
  2. informację, kto jest autorem strony.
  3. wyrazy kluczowe, z których korzystają wyszukiwarki sieciowe.
  4. nazwę programu, przy użyciu którego została stworzona strona.
CKE, E.14 styczeń 2019, zad. 2
Ćwiczenie 1 · przy komputerze · 12 minut

Ćwiczenie 1: strona FAQ z mapą

  1. W swoim folderze ze stronami stwórz nowy plik faq.html ze szkieletem. W head dodaj meta description jednym zdaniem o klubie, sklepie lub szkole, o których piszesz.
  2. Dodaj h1 „Najczęstsze pytania”, a pod nim trzy details z summary (pytanie) i p (odpowiedź). Wszystkie trzy z name="faq".
  3. Dodaj h2 „Jak do nas trafić?”, a pod nim mapę: na openstreetmap.org znajdź miejsce, kliknij „Udostępnij → HTML” i skopiuj cały iframe. Dopisz do niego title.
  4. Dodaj stopkę w p: znak &copy;, rok, nazwa. W drugiej linii (br) dopisz „Ostatnia zmiana:” i dzisiejszą datę w time z datetime w zapisie rok-miesiąc-dzień.
  5. Zapisz, F5, sprawdź.

Ma się pojawić: trzy klapki, po kliknięciu otwiera się jedna i zamyka poprzednia, mapa w oknie, w stopce © i data. Ctrl+U: description i datetime są w kodzie, choć na stronie ich nie widać.

mapa: openstreetmap.org, panel „Udostępnij”
Ćwiczenie 2 · na kartce · 3 minuty

Ćwiczenie 2: który element?

Do każdej sytuacji dopisz jeden znacznik z dzisiejszej lekcji:

  1. Pasek „pobrano 40 %” podczas pobierania pliku.
  2. Film z YouTube na stronie klubu.
  3. Instrukcja: „wciśnij F5”.
  4. Regulamin zwinięty w klapkę, rozwijany po kliknięciu.
  5. Jedno słowo w zdaniu, które ma dostać kolor z CSS.
  6. Poziom naładowania baterii 15 % (mało).
Pytania kontrolne

Trzy pytania na koniec

  1. Czym różni się div od span i kiedy sięgacie po któryś z nich?
  2. Po co iframe ma atrybut title, skoro na stronie go nie widać?
  3. Co się stanie, gdy w details zabraknie summary?

Na następnej lekcji: audio i wideo w HTML, czyli własne pliki dźwiękowe i filmy bez YouTube.

Rozkład: Dodatkowe elementy HTML → Audio i wideo w HTML
Z realnych wdrożeń

A jak to wygląda w produkcji?

Na lekcjiW produkcjiStatus
details jako akordeonFAQ i menu mobilne coraz częściej bez JavaScriptu: mniej kodu, działa od razu, czytnik ekranu rozumie. Wygląd klapki poprawia CSS.nadal w użyciu
iframe z mapą lub filmemStandard osadzania cudzych usług (mapy, filmy, płatności). W firmach dochodzi sandbox i loading="lazy", żeby okno wczytało się dopiero, gdy użytkownik do niego dojedzie.nadal w użyciu
iframe bez ograniczeńOsadzona strona z sandbox nie odpala skryptów ani formularzy, dopóki jej tego nie pozwolicie. Zasada MDN: nigdy razem allow-scripts i allow-same-origin.zasada bezpieczeństwa
div na wszystkoNagminne w kodzie generowanym przez narzędzia. Dobre zespoły pilnują: najpierw znacznik ze znaczeniem, div dopiero, gdy nic nie pasuje.nadużywane
MDN: „General embedding technologies” (Security concerns) i „<iframe>” (sandbox, loading)