SPN - Techniki Internetowe

Antoni Dydejczyk, WFiIS AGH 2020

WWW Home Page Antoni Dydejczyk

Technologie HTML5

INTERNET - kilka dat

Narodziny serwisu WWW

1991 – Tim Berners-Lee (CERN)

  • HTTP (Hypertext Transfer Protocol) - nowy protokół internetowy, określający dialog serwer-klient na temat dostępności określonego zasobu.
  • URL (Universal Resource Locator) - nowy sposób identyfikowania zasobów, łączący identyfikację serwera, sposobu dostępu do zasobu w ramach serwera oraz protokół internetowy, za pomocą którego zasób jest osiągalny.
  • Język HTML - nowy typ dokumentów, dostępnych przez HTTP i wykorzystujących identyfikatory URL do realizacji hipertekstu - systemu odsyłaczy między takimi dokumentami.

Tim Berners-Lee dyrektor Konsorcjum
World Wide Web

Wzrost liczby serwisów WWW w sieci Internet

Statystyka z strony: http://www.zakon.org/robert/internet/timeline/

Wzrost liczby serwerów w sieci Internet

Statystyka z strony: http://www.zakon.org/robert/internet/timeline/

Konsorcjum W3C

Konsorcjum W3C

Working Draft:
Praca w toku; publikację WD zatwierdza kierownictwo konsorcjum, ale zawartość może być dopiero podstawą dla dalszych dyskusji, tj. fakt opublikowania nie oznacza pełnej zgody co do treści ani stabilności rozwiązania.
Last Call Working Draft:
Specyfikacja spełnia wszystkie sformułowane wymogi, albo ewentualnie dokumentuje niezrealizowane zagadnienia. Formalnie odnosi się do wszystkich zgłoszonych wcześniej uwag i problemów. Stanowi publiczny raport techniczny, mogący być podstawą dalszych konsultacji.
Candidate Recommendation:
Ustalone współzależności z innymi specyfikacjami. Oczekiwanie na doświadczenia implementacyjne spoza grupy roboczej.
Proposed Recommendation:
Istnieją doświadczenia z implementacją specyfikacji. Jest przedmiotem przeglądu przez komitet doradczy.
W3C Recommendation:
Postać finalna. Raport techniczny spełniający wymagania, będący wynikiem uzgodnień. Uznany za nadający się do szerokiego zastosowania i realizujący misję W3C.

Protokół HTTP

  • Protokół używany do przesyłania danych pomiędzy klientem a serwerem w sieci WWW
  • Oparty na protokole TCP, używa standardowo portu 80
  • Wersja 1.0 zdefiniowana w dokumencie RFC 1945
  • Wersja 1.1 zdefiniowana w dokumencie RFC 2616
  • Wersja 2.0 zdefiniowana w dokumencie RFC 7540
  • Protokół transportowy TCP
    • Klient inicjuje połączenie TCP do serwera, port 80
    • Serwer akceptuje połączenie z klientem
    • Następuje wymiana informacji HTTP pomiędzy klientem a serwerem
    • Serwer zamyka połączenie TCP
    • Protokół HTTP 1.1 umożliwia równoległe przesyłanie obiektów napotkanych w dokumencie
  • Protokół HTTP jest „bezstanowy”
    • Serwer nie posiada informacji o kliencie po zamknięciu połączenia TCP

Język HTML

Standardy języka HTML, wersje 2 - 4.01

Język hipertekstowe HTML 4.01, XHTML 1.1, HTML 5.0

  1. Język znaczników HTML 4.01
    HTML 4.01status rekomendacji 24 grudzień 1999
    http://www.w3.org/TR/html4/
  2. Język znaczników XHTML 1.1
    XHTML™ 1.1 - Module-based XHTML – status rekomendacji 31 maj 2001
    http://www.w3.org/TR/xhtml11/
  3. Język znaczników XHTML 2.0
  4. Język znaczników HTML 5
    HTML 5 - status rekomendacji 28 październik 2014
    http://www.w3.org/TR/html5/

