← Lekcje
HTML · lekcja 04

Łącza w HTML

Jak połączyć podstrony, miejsca na stronie, e-mail i telefon?

  1. Rozgrzewka: listy z poprzedniej lekcji
  2. Element a, adres bezwzględny i względny
  3. Kotwica, e-mail, telefon, nowa karta, dobry tekst łącza
  4. Ćwiczenie: trzy podstrony połączone menu
Rozgrzewka · 3 minuty

Trzy pytania z poprzedniej lekcji

  1. Czym różni się lista ul od listy ol?
  2. Jaki znacznik oznacza jeden punkt listy?
  3. Jak zrobić listę w środku innej listy?

Dziś lista ul stanie się menu strony. Każdy punkt będzie łączem.

Rozkład: Listy w HTML → Łącza w HTML
Element a · podstawy

Łącze to znacznik a z adresem w href

<a href="pages/about.html">O mnie</a> znacznik otwierający href = dokąd prowadzi łącze (adres celu) zamykający wartość w cudzysłowie, ukośnik „/” tekst łącza: to widać i to się klika
MDN: Creating links · developer.mozilla.org/docs/Learn_web_development/Core/Structuring_content/Creating_links
Adresy · dwa rodzaje

Adres bezwzględny czy względny?

Pełny adres pocztowy zaprowadzi każdego z dowolnego miejsca. „Drugie drzwi w lewo” działa tylko, gdy wiadomo, gdzie stoicie. Adresy w href są dokładnie takie:

RodzajJak wyglądaKiedy
bezwzględnyhttps://www.example.com/projects/obca strona, inny serwer
względnycontact.html, pages/about.html, ../index.htmlpliki Waszej własnej strony

Adres względny liczy się od pliku, w którym piszecie łącze. Przenosicie cały folder na serwer albo na pendrive i wszystko dalej działa. Adres bezwzględny zawsze wskazuje to samo miejsce w internecie.

MDN: Creating links (absolute versus relative URLs) · developer.mozilla.org/docs/Learn_web_development/Core/Structuring_content/Creating_links
Adresy · ścieżki względne

Ścieżka względna: skąd i dokąd

htdocs/ nazwisko/ index.html contact.html pages/ about.html 1 2 3 1. z index.html do contact.html: ten sam folder, sama nazwa href="contact.html" 2. z index.html w głąb: folder, ukośnik, plik href="pages/about.html" 3. z about.html w górę: „..” to folder nad Tobą href="../index.html"
MDN: Dealing with files (file paths) · developer.mozilla.org/docs/Learn_web_development/Getting_started/Environment_setup/Dealing_with_files
Łącze do miejsca na stronie

Kotwica: id na celu, # w łączu

index.html <a href="contact.html#hours"> Godziny otwarcia</a> contact.html <a href="#hours">Godziny</a> <h2 id="godziny">Godziny</h2> z innej strony na tej samej stronie
MDN: Creating links (document fragments) · developer.mozilla.org/docs/Learn_web_development/Core/Structuring_content/Creating_links
Łącza specjalne

Łącze do e-maila i do telefonu

W href nie musi być plik. Zamiast adresu strony może być polecenie: „napisz e-mail” albo „zadzwoń”.

<a href="mailto:kontakt@przyklad.pl">Napisz do nas</a>      program pocztowy
<a href="mailto:kontakt@przyklad.pl?subject=Pytanie"></a>   temat po „?”
<a href="tel:+48123456789">Zadzwoń: 123 456 789</a>          wybiera numer

Ciekawostka: adresowi mailto: możecie dopisać nie tylko temat, ale też odbiorcę do kopii (cc) albo gotową treść wiadomości (body). Tylko subject i body muszą zadziałać w każdym programie pocztowym, reszta zależy od tego, z jakiego programu korzysta odbiorca.

MDN: Creating links (e-mail links) i <a> HTML anchor element (href: tel:) · developer.mozilla.org/docs/Web/HTML/Reference/Elements/a · ciekawostka: RFC 6068, sekcja 4 (rfc-editor.org/rfc/rfc6068)
Dobre łącze · trzy zasady

Tekst z sensem, nowa karta z rozwagą, dymek

ŹleDobrzeDlaczego
<a href="prices.html">kliknij tutaj</a><a href="prices.html">zobacz cennik</a>tekst ma mówić, dokąd prowadzi, nawet czytany osobno
target="_blank" samotarget="_blank" rel="noopener" + „(nowa karta)” w tekścienowa karta bez dostępu do Waszej; użytkownik wie, co się stanie
ważna informacja tylko w titletitle="Otwiera plik PDF" jako dodatekdymek widać tylko po najechaniu myszą, nie na telefonie