Standardy DOCTYPE w HTML5 i HTML 4.01


      <!DOCTYPE html>
      <html lang="en">
      <head>
	     <meta charset="utf-8">
         <title>Przykładowy dokument</title>
	     <link rel="stylesheet" href="style.css" />
	     <script src="script.js" ></script>
      </head>
      <body>
         <h1>Prosta strona</h1>
         <p>To jest <a href="demo.html">demo</a> przykład.</p>
      </body>
      </html>
    


      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
      "http://www.w3.org/TR/html4/strict.dtd">
    

Deklaracja <DOCTYPE> "document type declaration" (DTD)

  • HTML 4.01 Strict, Transitional, Frameset
    • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

  • XHTML 1.0 Strict, Transitional, Frameset
    • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

  • XHTML 1.1 DTD
    • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Walidacja dokumentu HTML

Budowa elementu HTML (XML)

Element to informacja dodana do dokumentu by opisać jego znaczenie poprzez identyfikację części, wyrażenie relacji między tymi częściami.

  • granice - znaczniki początkowe i końcowe
  • funkcja - nazwy elementu
  • meta-dane - wartości atrybutów
  • pozycja - element występuje przed innym
  • zawieranie - jeden element zawiera drugi
  • relacje - element łączy się z innym

Element w dokumencie HTML

  • Każdy element powinien zawierać znacznik otwierający i zamykający Uwaga HTML5!
  • Element pusty ( nie zawierający tekstu wewnętrznego ) zamykamy wewnątrz lub dodajemy element zamykający ( <br> - nowa linia, <br/> lub <br>) Uwaga HTML5!
  • Elementy nie mogą się krzyżować – zagnieżdżenie elementów
  • Element otwarty wewnątrz innego elementu należy najpierw zamknąć a dopiero później zamykamy element nadrzędny
    • Poprawnie: <a><b></b></a>
    • Niepoprawnie: <a><b></a></b>

Typy elementów w dokumencie HTML

  • Elementy ogólne – spinające i opisujące dokument
  • Elementy prezentacyjne – kształtujące obraz dokumentu
    • elementy wierszowe (inline elements), zawierające ciągi znaków składanych w wiersze wewnątrz bloków (horyzontalnie),
    • elementy blokowe (block elements), zawierające fragmenty kolumny tekstu i składane jeden pod drugim (wertykalnie).
  • Elementy instruktywne - sterujące działaniami wychodzącymi poza prezentację zawartego w nich tekstu (np. formularze, odsyłacze do innych dokumentów lub obiektów innego typu niż text/html)

Atrybuty w elementach
w dokumentach HTML

  • Atrybuty HTML można podzielić na ogólne, które w tym samym znaczeniu mogą przysługiwać wielu elementom oraz szczególne, które precyzują znaczenie konkretnego typu elementu.
  • Wersja ścisła DTD HTML 4.01 pozbawia elementy atrybutów czysto prezentacyjnych. Nie zawiera więc atrybutów równania tekstu do prawej czy centrowania tytułów, kolorów tła, czcionki i obramowań, wielkości czcionki, szerokości komórek tabeli itd. Atrybuty ogólne pozwalają stosować w to miejsce o wiele bardziej precyzyjny język CSS.

Elementy w nagłówku <head>
dokumentu HTML

    Element może zawierać następujące elementy:
  • title - tytuł
  • meta - element definiuje własności dokumentu HTML
  • link - definiuje relacje między odnośnikami
  • script - element definiuje skrypt
  • style - element definiuje style
  • object - element definiuje obiekt multimedialny
  • base - element definiuje adres bazowy dla strony WWW