Nowe przeglądarki przy target="_blank" same odcinają dostęp do Waszej karty. rel="noopener" dopisujecie i tak, bo działa też w starszych. Nowa karta tylko dla obcych stron, Wasze podstrony w tej samej.

MDN: Creating links (best practices, title) i <a> HTML anchor element · developer.mozilla.org/docs/Web/HTML/Reference/Elements/a
Łącza · egzamin

Tak pytają na egzaminie

1. <a href="http://google.com">strona Google</a>
W języku HTML zdefiniowano odnośnik do strony internetowej. Aby strona otwierała się w nowym oknie lub zakładce przeglądarki, należy dopisać do definicji odnośnika atrybut

  1. A. rel = "next"
  2. B. rel = "external"
  3. C. target = "_blank"
  4. D. target = "_parent"

2. <a href="#dane">
W języku HTML zdefiniowano hiperłącze ze znakiem #. Co stanie się po wybraniu przedstawionego odsyłacza?

  1. A. Zostanie wywołany skrypt o nazwie dane.
  2. B. Otworzy się osobna karta przeglądarki o nazwie dane.
  3. C. Zostanie wybrany adres względny URL o nazwie dane.
  4. D. Strona przewinie się do elementu o wartości id równej dane.
CKE, EE.09 czerwiec 2019, zad. 28 · CKE, E.14 czerwiec 2018, zad. 5
Ćwiczenie 1 · przy komputerze · 15 minut

Ćwiczenie 1: trzy podstrony i menu

  1. W swoim folderze w htdocs trzy pliki ze szkieletem: index.html, contact.html i pages/about.html.
  2. Na każdej stronie to samo menu: ul z trzema li, w każdym a do jednej ze stron. Z about.html ścieżki zaczynają się od ../.
  3. W contact.html: h2 z id="hours" i akapit z godzinami, łącze mailto: do szkolnego e-maila i łącze tel:.
  4. W index.html łącze „Godziny otwarcia” prosto do tej sekcji (plik + #).
  5. Otwórz http://localhost/nazwisko/, przeklikaj każde łącze.

Ma działać: z każdej strony dojdziesz do każdej innej, nic nie pokazuje „Not Found”, „Godziny otwarcia” przewija do sekcji, e-mail otwiera program pocztowy.

Ćwiczenie 2 · na kartce · 4 minuty

Ćwiczenie 2: jaki href?

Folder jak na drzewie: index.html, contact.html, pages/about.html. Do każdej sytuacji dopisz wartość href:

  1. Z index.html do contact.html.
  2. Z pages/about.html z powrotem do index.html.
  3. Do nagłówka id="hours" na tej samej stronie.
  4. Do obcej strony www.example.com, w nowej karcie.
  5. „Napisz do nas” na adres kontakt@przyklad.pl.
Pytania kontrolne

Trzy pytania na koniec

  1. Czym różni się adres względny od bezwzględnego i kiedy używacie którego?
  2. Co musi mieć element na stronie, żeby dało się do niego zrobić łącze z #?
  3. Dlaczego „kliknij tutaj” to zły tekst łącza?

Na następnej lekcji: obrazy w HTML, czyli img, src, alt i obraz jako łącze.

Rozkład: Łącza w HTML → Obrazy w HTML
Z realnych wdrożeń

A jak to wygląda w produkcji?

Na lekcjiW produkcjiStatus
Ścieżki względne między podstronamiStandard w projektach: ten sam kod działa na komputerze programisty, na serwerze testowym i u klienta.nadal w użyciu
Przeklikanie łączy ręcznieRobot (link checker) przechodzi całą stronę i zgłasza zerwane łącza (błąd 404) przed wdrożeniem. Zerwane łącze to stracony klient i gorsza pozycja strony w wyszukiwarce.narzędzia
rel="noopener" przy nowej karciePrzeglądarki robią to same, ale narzędzia sprawdzające kod dalej wymagają wpisu; zespoły zostawiają go dla starszych przeglądarek.nadal w użyciu
„kliknij tutaj”Audyt dostępności to wyłapuje; w sklepach i bankach tekst łącza jest częścią treści, którą pisze redaktor.unikane
http://localhost/nazwisko/Na serwerze strona leży w głównym folderze, więc adresy od korzenia (/index.html) zachowują się inaczej niż w XAMPP. Dlatego uczymy się względnych.pułapka
noopener: MDN, <a> HTML anchor element (target)
← → slajdy · F pełny ekran · S spis