Znaki specjalne w dokumentach HTML

    Predefiniowane encje ogólne

  • &lt; - zastępuje znak " < "
  • &gt; - zastępuje znak " > "
  • &amp; - zastępuje znak " & "
  • &apos; - zastępuje znak " ' "
  • &quot; - zastępuje znak " " "
    Wstawianie niestandardowych znaków

  • Używamy & do rozpoczęcia opisu znaku a kończymy znakiem ;.
    Pomiędzy znakami umieszczamy nazwę znaku lub jego kod szesnastkowy.
  • Przykłady :
    • &copy; (&#169;) daje symbol ©
    • &nbsp; (&#160;) daje pusty znak (twarda spacja)

Języki wspierające publikację treści
w serwisie WWW

SMIL
Język umożliwiający wstawianie animacji, wideo, dźwięku i obrazu.
Synchronized Multimedia Integration Language (SMIL 3.0)
W3C Recommendation 01 December 2008
Synchronized Multimedia Integration Language (SMIL 1.0)
W3C Recommendation 15-June-1998
SVG
Język zapisu obrazu wektorowego
Scalable Vector Graphics (SVG) 1.1 (Second Edition)
W3C Recommendation 16 August 2011
Scalable Vector Graphics (SVG) 2
W3C Candidate Recommendation 04 October 2018
MathML
Język opisu równań matematycznych
Mathematical Markup Language (MathML) Version 3.0 2nd Edition
W3C Recommendation 10 April 2014

HTML5 - nowa odsłona języka HTML


      <!DOCTYPE html>
      <-- HTML5 -->
      <html>
      <head>
	     <meta charset="utf-8">
         <title>Przykładowy dokument</title>
      </head>
      <body>
         <h1>Prosta strona</h1>
         <p>.... </p>
      </body>
      </html>
    

      <?xml version="1.0" encoding="UTF-8"?>
      <html xmlns="http://www.w3.org/1999/xhtml">
      <-- XHTML5 -->
      <html>
      <head>
	     <meta charset="utf-8">
         <title>Przykładowy dokument</title>
      </head>
      <body>
         <h1>Prosta strona</h1>
         <p>To jest przykład.</p>
      </body>
      </html>
      

Nowe elementy semantyczne w języku HTML5

ElementOpis
<header> Reprezentuje złożony segment nagłówka. Możliwe wystąpienie jako nagłówek w długim tekscie zamieszczonym w elementach <section> lub <header>.
<footer> Reprezentuje sekcję stopki u dułu strony (np. w długim tekście zamieszczonym w <article> lub <section>
<nav> Oznacza ważny zbiór odnośników na stronie. Zawarte w nim linki mogą się odnościć do tematów w otwartym dokumencie badź do innych stron w całej witrynie.
<article> Reprezentuje zawartość, która może być uznana za artykuł - pełne niepodzielne treści w rodzaju artykułu z gazety lub postu na forum.
<section> Reprezentuje sekcję dokumnetu lub grupy dokumentów. Element ten jest wszechstronnym znacznikiem, który jedna reguła - zawarta w nim treść powinna się zaczynać się od nagłówka.
<time> Informacje o czasie i dacie.
<aside> Oznacza pełen fragment treści odseperowany od głównej zawartości strony.Elementu można użyć do tworzenia np. panelu bocznego.
<figure>,<figcaption> Oznacza rysunek lub zdjęcie.Element <figure> zawiera elementy <img> i <figcaption>.

Nowe elementy w formularzach HTML5


<input type="text" required />

<input type="email" value="some@email.com" />

<input type="date" min="2010-08-14" max="2011-08-14"
         value="2010-08-14"/>

<input type="range" min="0" max="50" value="10" />

<input type="search" results="10" placeholder="Search..." />

<input type="tel"  placeholder="(555) 555-5555"
         pattern="^\(?\d{3}\)?[-\s]\d{3}[-\s]\d{4}.*?$" />
		 
<input type="color" placeholder="e.g. #bbbbbb" />

<input type="number" step="1" min="-5" max="10" value="0" />

Komponenty multimedialne w HTML5

  • Grafika rastrowa - element <img />
  • Grafika wektorowa SVG - element <svg />
  • Grafika rastrowa - element <canvas />
  • Grafika WebGL - bazująca na OpenGL
  • Multimedia - elementy <audio /> i <video />

Grafika w HTML5 - SVG



<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="utf-8">
    <title>SVG na stronie WWW</title>
  </head>
  <body>
	<svg width="150px" height="150px">
    	<rect x="0" y="0" width="73" height="73" fill="red" stroke="black" />
		<rect x="78" y="0" width="73" height="73" fill="green" stroke="black" />
		<rect x="0" y="78" width="73" height="73" fill="blue" stroke="black"/>
		<rect x="78" y="78" width="73" height="73" fill="yellow" stroke="black" />
		<circle cx="75" cy="75" r="40" fill="white" stroke="black" />
	</svg>
  </body>
</html>
    

Grafika w HTML5 - SVG


SVG w elemencie <image />
SVG w elemencie <object />
SVG w elemencie <embed />

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="utf-8">
    <title>SVG na stronie WWW</title>
  </head>
  <body>
	<img src="obrazek.svg" style="width:50px; height:50px" />
    <p>SVG w elemencie <image /></p>
    <object data="obrazek.svg" type="image/svg+xml" >
    </object>
	<p>SVG w elemencie <object /></p>
    <embed src="obrazek.svg" width="100" height="100" />
 	<p>SVG w elemencie <embed /></p>
  </body>
</html>
    
WebGL

Grafika w HTML5 - element <canvas>

<canvas> - jest nowym elementem języka HTML, który może być zastosowany do rysowania grafiki przy użyciu skryptów (zazwyczaj JavaScript). Przykładem canvas może być jego użycie do rysowania wykresów, tworzenia kompozycji fotografii lub do tworzenia animacji.

Grafika w HTML5 - element <canvas>


<html>
 <head>
   <title>Przykład canvas</title>
   <script type="application/x-javascript">
     window.addEventListener('load', function () {
       var elem = document.getElementById('canvas') ;
	   var ctx = elem.getContext('2d');
       for (i=0;i<6;i++){ for (j=0;j<6;j++){
         ctx.fillStyle  = 'rgb(' + Math.floor(255-42.5*i) ;
         ctx.fillStyle += ',' + Math.floor(255-42.5*j) + ',0)'; 
         ctx.fillRect(j*25,i*25,25,25); } } }, false ) ;
   </script>
   <style type="text/css">
      canvas { border: 2px solid #000; }
   </style>
 </head>
 <body>
   <canvas id="canvas" width="150" height="150"></canvas>
 </body>
</html>
    
WebGL

Grafika w HTML5 - WebGL

  • WebGL jest rozszerzeniem możliwości języka JavaScript, które zapewniającym dostęp do trójwymiarowego API w przeglądarce internetowej. WebGL bazuje na OpenGL ES w wersji 2.0 i dostarcza programistom interfejs grafiki 3D. Korzysta z występującego w HTML5 elementu Canvas i daje dostęp do modelu DOM.
  • Aktualnie zaimplementowane jest w przeglądarkach Mozilla Firefox, Google Chrome i Apple Safari oraz Opera i Internet Explorer od wersji 11.
  • Do rysowania grafiki za pomocą GPU wymagają urządzeń z kartami graficznymi wspierającymi minimalnie OpenGL 2.0 lub OpenGL ES 2.0. W przypadku braku zgodnej karty graficznej w przeglądarkach Google Chrome i Internet Explorer11 możliwe jest rysowanie grafiki programowe.
  • WebGL jest tworzone przez konsorcjum Khronos Group. W skład grupy pracującej nad WebGL wchodzą Apple, Google, Mozilla i Opera Software.
  • Strona konsorcjum Khronos Group - WebGL Overview
  • Strona sprawdzająca wsparcie dla WebGL po stronie przeglądarki - Supports WebGL
  • Strona projektu w firmie Mozilla - Getting started with WebGL

Kaskadowe arkusze styli CSS

  • CSS (ang. Cascading Style Sheets) – język opisu formy prezentacji opracowany w roku 1996, w roku 1998 opracowano wersję CSS 2. Obecnie trwają prace nad wersją 3.
  • CSS został stworzony w celu odseparowania struktury dokumentu od formy jego prezentacji. Separacja ta zwiększa zakres dostępności witryny, zmniejsza zawiłość dokumentu, ułatwia wprowadzanie zmian w strukturze dokumentu. Umożliwia wizualną interpretację dokumentów HTML przypisując elementom strukturalnym cechy typograficzne.
  • CSS umożliwia renderowaniu strony WWW w zależności od obsługiwanego medium - ekran, palmtop, dokument w druku czy czytnik ekranowy.
  • Początkowe problemy z implementacyjną styli w przeglądarkach spowodowały znaczne opóźnienie powszechnego przyjęcia tego standardu jako opisu formy graficznej dokumentów WWW. Różna interpretacja arkuszy CSS przez przeglądarki powoduje konieczność tworzenia przez programistów często kilku wersji dla jednego dokumentu HTML.
  • Każda przeglądarka ma "wbudowany" arkusz stylów precyzujący wartości typograficzne elementów: położenie, marginesy, odstępy, kolory, ramki, podkreślenia itd. stosownie do znaczenia danego elementu i jego atrybutów. Jest on wbudowany w tym sensie, że zwykle nie jest dostępny w formie dokumentu z definicjami.

Kaskadowe arkusze styli CSS

  • CSS oparty jest o reguły według których tworzona jest forma prezentacyjna dokumentu. Reguły CSS można dostarczyć w arkuszu zewnętrznym, wewnętrznym lub na poziomie elementów HTML. Priorytet stylów ustalany jest hierarchicznie. Pierwszeństwo mają reguły zdefiniowane bliżej formatowanego elementu.
<!DOCTYPE HTML >
<HTML>
  <HEAD>
  <TITLE>Przyklad 1</TITLE>
  <STYLE type="text/css">
    BODY { font-family: "Gill Sans", sans-serif;
           font-size: 12pt;  margin: 3em; }
  </STYLE>
  <LINK rel="StyleSheet" href="test.css"  >
</HEAD>
<BODY>
  <H1>Przyklad 1</H1>
  <P style="color:red; font-size:16px;" >To jest tekst na naszej stronie.</P>
  </BODY>
</HTML>

Składnia reguły CSS


   SELEKTOR 
     { własność 1 : wartość 1 ;
       własność 2 : wartość 2 :
     }


    Zbiór reguł składa się z:
  • selektora – wszystko do wystąpienia nawiasu {
    h1, h2 { color: blue }
    jeśli jest błąd w selektorze, reszta jest ignorowana.
  • bloku deklaracji { ... }, który zawiera listę zero lub więcej deklaracji po średnikach
    h1, h2 { color: blue; font-style: 12pt }

Przykładowe reguły CSS

  • * - dopasowuje każdy element bez wyjątku;
  • E - dopasowuje element E;
    h1 { font-family: sans-serif }
  • lista E, F, G - dopasowuje każdy element z listy;
    h1, h2, div { display-type: block; font-family: sans-serif }
  • E[foo] - dopasowuje element E który posiada atrybut foo, bez względu na jego wartość;
    planeta[title] { color: blue; }
  • E[foo="war"] - wybiera element E który posiada atrybut foo o wartości war;
    planeta[title="ziemia"]{color:blue;}
  • E#myid - wybiera element E którego atrybut ID ma wartość myid;
    h1#chapter1 { text-align: center }
  • div.warning wybiera element div którego atrybut class posiada w swojej wartości słowo warning;
    div[class~="warning"]

Przykładowe reguły CSS

  • E > F - wybiera F który jest dzieckiem E;
    body > p { line-height: 1.3 }
  • E F - wybiera element F który jest potomkiem E;
    h1 em { color: blue }
  • E + F - wybiera element F który występuje od razu po danym ( elementy siostrzane );
    div + p { text-indent: 0 }
  • E:first-child - (pseudoelement) wybiera element E który jest pierwszym dzieckiem swojego rodzica;
    div > p:first-child { text-indent: 0 }
  • Inne pseudoelementy: :first-line, :first-letter, :before, :after .

Elemety liniowe i blokowe CSS

    Trzy rodzaje elementów:
  • blokowy - zaczynający nowy akapit;
  • liniowy - włączany do bieżącego wiersza;
  • niewidoczny - element nie jest wyświetlany.

   nazwa {display: block}
   obrazek {display: inline}
   plik {display: none}

Model ramkowy CSS

Margines, obramowanie
i wypełnienie w modelu ramkowym CSS

Własności dziedziczone przez elementy

Porządek kaskadowy

Waga
Znajdź wszystkie reguły które stosują się do danego elementu i własności - wybierz regułę według wagi
Pochodzenie
W przeciwnym razie według pochodzenia - reguły autora - reguły użytkownika - domyślne reguły procesora CSS.
Szczegółowość
W przeciwnym razie wybierz regułę o większej mierze szczegółowości.
Kolejnośćść
W przeciwnym razie, wybierz tą regułę która występuje w dokumencie CSS później. Uznaje się że reguły w arkuszach importowanych znajdują się przed regułami w arkuszu bieżącym.