Nejen vzhled Vašich webových stránek může rozhodnout o tom, zda návštěvník stránky podrobněji prozkoumá nebo je opustí.
K vytvoření webových stránek můžete využít:
Tip: Jak navrhnout úspěšný web krok za krokem aneb jak hodně se můžete/máte zapojit
Konzultace:
Vizuální koncept:
Příloha | Velikost |
---|---|
Webová režie - základy koncepčního myšlení u online projektů | 3.77 MB |
Komplexní analýza webových stranák | 1.61 MB |
Výběr použitých technlogií závisí na cílové skupině uživatelů.
Po rychlé zobrazení alespoň částečného obsahu stránky je vhodné dokument rozdělit minimálně na dva samostatné bloky.
Webový dokument má neurčité rozměry závislé na velikosti zobrazovacího zařízení (pokud je vůbec nějaké použito např. u zrakově postižených). Webový dokument je možné vnímat podobně jako pohled např. na toaletní papír (při větším dokumentu vidíte vždy pouze jeho část).
Lidské oko dokáže najednou vnímat plochu přibližně o rozměrech 800x600 bodů.
Generátory rozvržení vzhledu:
clear: both; font-size: 1px /* NN7+ */ height: 1px
/* * http://perishablepress.com/new-clearfix-hack * (http://www.positioniseverything.net/easyclearing.html) */ .clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } * html .clearfix { zoom: 1; } /* IE6 */ *:first-child+html .clearfix { zoom: 1; } /* IE7 */
#section-header { } #section-content { /* obtekani ukonceno pomoci .clearfix */ } #content-wrapper { float: left; width: 100%; } #content { margin-left: 300px; /* %, em */ margin-right: 200px; /* %, em */ } #sidebar-left { float: left; width: 300px; /* %, em */ margin-left: -100%; } #sidebar-right { float: left; width: 200px; /* %, em */ margin-left: -200px; /* %, em */ } #section-footer { }
/* http://www.palantir.net/blog/responsive-design-s-dirty-little-secret */ #section-header, #section-content, #section-footer { width: 960px; /* %, em */ } #section-content { /* obtekani ukonceno pomoci .clearfix */ } #content { float: left; width: 460px; /* %, em */ margin-left: 300px; /* %, em */ margin-right: -100%; } #sidebar-left { float: left; width: 300px; /* %, em */ margin-left: 0; margin-right: -100%; } #sidebar-right { float: right; width: 200px; /* %, em */ margin-right: 0; margin-left: -100%; }
<header>...</header> <main> <article>...</article> <nav>...</nav> <aside>...</aside> </main> <footer>...</footer>
main { display: flex; } nav { width: 13em; flex: none; } article { width: auto; flex: auto; order: 2; } aside { width: 20%; flex: none; }
Poznámka: CSS vlastnosti margin
se dá využít také jako "relativní pozicování"
Šablony se většinou navrhují buďto s pevnou nebo pružnou šířkou. Pružná šířka ovšem bývá kombinací přizpůsobivé a pružné varianty v kombinaci se záporným pozicováním plovoucích bloků.
Při rozvržení obsahu je vhodné dle typografie dodržovat šířku odstavce (bloků) 30-80 znaků.
Pevnou nebo minimální šířku grafického návrhu je možné odhadnout ze statistik návštěvnosti.
Příloha | Velikost |
---|---|
flexbox.png | 5.45 KB |
Pro práci s grafikou je vhodné mít:
Pro média je vhodné na web umístit logo ve vektorové grafice společně s informacemi o barvách a písmu (např. Loga a grafický manuál | Česká pojišťovna)
V rastrové (bitmapové) grafice je celý obrázek popsán pomocí jednotlivých barevných bodů (pixelů) uspořádaných do pravoúhlé mřížky. Každý bod má určen svou přesnou polohu a barvu. Kvalitu záznamu obrázku ovlivňuje především rozlišení (zobrazení 96 dpi, tisk 300 dpi) a barevná hloubka (počet barev).
Výhody:
Nevýhody:
Použití:
Editory:
Ukázka: Dove Evolution
Jaký bude obrázek při změně rozlišení monitoru z 1024x768 px na 800x600 px?
Kolik pixelů má 12 Mpx foťák?
Vektorový obrázek je složen ze základních geometrických útvarů jako jsou body, přímky, křivky a mnohoúhelníky.
Výhody:
Nevýhody:
Použití:
Editory:
Obrázek není složen z jednotlivých bodů, ale z křivek – vektorů.
Křivky spojují jednotlivé kotevní body a mohou mít definovanou výplň (barevná plocha nebo barevný přechod). Tyto čáry se nazývají Bézierovy křivky, které umožňují pomocí čtyř bodů popsat libovolný úsek křivky.
Křivka je popsána pomocí dvou krajních kotevních bodů a dvou editačních bodů, které určují tvar křivky. Spojnice mezi kotevním a editačním bodem se nazývá směrová úsečka a je tečnou k výsledné křivce.
Vlastnost | GIF | JPEG | PNG | TIFF |
---|---|---|---|---|
Model RGB | 256 barev (8 bitů) |
16 milionů (24 bitů) |
16 milionů (24 bitů) |
16 milionů (24 bitů) |
Model CMYK | 4 miliardy (32 bitů) |
4 miliardy (32 bitů) |
||
Gama korekce | ||||
Průhlednost | 2 úrovně (1 bit) |
256 úrovní (8 bitů) |
256 úrovní (8 bitů) |
|
Komprese | bezztrátová | ztrátová | bezztrátová | bezztrátová |
Proklad | ||||
Animace | ||||
Vrstvy |
Ikona favicon.ico (Favorite Icon – favicon) usnadňuje uživateli vizuální odlišení jednotlivých webů. Obsahuje několik vrstev stejného obrázku v různé kvalitě.
Asi nejrychleji můžete vytvořit ale hlavně zkontrolovat funkčnost favicony pomocí online služby Realfavicongenerator.
Další rozměry:
Odkaz na ikonu umístěte do hlavičky (X)HTML dokumentu:
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
Nejlepším místem pro soubor favicon.ico je kořenový adresář (root) webu.
Apple zařízení iPhone, iPod a iPad hledá pro zobrazení ikony webu na plože níže uvedené soubory:
Obrázky se umisťují buď přímo do kořene webu nebo se pomocí meta tagu k nim definuje cesta (jedna):
<link rel="apple-touch-icon" href="images/apple-touch-icon.png" />
nebo více cest pro každý rozměr (57x57, 72×72, 114×114 a 129x129 px) zvlášť:
<link rel="apple-touch-icon" sizes="57×57" href="images/apple-touch-icon-ipad-57.png" /> <link rel="apple-touch-icon" sizes="72×72" href="images/apple-touch-icon-ipad-72.png" /> <link rel="apple-touch-icon" sizes="114×114" href="images/apple-touch-icon-iphone-114.png" /> <link rel="apple-touch-icon" sizes="129×129" href="images/apple-touch-icon-iphone-129.png" />
V nejjednodušší variantě stačí pouze umístit do kořene webu apple-touch-icon.png o rozměrech 129x129 px. Zařízení si velikosti přizpůsobí dle potřeb (k zakulacení rožků dochází automaticky). Při použítí pouze souboru apple-touch-icon.png nebudou použity žádné další efekty.
Asi nejrychleji můžete vytvořit favicon pomocí online služby Bradicon. Pro vytváření a editaci je možné použít např. aplikaci Gimp.
Poznámka:
V Internet Exploreru se ikona zobrazuje až po přidání webové stránky do oblíbených položek.
patterns
Při volbě barev grafického návrhu je možné využít:
Zadavatel by měl určit:
Objem přenášených dat (zdrojové kódy, CSS, skripty, obrázky, přílohy, multimédia atd.) by měl být co nejmenší.
Uživatelské rozhraní by měl být schopen ovládat i běžný uživatel, ale např. administrace webu již předpokládá více zkušeností (např. auto také může řídit jak profesor, tak i skladník, ale bagr pouze osoba s příslušným speciální zaškolením).
Při návrhu uživatelského rozhraní používejte standardní prvky (podtržené odkazy, menu, formulářové prvky, tlačítka atd.), které uživatelé očekávají. Inovace je možná, ale ne na úkor zvyklostem (např. posuvné dveře místo klasických mohou pro někoho představovat neočekávanou překážku). Uživatelské rozhraní by se mělo blížit spíše dálkovému ovladači televize, než kokpitu letadla.
Odkazy:
Přehled nástrojů pro kontrolu přístupnosti (Tools for validating accessibility).
Informace o přístupnosti:
Total Validator poskytuje souhrnnou kontrolu webové stránky (v placené verzi umožňuje prověřit celý web ):
World Wide Web Consortium (W3C) je webová standardizační organizace, která se snaží o přístupnost webu z nejrůznějších zařízení (nejen z počítače):
Cynthia Says umožňuje kontrolu stránky (Section 508, WCGA – Priority 1, 2, 3)
Web Accessibility Evaluation Tool (WAVE) kontroluje dostupnost informací
Optimalizace pro vyhledávače:
Kontrola:
Základní požadavky uživatelů na webové stránky:
Technické požadavky:
Příklad adresářové struktury webu:
files/ attachments/ documents/ images/ media/ includes/ scripts/ themes/ blue/ images/ styles/ green/ images/ styles/
/
./
../
(o dva adresáře výš ../../
)http://
/
./
../
Pokud se chcete vyhnout problémům při přenosu dat, vytvářejte názvy souborů pouze z malých písmen (Windows není case sensitive) anglické abecedy, tj. bez diakritiky, číslic, pomlčky, podtržítka a tečky.
Windows není case sensitive, unixové systémy jsou.
U názvů souborů pozor na speciální znaky jako je např. "dlouhá" pomlčka (–), která může být při kopírování souborů na server nahrazena jiným znakem.
"Dlouhou" pomlčku (–) je možné vložit omylem do názvu souboru např. při kopírování z aplikace, která má povolené automatické nahrazování znaků (Writer, Word atd.).
Vizuální prezentace dokumentu se skládá z bloků. Blok je čtyřhranný objekt, který tvoří:
Chyba výpočtu rozměrů prvku se projevuje u prohlížečů:
Výpočet:
Pozadí elementu vyplňuje obsah, vnitřní okraj a rámeček (viditelné v místech přerušení). Vnější okraj je vždy transparentní.
/* Box model (dimension = content + padding + border), http://html5please.com/#box-sizing */ *, *:before, *:after { -moz-box-sizing: border-box; /* FF(3.5-3.6) */ -webkit-box-sizing: border-box; /* iOS(3.2-4.3), Android(2.1-3) */ box-sizing: border-box; /* Opera17+, IE8+, Chrome28+, Safari5.1+ */ } iframe { -moz-box-sizing: content-box; /* FF(3.5-3.6) */ -webkit-box-sizing: content-box; /* iOS(3.2-4.3), Android(2.1-3) */ box-sizing: content-box; /* Opera17+, IE8+, Chrome28+, Safari5.1+ */ }
Chyba výpočtu hodnoty jednotky em vnořených prvků u IE6-:
Hypertextový značkovací jazyk
Název Internet je složen z původně latinské předpony inter (mezi, mezinárodní) a anglického slova net (počítačová síť).
Síťová služba World-Wide Web (celosvětová pavučina – zkráceně web) umožňuje prezentovat informace v přehledném grafickém prostředí. Libovolnou webovou stránku je možné v prohlížeči zobrazit zadáním její unikátní adresy URL (Uniform Resource Locator). Informace jsou uloženy v textovém dokumentu, doplněném o grafické prvky a multimédia ve formě webových stránek. Stránka může obsahovat odkazy, pomocí nichž je možné přejít na jiné místo aktuálního, nebo i jiného dokumentu v Internetu – tento způsob členění se nazývá hypertext.
Webová stránka je textový dokument s příponu html (dynamicky generované stránky mohou mít i jiné přípony např. php, asp atd.) obsahující zdrojový kód. Z důvodu zmenšení objemu přenášených dat obsahuje zdrojový kód pouze ta nejnutnější data, která je schopen prohlížeč interpretovat (předat uživateli v přehledné formě). Webovou stránku je možné přirovnat k "receptu", podle kterého prohlížeč "vaří".
Zdrojový kód webové stránky je možné zobrazit:
Kvalita webových stránek závisí na znalostech a časových možnostech tvůrce.
Serverové aplikace pro tvorbu webových stránek umožňují snadno a rychle vytvářet jednoduché webové stránky pomocí průvodců a připravených šablon. Např.:
Lokální (X)HTML editor je softwarová aplikace určená k vytváření webových stránek, která poskytuje řadu podpůrných nástrojů a funkcí pro usnadnění a zrychlení tvorby.
Způsob | Editor | Výhody | Nevýhody |
---|---|---|---|
Rychle | WYSIWYG (What You See Is What You Get) editor – při vytváření vidíte stránku tak, jak by měla vypadat v prohlížeči | K vytvoření stránek stačí pouze základní znalost ovládání počítače. | Závislost na kvalitě editoru |
Kvalitně | Textový (strukturní) editor – vytváříte přímo zdrojový kód | Úplná kontrola nad obsahem stránek | Znalost (X)HTML, CSS, skriptování atd. |
Efektivně | Editor zvládající WYSIWYG i textový režim | K zrychlení práce je možné využít vhodné funkce WYSIWYG editoru |
Editor | Cena | Poznámky |
---|---|---|
Adobe Dreamweaver (GoLive) |
|
|
Quanta |
|
|
Microsoft FrontPage |
|
|
CKeditor |
|
|
Kompozer (NVU) |
|
|
Writer/Web editor z OpenOffice |
|
|
Easy Editor |
||
Mozilla Editor |
|
|
Netscape Editor |
|
|
Amaya Editor |
|
Editor | Cena | Poznámky |
---|---|---|
Eclipse |
|
|
NetBeans IDE |
|
|
PSPad |
|
|
Notepad++ |
||
Macromedia HomeSite |
|
|
AceHTML |
||
EasyPad |
||
Bluefish |
|
Některé aplikace umožňují uložit (exportovat) dokument jako webovou stránku:
Existuje také mnoho průvodců a podpůrných utilit na vytváření webových stránek či dotazníků:
*.module
<li>
a do políčka "na konec" napište </li>
<ul>
a </ul>
pro nečíslovaný seznam
je možné vkládat klávesovou zkratkou Ctrl+Shift+mezeraCESTA-K-PSPAD\Script\JScript
Vývoj základního jazyka pro tvorbu webových stránek, který umožňuje publikovat dokumenty na Internetu.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
Verze 3.0 nebyla nikdy jako standard přijata pro svoji přílišnou složitost.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!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">
<!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">
application/xhtml+xml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<h1>Nadpis první úrovně</h1>
<p>Odstavec textu</p>
<a href="http://www.google.com/">Google</a>
Zařízení, které interpretuje (zpřístupňuje, vyjadřuje) webovou stránku:
Jedinečná identifikace zdroje, obecně použitelná množina na všechny druhy adres.
Jedinečná identifikace zdroje často používaných schémat, která jsou podmnožinou URI.
Definuje:
Příklad URL pro http protokol:
http://cs.wikipedia.org:80/w/wiki.phtml?title=URL&action=edit
Zastaralý prvek, který byl nahrazen jiným, nebo bude ze specifikace vypuštěn.
Znaková sada určuje uspořádanou množinu znaků.
Ve dvojkové soustavě je možné 128 znaků vyjádřit pomocí 7 bitů.
Znak | Pořadové číslo |
---|---|
" | 34 |
& | 38 |
' | 39 |
< | 60 |
> | 62 |
@ | 64 |
\ | 92 |
Ve dvojkové soustavě je možné 256 znaků vyjádřit pomocí 8 bitů (bajt).
Prvních 128 znaků je shodných s ASCII.
Na rozdíl od osmibitových tabulek znaků jako je bratří Kamenických, Latin 2, Windows-1250 či ISO-8859-2 lze všechny znaky zobrazit současně bez použití znakových entit. Tj. v jednom textu lze tedy kombinovat např. češtinu, ruštinu a řečtinu.
Kódování znaků vyjadřuje binární podobu znaků znakové sady a je možné jej určit pomocí:
<?php header("Content-Type: text/html; charset=utf-8"); ?>
<?xml version="1.0" encoding="utf-8"?>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
Značkovací jazyky se dělí na:
(X)HTML je značkovací jazyk, který je tvořen pomocí elementů (prvků, značek).
Elementy nejsou webovým prohlížečem zobrazovány přímo, ale jsou interpretovány k vytvoření vizuálního obsahu.
Element je tvořen sekvencí znaků obsahující:
<h1>Nadpis první úrovně</h1>
Při vnořování se prvky nesmí křížit!
<h1><em></h1></em>
<h1><em></em></h1>
Zápis elementu bez obsahu je možné zkrátit.
Např. zápis:
<hr></hr>
<hr />
<hr>
Poznámka:
Elementy bez obsahu nemají v HTML uzavírací část!
Atributy se dělí na:
Slouží k upřesnění významu nebo k přiřazení vlastností prvku. Každý atribut má definovanou svoji výchozí hodnotu. Atribut se uvádí pouze u počátečního tagu.
<h1 id="nadpis1">Nadpis první úrovně</h1> <hr class="vytisknout" /> <img src="logo.jpg" alt='Popis “našeho” obrázku' />
Poznámka:
U HTML nezáleží na velikosti písmen názvů a atributů elementů. Pokud je vlastnost atributu jednoslovná (neobsahuje mezeru), nemusí se u HTML uzavírat do uvozovek, nebo apostrofů.
Prohlížeče komentáře ignorují. Komentáře slouží pouze autorovi k zapsání poznámek např. k lepší orientaci v kódu. V obsahu komentáře není možné použít dvě pomlčky bezprostředně za sebou (tj. konec komentáře).
<!-- komentar -->
Poznámka:
Komentáře je vhodné psát bez diakritiky.
Podmíněné komentáře (Conditional Comments (en)) umožňují vkládat bloky kódu přístupné pouze pro určitou verzi prohlížeče Internet Explorer. Ostatní prohlížeče podmíněné komentáře ignoruji.
Podmíněné komentáře je možné využít např. k opravě implementačních chyb prohlížeče Internet Explorer (IE).
Syntaxe | Význam |
---|---|
! | negace (not) |
lt | menší než (less than) |
lte | menší nebo rovno (less than or equal to) |
gt | větší než (greater than) |
gte | větší nebo rovno (greater than or equal to) |
& | a (and) |
| | nebo (or) |
Příklady:
<!--[if IE]> Používáte Internet Explorer. <![endif]-->
<!--[if IE 6]> Používáte Internet Explorer verze 6. <![endif]-->
<!--[if lte IE 6]> Používáte Internet Explorer verze 6 nebo nižší. <![endif]-->
<!--[if (gte IE 5)&(lte IE 7)]> Tento text se zobrazí v IE od verze 5 až po verzi 7. <![endif]-->
<!--[if (gte IE 5)&(lte IE 7)]> Tento text se zobrazí v IE od verze 5 až po verzi 7. <![if IE 6]> Tento text doplní výše uvedený text, ale pouze v IE 6 (vnořená podmínka). <![endif]> <![endif]-->
U odhalujících komentářů je nutné před zobrazovaným obsahem komentář ukončit a za zobrazovaným obsahem komentář opět začít.
Příklady:
<!--[if !IE]> Text, ktery se nezobrazi (obycejny komentar). --> Nepoužíváte Internet Explorer. <!-- Text, ktery se nezobrazi (obycejny komentar). <![endif]-->
<!--[if !IE]> --> Nepoužíváte Internet Explorer. <!-- <![endif]-->
Pro odstranění mezer (používá se např. v hlavičce dokumentu) se používá syntaxe:
<!--[if !IE]><!-->Nepoužíváte Internet Explorer.<!--<![endif]-->
<!--[if !IE]><!--><html><!--<![endif]-->
Používají se pro vyjádření znaků nezávisle na znakové sadě dokumentu.
Decimální zápis znakové entity | Alternativní zápis | Grafické vyjádření |
---|---|---|
ß | β (řecká abeceda) | |
å | å (norština) | |
水 | 水 (čínský znak pro vodu) | |
&247; | ÷ | ÷ (děleno) |
× | × | × (krát) |
± | ± | ± (plus mínus) |
&8722; | − | – (minus) |
– | – | – (půlčtverčíková pomlčka, ne spojovník) |
— | — | — (čtverčíková pomlčka) |
„ | „ | „ (počáteční kulatá uvozovka – 99) |
“ | “ | “ (koncová kulatá uvozovka – 66) |
‚ | ‚ | ‚ (počáteční jednoduchá uvozovka) |
‘ | ‘ | ‘ (koncová jednoduchá uvozovka) |
’ | ’ | ’ (apostrof – odsuvník) |
» | » | » (počáteční obrácené franc. uvozovky) |
« | « | « (koncové obrácené franc. uvozovky) |
® | ® | ® (registrovaná známka) |
© | © | © (copyright) |
¶ | ¶ | ¶ (znak odstavce) |
★ | ★ (černá hvězda) | |
☆ | ☆ (bílá hvězda) | |
✔ | ✔ (ano) | |
✓ | ✓ (ano) | |
✓ | ✓ (ano) | |
✗ | ✗ (ne) | |
✘ | ✘ (ne) | |
✕ | ✕ (ne) | |
✖ | ✖ (ne) | |
‰ | ‰ (promile) |
Mají v kódu dokumentu zvláštní význam a proto musí být v běžném textu nahrazovány entitami.
Decimální zápis znakové entity | Alternativní zápis | Poznámka | Grafické vyjádření |
---|---|---|---|
" | " | quote | " |
& | & | ampersand (et) | & |
' | ' (neznají všechny prohlížeče) | apostrophe | ' |
< | < | less than | < |
> | > | greater than | > |
  | | non-breaking space (patří za jednoslabičné přeložky) | "pevná (nerozdělitelná) mezera" |
‑ | N/A |
non-breaking hypen (Dalším řešením může být použití CSS: <span style="white-space: nowrap;">e-mail</span>) |
"pevná (nerozdělitelná) pomlčka" |
  | thin space (Měla by se používat mezi číslem a jednotkou, titulem a jménem, v telefonních číslech atd. Bohužel ne všechny prohlížeče ji interpretují jako nerozdělitelnou.) | "tenká" mezera |
Převodníky znaků:
(X)HTML dokument (zdrojový kód webové stránky) je základní textový soubor sloužící k ukládání dat.
Struktura HTML 4.01 dokumentu
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-language" content="cs"> <meta name="language" content="cs"> <title>HTML dokument</title> <meta name="description" content="Základní šablona HTML dokumentu"> <meta name="keywords" content="html,dokument,šablona"> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <h1>Můj první HTML dokument</h1> <p>Jak snadné, že?</p> </body> </html>
Struktura XHTML 1.0 dokumentu
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="cs" />
<meta name="language" content="cs" />
<title>XHTML dokument</title>
<meta name="description" content="Základní šablona XHTML dokumentu" />
<meta name="keywords" content="xhtml,dokument,šablona" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Můj první XHTML dokument</h1>
<p>Jak snadné, že?</p>
</body>
</html>
Struktura HTML 5 dokumentu
<!DOCTYPE html> <html lang="cs"> <head> <meta charset="utf-8"> <title>HTML 5 dokument</title> <meta name="description" content="Základní šablona HTML 5 dokumentu"> <meta name="keywords" content="html,dokument,šablona"> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>Můj první HTML5 dokument</h1> <p>Jak snadné, že?</p> </body> </html>
Struktura XHTML 5 dokumentu
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta charset="utf-8" />
<title>XHTML 5 dokument</title>
<meta name="description" content="Základní šablona XHTML 5 dokumentu" />
<meta name="keywords" content="html,dokument,šablona" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Můj první XHTML5 dokument</h1>
<p>Jak snadné, že?</p>
</body>
</html>
<?xml version="1.0" encoding="utf-8"?>
Uvádí, že se jedná o XML dokument (logicky tudíž není u HTML dokumentu) a obsahuje dva pseudo-atributy:
Celá XML deklarace je nepovinná, pro kódování UTF-8 nebo UTF-16.
IE6- a některé starší verze Mozilly a Opery XML deklaraci nerozumí a přepínají vykreslování do nestandardního (tzv. quirk) režimu. Z tohoto důvodu je vhodné psát dokument v kódování UTF-8 a neuvádět XML deklaraci.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Syntaktická pravidla stanovující:
U HTML 4.01 a XHTML 1.0 je možné si zvolit jeden ze tří typů dokumentu:
Typ dokumentu obsahuje:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
Kořenový element celého dokumentu do kterého se vkládá veškerý obsah obsahující atributy:
Důvody uvádění kódu jazyka:
<head> </head>
<body> </body>
Doporučení:
Stránku začněte tvořit ve striktním režimu. Pokud z nějakého důvodu potřebujete použít i zavržené elementy změňte typ dokumentu na přechodný (transitional). Typ dokumentu s rámy již raději nepoužívejte.
Příloha | Velikost |
---|---|
dokument-html401.html | 753 bajtů |
dokument-xhtml10.html | 859 bajtů |
Z přiložených dat vytvořte dle PDF vzoru:
Příloha | Velikost |
---|---|
data-oit.zip | 124.45 KB |
data-oit-easy.zip | 124.22 KB |
Postupně, na základě získávaných znalostí vytvořte XHTML dokument s názvem index.html pomocí textového editoru PSPad obsahující data ze cvičení 1.
Obsah hlavičky dokumentu <head>
prohlížeče přímo nezobrazují, mohou ho ovšem zpřístupnit jiným způsobem.
Např. vizuální prohlížeče mohou:
Špatně:
<title>Vojsko</title>
<title>Moje stránky</title>
Dobře:
<title>Velitelství výcviku – Vojenská akademie</title>
<title>Tomáš Daněk > životopis</title>
Poznámka: entita > se zobrazí jako znak větší než >
Meta data (informace) – specifikují informace o daném dokumentu.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Kódování uvádějte v hlavičce dokumentu vždy před prvním textem tj. i před elementem <title> .
Primární jazyk dokumentu a sémantická informace o jazyku obsahu dokumentu
<meta http-equiv="content-language" content="cs" /> <meta name="language" content="cs" />
<meta name="description" content="Resortní vzdělávací a výcvikové zařízení Ministerstva obrany České republiky" />
<meta name="keywords" content="velitelství,výcvik,vojenská,akademie,Vyškov,vzdělání,kurz,vojsko,armáda" />
<meta name="author" content="all: Odbor informačních technologií (OIT) VeV-VA; oit@ispovy.acr" />
<meta name="author" content="code: Tomáš Daněk (Tomas Danek); tomas.danek@ispovy.acr" /> <meta name="author" content="style: Petr Novák (Petr Novak); pepa@z-depa.cz" /> <meta name="author" content="scripts: Petr Kozina; kozina@skriptovani.com" />
<meta name="webmaster" content="Bc. Tomáš DANĚK (http://tomas.dankovi.info/)" />
<meta name="copyright" content="2009 Velitelství výcviku – Vojenská akademie - Odbor informačních technologií (oit@ispovy.acr)" />
Pokud používáte u elementů atributy style
je vhodné doplnit do hlavičky:
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="default-style" content="nazev-stylu" />
<meta http-equiv="content-script-type" content="text/javascript" />
nebo
<meta http-equiv="content-script-type" content="text/vbscript" />
Počet sekund do obnovy dokumentu – použitelné např. u webových kamer
<meta http-equiv="refresh" content="10" />
Používejte pouze u webů, které velmi často mění svůj obsah (webové kamery, zpravodajství, webová fóra atp.)
<!-- dokument se nesmi ukladat do cache --> <!-- CACHE - MSIE --> <meta http-equiv='cache-control' content='must-revalidate, post-check=0, pre-check=0' /> <meta http-equiv='pragma' content='public' /> <!-- CACHE - MSIE end --> <!-- CACHE - other browsers --> <meta http-equiv='cache-control' content='no-cache' /> <meta http-equiv='pragma' content='no-cache' /> <meta http-equiv='expires' content='-1' /> <!-- CACHE - other browsers end --> <!-- end: dokument se nesmi ukladat do cache -->
Po uvedeném datu žádá prohlížeč o obnovení dokumentu (neuvádějte hodnotu nula), hodnota -1 znamená neukládat do cache viz víše:
<meta http-equiv="expires" content="Thu, 30 Dec 2002 15:17:45 GMT" />
Dokument je platný (může být nahráván z cache prohlížeče) jeden týden tj. 604 800 s od posledního požadavku:
<meta http-equiv="cache-control" content="max-age=604800, must-revalidate">
Dokument je platný (může být nahráván z cache prohlížeče) jeden den tj. 86 400 s od posledního požadavku:
<meta http-equiv="cache-control" content="max-age=86400, must-revalidate" />
Soubor metadatových prvků, jehož záměrem je usnadnit vyhledávání elektronických zdrojů.
<meta name="DC.Title" content="Velitelství výcviku – Vojenská akademie" /> <meta name="DC.Identifier" content="http://www.vavyskov.cz" /> <meta name="DC.Language" content="cs" />
Klíčová slova:
Indexovat obsah, následovat odkazy, okolo výsledku vyhledávání zobrazit i část textu a archivovat snímek stránky:
<meta name="robots" content="index,follow" /> <meta name="googlebot" content="index,follow,snippet,archive" />
Neindexovat obsah, nenásledovat odkazy, okolo výsledku vyhledávání nezobrazovat část textu a nevytvářet snímek stránky:
<meta name="robots" content="noindex,nofollow" /> <meta name="googlebot" content="noindex,nofollow,nosnippet,noarchive" />
Klíčová slova bez a se záporem no je možné i kombinovat.
<meta>
. Univerzálním řešením je používat kódování UTF-8. Pro češtinu je také možné použít ISO-8859-2 nebo windows-1250.<html>
a skládá se ze dvou základních částí: hlavičky <head>
a těla <body>
.<title>
.
Tělo dokumentu <body>
:
Blokové elementy při zobrazení začínají a končí novým řádkem.
<h1>Nadpis první úrovně</h1>
Nepřeskakujte úrovně (nepoužívejte např. <h4> bezprostředně po <h1>)!
Vizuální prohlížeče vykreslují nadpisy jako blokové elementy tučným zvětšeným písmem. Velikost logicky odpovídá důležitosti nadpisu, takže např. <h1> je největší. Toto zobrazení můžete změnit pomocí stylů.
<p>Odstavec textu</p>
<hr />
<address>Velitelství výcviku – Vojenská akademie (VeV-VA), 682 01 Vyškov, Víta Nejedlého, Tel. +420 973 451 022</address>
<address> Velitelství výcviku – Vojenská akademie (VeV-VA)<br /> Víta Nejedlého<br /> 682 01 Vyškov<br /> Tel. +420 973 451 022 </address>
Viz Bílé znaky
Viz Kontejnery
Může přímo obsahovat pouze blokové elementy, ne tedy hned text – ten musí být uzavřen v nějakém „kontejneru“, nejčastěji v odstavci.
<blockquote cite="http://cs.wikipedia.org/wiki/Jan_Werich"> <p>Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.</p> <p>Kdo víno má a nepije, kdo hrozny má a nejí je, kdo ženu má a nelíbá, kdo zábavě se vyhýbá, na toho vemte bič a hůl, to není člověk, to je vůl.</p> <div>Autor: <cite>Jan Werich</cite></div> </blockquote>
Atribut cite uvádí citovaný zdroj, odkaz na další zdroje nebo citaci (jména osob, organizací apod.). Pro zobrazení zdroje použijte řádkový element cite.
Příloha | Velikost |
---|---|
elementy-blokove.html | 2.34 KB |
Řádkové elementy:
<p>Vyhledávač <a href="http://www.google.com">Google</a></p>
Odkaz (anchor, tedy kotva, nebo také hyperlink či zkráceně link) je místo v dokumentu, pomocí kterého může uživatel přejít na jiné místo, které se nachází buď v aktuálním dokumentu nebo kdekoli jinde na Internetu (může se jednat o jiný dokument, obrázek, zvuk, video atd).
K přemístění na nové místo dojde po aktivaci odkazu, například kliknutím myší, stiskem klávesy nebo hlasovým příkazem.
Příklad odkazu s více atributy:
<p>Webová standardizační organizace <a href="http://www.w3.org" type="text/html" charset="utf-8" hreflang="en" xml:lang="en" lang="en" title="The World Wide Web Consortium">W3C</a></p>
Odkaz na pojmenované místo v dokumentu:
<p><a href="#odstavec1">První odstavec</a></p>
Pojmenované místo v dokumentu tzv. kotva:
<!-- kotva --> <p><a id="odstavec1" name="odstavec1"></a></p>
Pokud si v dokumentu pojmenujete určité místo, můžete se na něj odkazovat tak, že v adrese za jménem dokumentu uvedeme znak # (zvaný též sharp, hash a pod.), následovaný jménem, které jsme místu přidělili.
V XHTML dokumentu je možné se odkazovat na libovolný element s id, ovšem starší prohlížeče podporují pouze element <a> s atributem name.
Atributy name a href můžete použít současně v jednom elementu <a>, což znamená, že jeden element <a> může být zároveň odkazem i cílem jiného odkazu. Pokud ale element <a> slouží pouze jako cíl jiného odkazu, potom byste zde neměli používat žádné z atributů pro bližší určení zdroje: charset, type, hreflang, rel a rev.
U odkazů využívejte textu s významem odkazu. Nepoužívejte nic neříkající odkazy.
Příklad:
<p>Text psaný <strong>tučně</strong>.</p>
Poznámka:
Logicky formátovaný textový element <strong> je zhlediska přístupnosti webu vhodnější než fyzicky formátovaný prezentační element <b>.
<p>Text psaný <em>kurzivou</em>.</p>
Poznámka:
Logicky formátovaný textový element <em> je zhlediska přístupnosti webu vhodnější než fyzicky formátovaný prezentační element <i>.
Příklad 23:
<p>2<sup>3</sup></p>
Příklad H2O:
<p>H<sub>2</sub>0</p>
Kratší citace uvnitř textu. Kolem textu by se ve vizuálním prohlížeči měly automaticky doplnit uvozovky podle jazyka, v kterém je dokument psán.
<p>Citace: <q>Armáda beranů, kterou vede lev, je silnější, než armáda lvů, kterou vede beran</q>, řekl kdysi <cite>Napoleon Bonaparte</cite>.</p>
Tento element označuje citovaný zdroj, odkaz na další zdroje nebo citaci (jména osob, organizací apod.).
Označuje zkratku, jejíž plné znění by se alespoň při prvním výskytu v dokumentu mělo nacházet v jeho atributu title (XHTML, URI, ČR, ÚV KSČ apod.).
<p>Používáme rozšiřitelný hypertextový značkovací jazyk <abbr title="EXtensible HyperText Markup Language">XHTML</abbr>.</p>
Tento element se používá k uzavírání zkratkových slov. Ty se narozdíl od zkratek vyslovují většinou jako jedno slovo, ne po jednotlivých písmenech. Pravidla pro použití atributu title jsou zde stejná jako u elementu abbr (Čedok, NATO, NASA apod.).
<p>Zkratkovité slovo <acronym title="Československá dopravní kancelář">ČEDOK</acronym>.</p>
Obsahem tohoto elementu je pojem nebo definice.
<p>Definice: <dfn>Lednička</dfn> se obvykle používá k chlazení potravin.</p>
Používá se k označení počítačového nebo programového kódu.
<p>Odkaz se v (X)HTML vytváří pomocí elementu <code>a</code>.</p>
Vyznačuje vzorový výstup programů, skriptů apod.
Označuje proměnnou, její vzorovou hodnotu apod.
Indikuje text, který má být zadán uživatelem.
<p>Do následujícího pole vložte svůj <kbd>rok narození</kbd>.</p>
Velikost textu bude o jednu úroveň větší než okolní text.
Velikost textu bude o jednu úroveň menší než okolní text.
Všechny znaky písma jsou stejně široké (napodobení psacího stroje nebo dálnopisu).
Viz Kontejnery
Příloha | Velikost |
---|---|
elementy-radkove.html | 6.07 KB |
Některé elementy jsou nahrazovány jinými objekty.
Jedná se např. o elementy <img>, <audio>, <video>, <canvas> atd.
Elementy <del>
a <ins>
se používají v situacích, kdy je třeba návštěvníka informovat o změně obsahu dokumentu.
Oba elementy se mohou chovat jako blokové i řádkové, ale ne současně. Tzn. pokud vystupují jako řádkové (např. jsou obsaženy v elementu <p>
), nemohou obsahovat blokové elementy, jako jsou odstavce nebo nadpisy.
<p>Kurz bude zahájen <del cite="duvod-zmeny.html" datetime="2010-04-17T01:09:03+1:00"> 19. 9. 2010</del><ins>20. 9. 2010</ins>.</p>
<del> <p>Kurz bude zahájen: 19. 9. 2010</p> </del> <ins> <p>Kurz bude zahájen: 20. 9. 2010</p> </ins>
Oběma elementům je možné přiřadit atribut cite
, který by měl obsahovat URL dokumentu, který vysvětluje důvod změny a atribut datetime
obsahující specifikuje datum a čas změny (ISO formát). Důvod změny může být obsažen v atributu title
.
Bývá zobrazen přeškrtnutý.
Bývá zobrazen kurzivou.
<p> Mezery a→ → tabulátory </p>
<p>Mezery a→ → tabulátory</p>
<p> Mezery a → → tabulátory </p>
Toto chování umožňuje udržet „pořádek“ v kódu dokumentu.
<pre> Předformátovaný text s mezerami → → tabulátory a s odřádkováním </pre>
Prohlížeč (interpret) rozděluje dlouhé texty na řádky v místech, kde jsou mezery (dělení slov neumí).
<p>Jednoslabičné předložky a spojky na koncích rádků je vhodné spojovat s následujícím slovem.</p>
Příklad nového řádku v XHTML:
<address> Jméno a příjmení<br /> Ulice<br /> Město<br /> PSČ </address>
Přídlad nového řádku v HTML:
<address> Jméno a příjmení<br> Ulice<br> Město<br> PSČ </address>
Poznámka:
U hodnot atributů nepoužívejte zlom (konec) řádků z důvodu různého chování prohlížečů.
Příloha | Velikost |
---|---|
bile-znaky.html | 1.4 KB |
Příklad použití jiného jazyka uvnitř HTML dokumentu
<p lang="en">English language</p>
Příklad použití jiného jazyka uvnitř XHTML dokumentu
<p xml:lang="en" lang="en">English language</p>
<div id="header"> <h1>Nadpis první urovně</h1> </div>
<div id="content"> <p>První odstavec textu</p> <p>Druhý odstavec textu</p> <p>Třetí odstavec textu</p> </div>
<div id="footer"> <p>SkPoVzd/OIT VAV</p> </div>
Příklad použití jiného jazyka uvnitř HTML dokumentu:
<p><span lang="en">Copyright</span> SkPoVzd/OIT VAV</p>
Příklad použití jiného jazyka uvnitř XHTML dokumentu:
<p><span xml:lang="en" lang="en">Copyright</span> SkPoVzd/OIT VAV</p>
Příloha | Velikost |
---|---|
kontejnery.html | 1.05 KB |
Výčet zdůrazňuje rovnocennost položek.
Element <ul> ohraničuje obsah seznamu. Jednotlivé položky <li> mohou obsahovat:
<ul> <li>jedna položka</li> <li>druhá položka</li> <li>třetí položka</li> </ul>
Výčet zdůrazňuje rovnocennost a pořadí položek.
Element <ol> ohraničuje obsah seznamu. Jednotlivé položky <li> mohou obsahovat:
<ol> <li>první položka</li> <li>druhá položka</li> <li>třetí položka</li> </ol>
Nastavení počátku a hodnoty číslování:
<ol start="4"> <li>čtvrtá položka</li> <li>pátá položka</li> <li value="2">druhá položka</li> </ol>
Definice je možné použít k vysvětlení pojmů, nebo několik podobných témat – definice (témata) umístěte do elementů <dt> a vysvětlení do elementů <dd>.
Ohraničuje obsah seznamu.
Měla by být co možná nejkratší. Povolený obsah:
Povolený obsah:
<dl> <dt>první pojem</dt> <dd>vysvětlení prvního pojmu</dd> <dt>druhý pojem</dt> <dd>vysvětlení druhého pojmu</dd> <dd>jiné vysvětlení druhého pojmu</dd> </dl>
Kombinace seznamů:
<ul> <li>text ... <ol> <li>text ... </li> <li>text ... </li> </ol> </li> <li>text ... </li> </ul>
Kombinace definic a seznamů:
<dl> <dt>první pojem</dt> <dd>vysvětlení ... <ul> <li>text ... </li> <li>text ... </li> </ul> </dd> <dt>druhý pojem</dt> <dd>vysvětlení ...</dd> </dl>
Doporučení:
Delší texty rozdělujte na kratší úseky pomocí nadpisů (h1 až h6), seznamů (ul, ol) a definic (dt) apod.
Příloha | Velikost |
---|---|
seznamy-definice.html | 1.77 KB |
Tabulka umožňuje prezentovat data „dvojrozměrně“ – uživatel může tato data vnímat jak v řádcích tak ve sloupcích. To je u mnoha typů dat vhodný a většinou nenahraditelný prostředek např. u programů, ceníků, srovnávání atd.
Z této „dvojrozměrnosti“ však vyplývají i nevýhody, tabulka musí být prezentována ve dvojrozměrném výstupu (obrazovce) a pokud možno celá najednou. Bohužel ne všechna zařízení pro práci s webem (např. čtečky obrazovky) mají tyto schopnosti. Proto je lepší použití tabulky nejprve zvážit, a pokud je data možné reprezentovat jinou formou (např. pomocí výčtu), použít tuto formu nebo ji alespoň nabídnout jako alternativu k tabulce.
Každá tabulka v (X)HTML je tvořena svým titulkem a samotnými daty. Ta se nacházejí v takzvaných buňkách. Každá buňka patří minimálně do jednoho řádku a jednoho sloupce. Řádky se mohou seskupovat do skupin řádků a sloupce do skupin sloupců.
Příklad jednoduché tabulky:
<table border="1" cellspacing="0" summary="Tabulka obsahuje
3 sloupce a 1 řádek a ukazuje možnosti zobrazení tabulek
u webových stránek.">
<caption>Jednoduchá tabulka</caption>
<tr>
<th>Hlavičková buňka</th>
<td>Datová buňka 1</td>
<td>Datová buňka 2</td>
</tr>
</table>
Povolený obsah:
Pomocí atributu summary vždy uvádějte popis tabulky tj. souhrn účelu a struktury tabulky pro nevizuální interprety.
Povolený obsah:
Povolený obsah:
Některé povolené atributy:
Poznámka:
Do prázdných buněk je vhodné vložit znakovou entitu nebo mezeru z důvodu zpětné kompatibility prohlížečů.
Příklad složitější tabulky:
<table border="1" cellspacing="0" summary="Tabulka obsahuje
6 sloupců a 10 řádků. V prvním řádku je uveden popis sloupců.
1. soupec obsahuje den, 2. pořádanou akci, 3. čas,
4. učastníky, 5. místo a 6. poznámky.">
<caption>Program na víkend</caption>
<colgroup class="den"><!-- nastaveni tridy pro prvni sloupec -->
<col />
</colgroup>
<colgroup class="akce"><!-- nastaveni tridy pro druhy az treti
sloupec -->
<col span="2" /><!-- nastaveni atributu zahrnuje 2 sloupce -->
</colgroup>
<thead>
<tr>
<th>Den</th>
<th>Akce</th>
<th>Čas [h]</th>
<th>Účast</th>
<th>Místo</th>
<th>Poznámky</th>
</tr>
</thead>
<tbody>
<tr>
<th rowspan="2">Pátek</th>
<td>Příjezd</td>
<td>do 19.00</td>
<td>Všichni</td>
<td>Hlavní vchod</td>
<td> </td>
</tr>
<tr>
<td>Ubytování</td>
<td>19.00–20.00</td>
<td>Všichni</td>
<td>Perníková chaloupka</td>
<td>Přezůvky nutné</td>
</tr>
<tr>
<th rowspan="4">Sobota</th>
<td>Snídaně</td>
<td>8.00–8.30</td>
<td>Všichni</td>
<td rowspan="2">Jídelna</td>
<td> </td>
</tr>
<tr>
<td>Oběd</td>
<td>12.00–13.00</td>
<td>Pouze zájemci</td>
<td>Vlastní příbor</td>
</tr>
<tr>
<td>Svačina</td>
<td>15.00–15.30</td>
<td>Muži</td>
<td>Ovocný sad</td>
<td>Vlastní žebřík</td>
</tr>
<tr>
<td>Večeře</td>
<td>18.00–19.00</td>
<td>Do hmotnosti 80 kg</td>
<td>Palouček před jídelnou</td>
<td>Vlastní deka nutná</td>
</tr>
<tr>
<th rowspan="3">Neděle</th>
<td>Snídaně</td>
<td>8.00–8.30</td>
<td>Všichni</td>
<td rowspan="2">Jídelna</td>
<td> </td>
</tr>
<tr>
<td>Oběd</td>
<td>12.00–13.00</td>
<td>Pouze zájemci</td>
<td>Vlastní příbor</td>
</tr>
<tr>
<td>Odjezd</td>
<td>13.00</td>
<td>Všichni</td>
<td>Hlavní parkoviště</td>
<td> </td>
</tr>
</tbody>
</table>
Alternativní způsob zobrazení složitější tabulky:
<h3>Program na víkend</h3> <h4>Pátek</h4> <ul> <li>Příjezd <ul> <li><strong>Čas:</strong> do 19.00 h</li> <li><strong>Účast:</strong> Všichni</li> <li><strong>Místo:</strong> Hlavní vchod</li> </ul> </li> <li>Ubytování <ul> <li><strong>Čas:</strong> 19.00–20.00 h</li> <li><strong>Účast:</strong> Všichni</li> <li><strong>Místo:</strong> Perníková chaloupka</li> <li><strong>Poznámka:</strong> Přezůvky nutné</li> </ul> </li> </ul> <h4>Sobota</h4> <ul> <li>Snídaně <ul> <li><strong>Čas:</strong> 8.00–8.30 h</li> <li><strong>Účast:</strong> Všichni</li> <li><strong>Místo:</strong> Jídelna</li> </ul> </li> <li>Oběd <ul> <li><strong>Čas:</strong> 12.00–13.00 h</li> <li><strong>Účast:</strong> Pouze zájemci</li> <li><strong>Místo:</strong> Jídelna</li> <li><strong>Poznámka:</strong> Vlastní příbor</li> </ul> </li> <li>Svačina <ul> <li><strong>Čas:</strong> 15.00–15.30 h</li> <li><strong>Účast:</strong> Muži</li> <li><strong>Místo:</strong> Ovocný sad</li> <li><strong>Poznámka:</strong> Vlastní žebřík</li> </ul> </li> <li>Večeře <ul> <li><strong>Čas:</strong> 18.00–19.00 h</li> <li><strong>Účast:</strong> Do hmotnosti 80 kg</li> <li><strong>Místo:</strong> Palouček před jídelnou</li> <li><strong>Poznámka:</strong> Vlastní deka nutná</li> </ul> </li> </ul> <h4>Neděle</h4> <ul> <li>Snídaně <ul> <li><strong>Čas:</strong> 8.00–8.30 h</li> <li><strong>Účast:</strong> Všichni</li> <li><strong>Místo:</strong> Jídelna</li> </ul> </li> <li>Oběd <ul> <li><strong>Čas:</strong> 12.00–13.00 h</li> <li><strong>Účast:</strong> Pouze zájemci</li> <li><strong>Místo:</strong> Jídelna</li> <li><strong>Poznámka:</strong> Vlastní příbor</li> </ul> </li> <li>Odjezd <ul> <li><strong>Čas:</strong> 13.00 h</li> <li><strong>Účast:</strong> Všichni</li> <li><strong>Místo:</strong> Hlavní parkoviště</li> </ul> </li> </ul>
Příloha | Velikost |
---|---|
tabulka.html | 6.29 KB |
Element <img> slouží ke vkládání obrázků, které nesou v dokumentu nějakou informační hodnotu.
Nepoužívejte tento element pro vkládání dekorativních obrázků (odrážky, oddělovací čáry, zakulacené rohy atd.) K těmto účelům slouží styly.
Poznámky:
Povinný atribut určující URI adresu obrázku (umístění a název).
Atribut alt obsahuje alternativní textovou verzi (popis) obrázku.
Uživatel by měl mít přístup ke všem informacím (X)HTML dokumentu. Pokud interpret nemůže zpřístupnit objekt vložený do webové stránky, měl by uživateli nabídnout jeho alternativní textovou verzi.
Textový formát je přístupný všem zařízením (počítač, PDA, telefon, prohlížeč pro nevidomé atd.). Bez uvedení alternativní textové verze omezujete přístupnost svých dokumentů na úzkou skupinu zařízení, která umí zacházet s Vámi poskytovaným objektem.
V žádném případě nepoužívejte nicneříkající texty jako např. „obrázek“, „nic“, „Všimněte si krásných barev loga“ apod. (uvedené texty neinformují uživatele o obsahu obrázku).
<p>
<img width="136" height="200" src="images/logo-vav.jpg"
alt="Logo Velitelství výcviku – Vojenské akademie"
title="Logo Velitelství výcviku – Vojenské akademie"
longdesc="popis/vyznam-symbolu.html" />
<a href="popis/vyznam-symbolu.html" title="Popis jednotlivých
symbolů loga Logo Velitelství výcviku – Vojenské
akademie">[popis]</a>
</p>
Vizuální prohlížeče zobrazí obsah tohoto atributu u kurzoru myši jako popisný text v okamžiku kdy uživatel přesune myš na daný element.
Použití:
Alternativní informace k obrázku, pokud nestačí atribut alt.
Příloha | Velikost |
---|---|
obrazek.zip | 20.58 KB |
Obrázkové mapy umožňují pomyslně rozdělit objekt (obrázek) na oblasti, kterým lze přiřadit nějakou akci, např. přechod na jinou stránku nebo spuštění skriptu.
<p> <img src="files/images/organizacni-diagram-oit.png" height="118" width="470" usemap="#map" alt="Organizační diagram OIT" title="Organizační diagram Odboru informačních technologií" /> <map id="map" name="map"> <area href="#OdDS" shape="rect" coords="5,82,78,115" title="Oddělení datových sítí" alt="OdDS" /> <area href="#OdProIS" shape="rect" coords="82,82,155,114" title="Oddělení provozu informačních systémů" alt="OdProIS" /> <area href="#OdUPod" shape="rect" coords="160,82,233,114" title="Oddělení uživatelské podpory" alt="OdUPod" /> <area href="#OdKnSl" shape="rect" coords="237,82,311,114" title="Oddělení knihovnických služeb" alt="OdKnSl" /> <area href="#OdMT" shape="rect" coords="314,82,387,113" title="Oddělení multimediální tvorby" alt="OdMT" /> <area href="#VydOd" shape="rect" coords="392,82,465,114" title="Vydavatelské oddělení" alt="VydOd" /> </map> </p>
<object data="files/images/organizacni-diagram-oit.png" height="118" width="470" type="image/png" usemap="#map1" title="Organizační diagram Odboru informačních technologií" /> <map id="map1" name="map1"> <p> <a href="#OdDS" shape="rect" coords="5,82,78,115" title="Oddělení datových sítí">OdDS</a> | <a href="#OdProIS" shape="rect" coords="82,82,155,114" title="Oddělení provozu informačních systémů">OdProIS</a> | <a href="#OdUPod" shape="rect" coords="160,82,233,114" title="Oddělení uživatelské podpory">OdUPod</a> | <a href="#OdKnSl" shape="rect" coords="237,82,311,114" title="Oddělení knihovnických služeb">OdKnSl</a> | <a href="#OdMT" shape="rect" coords="314,82,387,113" title="Oddělení multimediální tvorby">OdMT</a> | <a href="#VydOd" shape="rect" coords="392,82,465,114" title="Vydavatelské oddělení">VydOd</a> </p> </map> </object>
Vzhled v IE7- je možné upravit pomocí JavaScriptu.
Strukturální elementy (header, nav, main, section, article, aside, footer) vytváří strukturu dokumentu tj. člení dokument na jednotlivé celky.
Sémantické elementy - popisují povahu obsahu elementu:
Z přiložených dat vytvořte webovou prezentaci.
Příloha | Velikost |
---|---|
data-iro.zip | 110.7 KB |
Z přiložených dat vytvořte webovou fotogalerii.
Příloha | Velikost |
---|---|
data-fotogalerie.zip | 2.25 MB |
V češtině bychom správně měli rozlišovat pevnou mezeru non-breaking space (patří za jednoslabičné přeložky) a tenkou mezeru thin space (používá se mezi číslem a jednotkou, titulem a jménem, v telefonních číslech atd.) viz znakové entity. Bohužel ne všechny prohlížeče interpretují tenkou mezeru jako nerozdělitelnou.
Základní zásady:
×
)–
a spojovníky (-)
„
a horní 66 “
) a anglické "rovné"Bližší informace:
Kaskádové styly (Cascading Style Sheets) umožňují formátovat (X)HTML či XML dokumenty.
Ukázky možností CSS:
Kaskádové styly představují pravidla, kterými říkáme:
{}
:
);
Níže uvedené pravidlo se aplikuje na nadpis 1. úrovně, kterému nastaví modrou barvu.
Předpokladem pro tvorbu kaskádových stylů je správně strukturovaný dokument (X)HTML či XML:
Výsledný dokument by měl být přehledný. Začínat nejdůležitějšími informacemi a postupovat k méně důležitým.
Způsob jakým se stránka zobrazí na výstupním zařízení (počítač , tiskárna, hlasový výstup atd.) je možné definovat:
Slouží k definici stylu elementu ve kterém je definován.
Pokud se rozhodnete u elementů používat tyto atributy, je nutné v hlavičce dokumentu definovat typ stylového jazyka.
... <meta http-equiv="content-style-type" content="text/css" /> </head> <body> ... <h2 style="color: red;">Červený nadpis</h2> <p style="color: blue;">Modrý text odstavce</p> ...
Poznámka: V případě HTML dokumentu element meta na konci lomítko nemá.
Uzavřením stylu do komentáře znepřístupníme styly pro prohlížeče, které kaskádové styly (CSS) ještě neznají (CSS je podporováno až od HTML 3.2).
... <style type="text/css"> <!-- h2 {color: red;} p {color: blue;} --> </style> </head> <body> ... <h2>Červený nadpis</h2> <p>Modrý text odstavce</p> ...
V samotném obsahu elementu nejsou rozeznávány znakové entity.
Uzavřením stylu mezi <![CDATA[ a ]]> zajistíte rozeznávání znakových entit. Protože se ale nejedná o prvky stylu je vhodné je uzavřít do komentářů daného stylového jazyka.
... <style type="text/css"> /* <![CDATA[ */ h2 {color: red;} p {color: blue;} /* ]]> */ </style> </head> <body> ... <h2>Červený nadpis</h2> <p>Modrý text odstavce</p> ...
... <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> ... <h2>Červený nadpis</h2> <p>Modrý text odstavce</p> ...
Připojený soubor style.css obsahuje:
h2 {color: red;} p {color: blue;}
Pravidlo @import je doporučeno uvádět v CSS vždy jako první.
... <style type="text/css"> <!-- @import url("style.css"); h2 {color: red;} p {color: blue;} --> </style> </head> <body> ... <h2>Červený nadpis</h2> <p>Modrý text odstavce</p> ...
... <style type="text/css"> /* <![CDATA[ */ @import url("style.css") h2 {color: red;} p {color: blue;} /* ]]> */ </style> </head> <body> ... <h2>Červený nadpis</h2> <p>Modrý text odstavce</p> ...
Příklad pravidla @import v externím CSS souboru:
@import url("style.css") h2 {color: red;} p {color: blue;}
Doporučení:
Způsob | Podpora prohlížečů | Poznámka |
---|---|---|
<link> | všechny prohlížeče | |
<style> | IE 5.5 nerespektuje atribut media | |
@import url("ie4.css") | dodatky pro IE4 | odřízne NN4 |
@import "moderni_prohlizece.css" | moderní prohlížeče (od IE5+, NN6/Moz, Opera) | odřízne IE4 |
NN4 a IE4 z kaskádových stylů spolehlivě podporují pouze styl a barvu písma.
Příloha | Velikost |
---|---|
prideleni-stylu.zip | 1.04 KB |
CSS dokáží rozlišovat výstupní zařízení (médium).
<style type="text/css" media="screen, projection">
@import url("style.css") screen, projection
<link rel="stylesheet" type="text/css" href="style.css" media="screen, projection" />
Je možné použít v jakémkoli typu zápisu (jak v atributu style, v elementu <style>, tak i v externím CSS souboru).
@media screen, projection {
h2 {color: red;} p {color: blue;} }
<link rel="stylesheet" type="text/css" media="screen and (min-width: 960px), projection and (min-width: 960px)" href="screen-projection-960.css" />
@media screen and (min-width: 960px), projection and (min-width: 980px) { …STYLES… }
stylesheets[screen and (min-width: 480px) and (max-width: 760px)][] = design/screen-480-760.css stylesheets[screen and (min-width: 960px)][] = design/screen-960.css
Nativní podpora: IE9+, Firefox 3.5+, Safari 3+, Chrome, Opera 7+, iOS Safari 3.2+, Opera Mini 5+, Opera Mobile 10+, Android Browser 2.1+
Device | CSS px | Actual px | Device pixel ratio | dpi |
---|---|---|---|---|
iPhone 2,3 | 320x480 | 320x480 | 1 | |
iPhone 4 | 320x480 | 640x960 | 2 | 192 |
iPhone 5 | 320x568 | 640x1136 | 2 | 192 |
iPad mini, 1, 2 | 768x1024 | 768x1024 | 1 | |
iPad 3, 4 | 768x1024 | 1536x2048 | 2 | 192 |
Android 2.3 | 1.5 | 144 | ||
Android 4.1 | 2 | 192 | ||
Windows 8 Phone | ||||
Interenet Explorer on Windows Phone 8 | 96 ??? | |||
Opera Mini | ||||
Firefox OS | ||||
Firefox for Mobile (Fennec) | ||||
Google Nexus 7 | 1.3 | 124.8 | ||
Playbook |
Příklad Media Queries pro Tablet:
@media (min-width: 44em) { /* ...STYLES... */}
Příklad Media Queries pro Tablet s Retina displejem:
@media (min-width: 44em) and (-webkit-min-device-pixel-ratio: 1.25), (min-width: 44em) and (min-resolution: 120dpi) { /* ...STYLES... */}
@media (min-width: 44em) and (-webkit-min-device-pixel-ratio: 1.3), (min-width: 44em) and (min-resolution: 124.8dpi) { /* ...STYLES... */}
@media (min-width: 44em) and (-webkit-min-device-pixel-ratio: 1.5), (min-width: 44em) and (min-resolution: 144dpi) { /* ...STYLES... */}
@media (min-width: 44em) and (-webkit-min-device-pixel-ratio: 2), (min-width: 44em) and (min-resolution: 192dpi) { /* ...STYLES... */}
Smartphone | Tablet | Desktop | TV | ||||
---|---|---|---|---|---|---|---|
Rozlišení zařízení (velikost okna aplikace) [px] | 320x480 portrait | 480x320 landscape | 768x1024 portait | 1024x768 landscape | 1280x960(1024) | 1680 | 3456 |
Bod zlomu (break point) | 320 | 480 | 650, 700, 704, 740, 767, 768 | 979, 980, 1024 | 1025, 1120, 1200, 1220 | 3456 | |
Maximální šířka objektu (při 10px okraji) | 300 | 460 | 720 | 960 | 1200 | 3436 | |
Šířka sloupce při gridu 12 (max. šířka/12) | (320) | (480) | 60 | 80 | 100 | ||
Téma Omega 3 | global | global | >=740 (narrow) |
740-840 (narrow landscape) >=980 (normal) =1024 (normal landscape) |
>=1220 | ||
Téma Omega 4 | >=44em (16px * 44em ~ 704px) |
>=70em (16px * 70em ~ 1120px) |
|||||
Téma AdaptiveTheme | <=320 | 321-480 | 481-768 | 796-1024 | >=1025 | ||
Bootstrap | <=480 | <=767 | 768-979 | >=1200 | |||
Foundation | |||||||
templatemonster.com | 320 | 480 | 768 | 980 |
Podporu je možné rozšířit pomocí JavaScript knihovny css3-mediaqueries.js i na IE 5+, Firefox 1+ and Safari 2 (umožňuje navíc i podporu průhlednosti u PNG obrázků).
Poznámky:
Pro rychlé vytvoření responzivního rozvržení je možné použít generátory nebo využít některého z frameworků např.:
Mé požadavky:
Zajímavé zdroje informací:
Techniky vytváření vzhledu:
CSS:
Optimalizace:
Pro sjednocení vzhledu (vykreslení) všech prvků napříč moderními prohlížeči je vhodné použít normalize.css (pro zastaralé prohlížeče je nutné použít dnes již "zavržený" reset.css).
Normalize.css:
Většina mobilní prohlížečů přizpůsobí stránku (pomocí změny měřítka "scale") tak, aby se celá vešla na obrazovku (=>téměř nečitelný text). Pro zamezení tohoto chování je tedy třeba do hlavičky vložit níže uvedený meta tag (umožňuje změnu šířky při natočení):
<meta name="viewport" content="width=device-width, initial-scale=1">
Více viz např. developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag
Tip: Alternativou k výše uvedeném tagu muže být CSS @viewport
Pružné (flexibilní) obrázky a multimédia:
img, embed, object, video { display: block; /* IE (display: block; | width: auto; | width: 100%;) */ max-width: 100%; height: auto; vertical-align: top; /* optional */ -ms-interpolation-mode: bicubic; }
Tip: Responsive images – how to prevent reflow
Responzivní tabulky
<script> $(function () { $('.footable').footable({ breakpoints: { phone: 749, tablet: 969 } }); }); </script>
<script> $(function () { $('.footable').footable({ breakpoints: { phone: 749, tablet: 969 } }).bind({ 'footable_breakpoint' : function(e) { console.log(e.breakpoint); } }); }); </script>
U mobilních telefonů je možné zakázat funkci automatického zvětšení písma, ovšem sníží se tím čitelnost textu:
html { /*-webkit-text-size-adjust: none;*/ }
Dostatečná velikost aktivního prvku (položka navigace, tlačítko, formulářový prvek atd.):
Základní HTML5 struktura (layout) stránky:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>HTML 5 dokument</title> <meta name="description" content="Základní šablona HTML 5 dokumentu" /> <meta name="keywords" content="html,dokument,šablona" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <header id="header"> <p>Site Name</p> </header> <nav> <ul id="main-nav"> <li><a href="#">Home</a></li> </ul> </nav> <main> <h1>Page Title</h1> <section> <h2>Section Title <article class="post"> <h3>Atricle Title ... </article> </section> <section> <h2>Section Title <article class="post"> <h3>Atricle Title ... </article> </section> </main> <aside id="sidebar"> <section class="block"> ... </section> </aside> <footer id="footer"> ... </footer> </body> <html>
Element main byl přidán až v HTML5.1:
main {display: block;}
<script>document.createElement('main');</script>
V HTML5 je možné vynechat atribut type:
Tipy: Vyhněte se nejobvyklejším chybám v HTML5
Využijte výhod validních podmíněných komentářů (IE Conditional Stylesheets vs CSS Hacks) přímo pro element <html>:
<!--[if IEMobile 7]><html class="ie iem7"><![endif]--> <!--[if lte IE 6]><html class="ie lt-ie9 lt-ie8 lt-ie7"><![endif]--> <!--[if (IE 7)&(!IEMobile)]><html class="ie lt-ie9 lt-ie8"><![endif]--> <!--[if IE 8]><html class="ie lt-ie9"><![endif]--> <!--[if (gte IE 9)|(gt IEMobile 7)]><html class="ie"><![endif]--> <!--[if !IE]><!--><html><!--<![endif]-->
IE8- můžete nechat v jednosloupcovém "mobilním" vzhledu viz Leaving Old Internet Explorer Behind nebo podporu Media Queries zpřístupníte pomocí JavaScriptu.
X-UA-Compatible zpřístupňuje poslední dostupný Internet Explorer mód:
<meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1" />
<!--[if lte IE 9]> <meta http-equiv="x-ua-compatible" content="ie=edge" /> <![endif]-->
Pro podporu media queries v IE8- je třeba použít media-queries.js (nabízí více možností ovšem na úkor výkonu) nebo respond.js:
<!--[if lt IE 9]> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]-->
Pro podporu nových HTML5 prvků (header, nav, article, aside, section, footer atd.) v IE8- je nutné k dokumentu připojit html5shiv (pouze pro IE8-) nebo Modernizr (nabízí více možností):
<!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <![endif]-->
Tipy:
Selektory určují prvky, pro které má definice platit.
Vybírá libovolný element (všechny elementy v dané hierarchii).
Příklad CSS:
* { color: blue; }
Vybírá element podle typu.
Část zdrojového kódu:
<p>text odstavece</p>
Příklad CSS:
p { color: blue; }
Vybere element označený definovanou třídou.
Část zdrojového kódu:
<p class="odstavec">text odstavece</p> <p class="poznamka">text poznámky</p> <div class="poznamka">text poznámky</div>
Příklad CSS:
.odstavec { color: blue; } .poznamka { color: red; } div.poznamka { border: 1px solid red; padding: 2px; }
Na stránce může být libovolné množství prvků se stejnou třídou.
Tip: An ultimate guide to CSS pseudo classes and pseudo elements
Příklad použití CSS na všechny nenavštívené odkazy:
a:link { color: #039; }
Příklad použití CSS na všechny navštívené odkazy:
a:visited { color: #930; }
Příklad použití dynamického CSS aktivované ve chvíli, kdy uživatel na odkaz najede kurzorem myši (:hover používejte až za :link a :visited):
a:hover { color: #f30; text-decoration: underline; }
Příklad použití dynamického CSS aktivované prvku, který je připraven pro příjem vstupu ze vstupního zařízeni např. na který je právě kliknuto myší, stisknuta klávesa Enter nebo mezerník (:active používejte až za :link, :visited a :hover):
a:active { color: #f30; text-decoration: underline; }
Příklad použití dynamického CSS při výběru odkazu, tlačítka, výběrovného seznamu a dalších formulářových prvnků uživatelem např. pomocí klávesnice:
a:focus {background: yellow;} a:focus:hover {background: white;}
První podřízený prvek jiného prvku:
p:first-child {text-indent: 2em;} p:first-child em {font-weight: bold;}
První, druhá, předposlední a poslední buňka tabulky:
td:first-child {width: 20%;} td:nth-child(2) {width: 60%;} td:nth-last-child(2) {width: 40%;} td:last-child {width: 20%;}
Každá třetí řádek "counter" (3n) – pozor počátek je nula, proto je posun "offset" nastaven na jedničku (+1):
tr:nth-child(3n+1) { background-color: #eee; }
Příklad různého nastavení dvojice uvozovek pro celý dokument a atribut prvku <cite> v jazyce čeština a angličtina:
:lang(cs) {quotes: '„' '“' "‚" "‘"} :lang(en) {quotes: '“' '”' "‘" "’"}
cite[lang="cs"] {quotes: '„' '“' "‚" "‘"} cite[lang="en"] {quotes: '“' '”' "‘" "’"}
CSS3 od sebe označením odlišuje pseudo-třídy, které používají jednu dvojtečku :
a pseudo-elementy u kterých se používá "dvojitá dvojtečka" ::
(v CSS2 se u všech pseudo prvků používá dvojtečka jednoduchá).
IE8 podporuje pouze CSS2, od IE9+ je již plná podpora CSS3 pseudo prvků.
Příklad prvního řádku odstavce:
p:first-line {text-transform: uppercase;}
Příklad použití CSS na první písmeno odstavce (vybere pouze část skutečného elementu):
p:first-letter { font-size: 300%; font-weight: bold; float: left; margin-right: .1em; }
Vlastnost content umožňuje vkládat textový obsah a je možné ji používat ve spojení s pseudo-elementy :before a :after. Vlastnost content není možné aplikovat na "neobsahové" elementy jako je např. <input>, <select>, <img> atd.
Příklad uvozovek definovaných na úrovni odstavce a zároveň kolem něj vložených „prázdných“ uvozovek:
p {quotes: '„' '“' "‚" "‘"} p:before {content: no-open-quote} p:after {content: no-close-quote} cite:before {content: open-quote} cite:after {content: close-quote}
Příklad přidání nového obsahu "mezery a šipky" za prvek třídy .slideshow-next:
.slideshow-next { position: reletive } .slideshow-next:after { content: ' >'; display: block; position: absolute; top: 0; right: 0; width: 40px; height: 40px; background: url('design.png') no-repeat -100px 6px; }
Vybere element označený definovaným identifikátorem.
Část zdrojového kódu:
<div id="zahlavi">Záhlaví</div>
Příklad CSS:
#zahlavi { color: green; }
V jednom dokumentu (stránce) je možné id přiřadit pouze jedinému prvku.
Vybere element následníka, jež je vnořen do elementu předka bez ohledu na hloubku vnoření.
Část zdrojového kódu:
<div> <img src="logo.gif" alt="Logo" /> <p> Podrobnosti viz <a href="#">statistika přístupnosti <img src="stat.gif" alt="Statistika" /></a>. </p> </div>
Příklad CSS:
div img { border: none; }
Vybere element potomka, jež je vnořen přímo do elementu rodiče.
Část zdrojového kódu:
<div> <img src="logo.gif" alt="Logo" /> <p> Podrobnosti viz <a href="#">statistika přístupnosti <img src="stat.gif" alt="Statistika" /></a>. </p> </div>
Příklad CSS:
div > img { border: none; }
Poznámky:
Vybere druhý definovaný element, který je sourozencem prvně definovaného elementu. Oba sourozenci musí mít stejného rodiče, musí ležet na stejné úrovni v hierarchii dokumentu, ale nemusí ležet bezprostředně za sebou.
Část zdrojového kódu:
<body> <h1>Nadpis</h1> <p>První odstavec</p> <p>Druhý odstavec</p> <h2>Nadpis 2. úrovně</h2> <p>Druhý odstavec</p> <p>Druhý odstavec</p> <h3>Nadpis 3. úrovně</h3> <p>Druhý odstavec</p> <p>Druhý odstavec</p> </body>
Příklad CSS:
h2 ~ p { color: blue; }
V tomto příkladě se deklarovaná vlastnost odstavce nepoužije dříve, než u nadpisu 2. úrovně.
Poznámky:
Vybere druhý definovaný element, který je sourozencem prvně definovaného elementu. Oba sourozenci musí mít stejného rodiče, musí ležet na stejné úrovni v hierarchii dokumentu a musí ležet bezprostředně za sebou.
Část zdrojového kódu:
<body> <h1>Nadpis</h1> <p>První odstavec</p> <p>Druhý odstavec</p> <h2>Nadpis 2. úrovně</h2> <p>Druhý odstavec</p> <p>Druhý odstavec</p> <h3>Nadpis 3. úrovně</h3> <p>Druhý odstavec</p> <p>Druhý odstavec</p> </body>
Příklad CSS:
h2 + p { color: blue; }
Poznámky:
Vybere element, obsahující definovaný atribut, hodnotu atributu, nebo jeho část.
Příklad použití CSS pouze na elementy a
obsahující atribut title
s hodnotou odkaz
:
a[title="odkaz"] { color: blue; }
Příklad použití CSS pouze na elementy span
obsahující atribut lang
, jehož hodnoty začínají řetězcem en
(en-us, en-uk):
span[lang|="en"] { color: blue; }
Příklad použití CSS pouze na elementy p
obsahující atribut class
, jehož hodnota obsahuje řetězec nadpis
(nadpis1, nadpis2, ale i podnadpis):
p[class*="nadpis"] { color: blue; }
Příklad použití CSS pouze na elementy p
obsahující atribut class
, jehož hodnota začíná řetězcem nadpis
(nadpis1, nadpis2):
p[class^="nadpis"] { color: blue; }
Příklad použití CSS pouze na elementy p
obsahující atribut class
, jehož hodnota končí řetězcem pis
(nadpis, podnadpis):
p[class$="pis"] { color: blue; }
Poznámky:
Jednoduchá deklarace přiřazuje vlastnosti jednomu selektoru.
h1 { color: blue; }
Vícenásobná deklarace přiřazuje vlastnosti více selektorům odděleným čárkou.
h1, h2, h3, h4, h5, h6 { color: blue; }
Prohlížeče komentáře ignorují. Komentáře slouží pouze autorovi k zapsání poznámek např. k lepší orientaci v kódu.
/* odstavec */ p { color: blue; /* modra barva */ font-size: 90%; /* velikost textu */ }
Poznámka:
Komentáře je vhodné psát bez diakritiky.
Příklad CSS:
div { margin: 1.5em 5% -10px 0; }
body {font-size: 10px;} h1 {font-size: 240%;} /* =24px */
body {font-size: 10px; /* font-size: 62.5%; */} h1 {font-size: 2.4em;} /* =24px */ p {font-size: 1.4em;} /* =14px */ li {font-size: 1.4em;} /* =14px??? */ li li, li p /* etc */ {font-size: 1em;}
Poznámky:
html {font-size: 10px; font-family: sans-serif; /* font-size: 62.5%; */} body { font-size: 16px; /* IE8 */ font-size: 1.6rem; /* =16px, =12pt */ } h1 { font-size: 24px; font-size: 2.4rem; /* =24px */ }
Poznámka: vzhledem k různým rozlišením obrazovky funguje spolehlivě snad jen při tisku.
Poznámka: vzhledem k různým rozlišením obrazovky funguje spolehlivě snad jen při tisku.
Poznámka: vzhledem k různým rozlišením obrazovky funguje spolehlivě snad jen při tisku.
Poznámka: vzhledem k různým rozlišením obrazovky funguje spolehlivě snad jen při tisku.
Definuje barvu pomocí klíčového slova:
Příklad CSS: p {color: blue;}
Definuje barvu pomocí odstínu červené, zelené a modré tzv. RGB (Red Green Blue) syntaxe.
Příklad CSS (různé zápisy barvy blue):
p {color: #00f;} /* #00F */ p {color: #0000ff;} /* #0000FF #0000fF #0000Ff */ p {color: rgb(0, 0, 255);} p {color: rgb(0, 0, 100%);}
Při definování stylů může dojít k situaci, kdy jeden element může mít definovanou vlastnost různými způsoby, nebo na více místech. V tomto případě je třeba rozhodnout, kterou deklaraci, styl nebo zdroj stylů použít.
Priority definic:
Při existenci více zdrojů stylů stejné důležitosti rozhoduje o tom který styl se použije kaskáda.
<p style="color: blue;">
... <style type="text/css">
<!--
p {color: blue;}
-->
</style> </head> <body> ...
... <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> ...
Určuje váhu selektoru. Selektor s vyšší váhou (silnější) přepíše deklarace stejných vlastností u selektoru s nižší váhou (slabší).
<p style="color: blue;">
#header {color: blue;} /* zahlavi */
.note {font-size: 80%;} /* poznamka */ a:hover {text-decoration: underline;} a[href]:after {content: " [" attr(href) "] ";}
p {color: blue;} p:first-letter {font-weight: bold; font-size: 130%;}
* {color: blue;}
Jednotlivé úrovně specifičnosti se sčítají a vyhrává ten nejsilnější.
Příklad výpočtu:
Selektor #header ul li.note p:first-letter a:hover {color: red;}
má specifičnost: 0125.
V případě shody pravidel vyhrává to, které je uvedeno později.
Umožňuje upřednostnit deklaraci v případě konfliktu s jinými deklaracemi bez tohoto pravidla.
V případě střetu pravidla !important v uživatelské šabloně a pravidla !important ve stylu dokumentu, vyhraje uživatelská šablona.
a { text-decoration: underline; !important }
Jedná se o poslední možné řešení, běžné CSS se bez tohoto pravidla většinou obejdou.
Elementy jsou v dokumentu uspořádány ve stromové struktuře. Elementy mohou dědit hodnoty vlastností od svého nadřazeného elementu a to i po více generací. V (X)HTML je nejvyšší element html, do něj jsou vnořeny elementy head a body, do body je vnořen element h1 atd. Jedná se o pojmy následník a předchůdce. V případě přímého příbuzenství o pojmy rodič a potomek.
V CSS má každá vlastnost určeno, zda je dědičná nebo ne. U vnořeného elementu je možné zdědění vlastnosti vynutit hodnotou inherit.
Příklad:
body { color: teal; /* vlastnost je dedicna */ border: 5px solid silver; /* vlastnost neni dedicna */ } h1 { border: inherit; /* vynuceni dedicnosti */ }
Poznámky:
U relativních jednotek (em, % atd.) a klíčových slov (large, small atd.) je třeba vypočítat jejich skutečnou hodnotu. Skutečné hodnoty se ještě dále upravují podle možností výstupních zařízení (násobky bodu obrazovky, barevné spektrum, možnosti tiskárny atd.).
Každá vlastnost má CSS specifikací určenu výchozí hodnotu, která se použije v případě, pokud není stanoveno jinak. U některých vlastností může výchozí hodnotu upřesnit prohlížeč.
Základní vlastnosti kaskádových stylů:
Umožňuje zkrácený zápis všech vlastností písma:
p {font: small-caps bold italic Arial 120%/1.5;}
Při použití sdružené definice jsou u neuvedených vlastností nastaveny výchozí hodnoty.
p {font: 90% bold;}
body, table { font-family: 'Arial CE', 'Helvetica CE', Arial, Helvetica, clean, sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: Georgia, 'Times New Roman CE', 'Times New CE', 'Times CE', 'Times New Roman', Times, serif; } pre, code { font-family: Profont, 'lucida console', 'Courier New CE', 'Courier CE', 'Courier New', Courier, Monaco, monospace; }
Více viz Font-Family.
h2 {font-size: 185%;}
p {line-height: 1.5;}
abbr {font-variant: small-caps;}
p {font-weight: normal;} strong {font-weight: bold;}
em {font-style: italic;}
body, table {color: purple;}
h1 {word-spacing: 1em;}
Nepodporuje IE5.5
h1 {letter-spacing: .3em;}
Určuje způsob zacházení s mezerami, tabulátory a konci řádků.
th {white-space: nowrap;}
h1 {text-align: center;} /* na stred */ p {text-align: justify;} /* do bloku */ cite {text-align: right;} /* vpravo */
Používá se pro vertikální zarovnání např. malého obrázku na vyšším řádku nebo v tabulkách.
.horni-index {vertical-align: super;} /* v tabulce jako baseline */ .dolni-index {vertical-align: sub;} /* v tabulce jako baseline */ .co-nejvyse {vertical-align: top;} .s-hornim-okrajem-textu {vertical-align: text-top;} /* v tabulce jako baseline */ .doprostred {vertical-align: middle;} .s-dolnim-okrajem-textu {vertical-align: text-bottom;} /* v tabulce jako baseline */ .co-nejnize {vertical-align: bottom;}
IE5- podporuje pouze hodnoty baseline, sub a super.
a:hover {text-decoration: underline;} /* podtrzeno */ .ne {text-decoration: line-through;} /* preskrtnuto */ .reklama {text-decoration: blink;} /* blikajici */
IE7 nezná hodnotu blink.
p {text-indent: 2em;}
.kapitalky {text-transform: capitalize;} .mala {text-transform: lowercase;} .velka {text-transform: uppercase;}
.stin {text-shadow: 3px 3px 1px #999;} .embossed {text-shadow: 0 -1px 1px rgba(0,0,0,0.5);} h1 { color: #502a2d; letter-spacing: 0.75em; text-shadow: 2px 2px 0 #bab0a6, 2px -2px 0 #bab0a6, -2px 2px 0 #bab0a6, -2px -2px 0 #bab0a6, 9px 9px 0 #a63e3b; font-effect: outline; }
Podpora: Firefox 3.5, Gecko 1.9.1, Opera 9.5 Safari 1.1, WebKit 100, Konqueror 3.4, Chromium 2.0.158.0
Nepodporuje IE8-, (IE5.5 podporuje pouze filtry Shadow a DropShadow)
p {direction: rtl;}
p {unicode-bidi: bidi-override; direction: rtl;}
Tipy pro češtinu:
Font Squirrel umožňuje aplikovat zvolený font písma nezávisle na fontech uživatelského operačního systému.
Výhody:
Postup:
font-family
..selector { -webkit-font-smoothing: antialiased; text-shadow: transparent 0px 1px 1px; }
Zdarma pouze obárzky ve formátu PNG.
Porovnání rychlosti načítání stránek s "online" a "offline" fontem:
Umožňuje zkrácený zápis všech vlastností pozadí:
body {background: #cf3 url(../images/pozadi.jpg) top left repeat-x;}
Při použití sdružené definice jsou u neuvedených vlastností nastaveny výchozí hodnoty.
p {background-color: #cf3;} #header p {background-color: transparent;}
body {background-image: url(../images/pozadi.jpg);} .zadny-obrazek {background-image: none;}
body { background: url(../images/pozadi.jpg) no-repeat; background-position: center bottom; /* osa x a osa y */ }
Ekvivalentní zápisy:
Pokud uvedete pouze jednu hodnotu, druhá se automaticky nastaví na střed:
V jedné deklaraci nepoužívejte současně textové a číselné hodnoty.
body { background-image: url(../images/pozadi.jpg); background-repeat: repeat-x; /* repeat-y, no-repeat, repeat */ }
body { background-image: url(../images/pozadi.jpg); background-attachment: fixed; }
IE6- umožňuje použít hodnotu fixed pouze pro element body.
body { background-image: url(../images/pozadi.jpg); background-size: cover; }
Vlastnost průhlednosti nastavená na 30 % je definovaná pro IE, FireFox a ostatní moderní prohlížeče (černá barva pozadí je nepovinná).
img { background-color: black; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; /* IE8+ */ filter: alpha(opacity=30); /* IE5+ (order 1. "-ms-filter", 2. "filter" work in IE8′s emulating IE7 mode too) */ opacity: 0.3; }
Dokumentace viz W3C gradients.
Generátory gradientů vám mohou ušetřit mnoho času (podpora prohlížečů). Některé generátory umožňují např. i převádět obrázky gradientů na CSS.
Podpora: FF3.6+, Chrome, Safari4+, Opera11.1
Příklad vertikálního přechodu dvou barev:
.gradient { background-color: #bada55; /* background color if gradients are not supported */ background-image: -moz-linear-gradient(top, #bada55 0%, #2a562c 100%); /* FF(3.6 to 15) */ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#bada55), color-stop(100%,#2a562c)); /* Chrome, Safari4+ */ background-image: -webkit-linear-gradient(top, #bada55 0%, #2a562c 100%); /* Chrome10+ and Safari5.1+ */ background-image: -o-linear-gradient(top, #bada55 0%, #2a562c 100%); /* Opera(11.1 to 12.0) */ background-image: -ms-linear-gradient(top, #bada55 0%, #2a562c 100%); /* pre-releases of IE10 */ background-image: linear-gradient(to bottom, #bada55 0%, #2a562c 100%); /* W3C standard, IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bada55', endColorstr='#2a562c',GradientType=0); /* IE(6 to 9) */ }
Příklad přechodu dvou barev v úhlu 135°:
<!--[if gte IE 9]> <style type="text/css"> .gradient { filter: none; } </style> <![endif]-->
.gradient { background-color: #1e5799; /* background color if gradients are not supported */ /* IE9 SVG, needs conditional override of 'filter' to 'none' */ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+CiAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjMWU1Nzk5IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzdkYjllOCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=); background-image: -moz-linear-gradient(-45deg, #1e5799 0%, #7db9e8 100%); /* FF(3.6 to 15) */ background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #1e5799), color-stop(100%, #7db9e8)); /* Chrome, Safari4+ */ background-image: -webkit-linear-gradient(-45deg, #1e5799 0%, #7db9e8 100%); /* Chrome10+,Safari5.1+ */ background-image: -o-linear-gradient(-45deg, #1e5799 0%, #7db9e8 100%); /* Opera(11.1 to 12.0) */ background-image: -ms-linear-gradient(-45deg, #1e5799 0%, #7db9e8 100%); /* pre-releases of IE10 */ background-image: linear-gradient(135deg, #1e5799 0%, #7db9e8 100%); /* W3C standard, IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1e5799', endColorstr='#7db9e8', GradientType=1); /* IE(6 to 8) fallback on horizontal gradient ONLY */ }
Příklad odbarvení obrázku na pozadí:
.gray {
background: url('../images/pozadi.jpg') no-repeat 0 0;
-webkit-filter: grayscale(1); /* Webkit Nightlies & Chrome Canary */
filter: gray; /* IE5+ */
filter: grayscale(100%);
-webkit-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}
.gray:hover {
-webkit-filter: grayscale(0);
filter: none;
}
...
Zápis hodnot vlastností, u kterých je možné nastavovat všechny čtyři strany je možné zkrátit.
Definice | Horní | Pravý | Dolní | Levý |
---|---|---|---|---|
padding: 1px 2px 3px 4px; |
1 | 2 | 3 | 4 |
padding: 1px 2px 3px; |
1 | 2 | 3 | 2 |
padding: 1px 2px; |
1 | 2 | 1 | 2 |
padding: 1px; |
1 | 1 | 1 | 1 |
Umožňuje zkrácený zápis všech vlastností rámečku:
h1 {border: 4px groove green;} p {border: 4px ridge green;}
Při použití sdružené definice jsou u neuvedených vlastností nastaveny výchozí hodnoty.
Samostatně lze zadávat i jednotlivé strany:
body { border-top: 10px solid lime; border-right: 10px double green; border-bottom: 10px dotted purple; border-left: 10px dashed blue; }
body { border: solid green; border-width: 1px 2px 3px 4px; }
Samostatně lze zadávat i jednotlivé strany:
body { border: solid green; border-top-width: 5px; border-right-width: 10px; border-bottom-width: 15px; border-left-width: 20px; }
Šířka vykreslování klíčových slov (thin, medium, thick) se v jednotlivých prohlížečích liší.
body { border: 10px green; border-style: solid; }
Samostatně lze zadávat i jednotlivé strany:
body { border: 10px green; border-top-style: double; border-right-style: dotted; border-bottom-style: dashed; border-left-style: none; }
IE6- vykresluje tečkovaný rámeček o šířce 1px čárkovaně.
IE5- vykresluje tečkovaný a čárkovaný rámeček jako spojitý.
body { border: 10px solid; border-color: red black blue green; }
Samostatně lze zadávat i jednotlivé strany:
body { border: 10px solid; border-top-color: red; border-right-color: black; border-bottom-color: blue; border-left-color: transparent; }
.radius { -webkit-border-radius: 10px 10px 0 0; -moz-border-radius: 10px 10px 0 0; -o-border-radius: 10px 10px 0 0; border-radius: 10px 10px 0 0; position: relative; behavior: url('sites/all/themes/legadino/design/pie.htc'); }
V současné době nepodporují prohlížeče IE a Opera. Pro prohlížeče Mozilla Firefox, Google Chrome a Safari je možné již dnes používat zkušební vlastnosti -moz-border-radius a -webkit-border-radius.
Omezení:
<img>
není možné, ale můžete použít obrázek v pozadí elementu <div>
p {margin: 1em 0 .5em;}
Samostatně lze zadávat i jednotlivé strany:
p { margin-top: 1em; margin-right: 0; margin-bottom: .5em; margin-left: 0; }
th, td {padding: 0.1em .3em 0;}
Samostatně lze zadávat i jednotlivé strany:
th, td { padding-top: .1em; padding-right: .3em; padding-bottom: 0; padding-left: .3em; }
line-height
)overflow
#header {height: 100px;}
div {max-height: 100px;}
Nepodporuje IE6-
div {min-height: 100px;}
Nepodporuje IE6-
overflow
#header, #content, #footer {width: 760px;}
div {max-width: 100px;}
Nepodporuje IE6-
div {min-width: 100px;}
Nepodporuje IE6-
box-shadow: [horizontální posun] [vertikální posun] (rozostření) (roztažení) [barva] (pozice), (...další stíny...)
.box-shadow { -moz-box-shadow: 0 20px 20px -20px rgba(0, 0, 0, .7) inset, 0 -20px 20px 20px rgba(0, 0, 0, .7); /* FF(3.5-3.6) */ -webkit-box-shadow: 0 20px 20px -20px rgba(0, 0, 0, .7) inset, 0 -20px 20px 20px rgba(0, 0, 0, .7); /* Chrome(4-9), Safari(3.1-4), iOS(3.2-4.3), Android(2.1-3) */ box-shadow: 0 20px 20px -20px rgba(0, 0, 0, .7) inset, 0 -20px 20px 20px rgba(0, 0, 0, .7); /* Opera10.5+, IE9+ */ }
Praktický příklad použití stínů je vidět např. u loga Microsoft.
Skrytý element na stránce nezabírá žádné místo.
h1 {display: inline;} /* zobrazi se jako radkovy element */ #menu a {display: block;} /* zobrazi se jako blokovy element */ .hidden {display: none;} /* nezobrazi se */
Skrytý element na stránce stále zabírá své místo.
.skryt {visibility: hidden;} .zobrazit {visibility: visible;}
Určuje jakým způsobem zacházet s obsahem, který se do elementu nevejde:
pre { width: 556px; font-size: 13px; overflow: auto; }
Samostatně lze zadávat i jednotlivé směry:
p { width: 100px; height: 100px; overflow-y: auto; overflow-x: scroll; }
Umístění každého elementu v rámci dokumentu může být statické (výchozí), relativní, absolutní nebo fixní. Umístění se vztahuje vždy k obsahovému bloku elementu.
Statické pozicování – static:
Relativní pozicování – relative:
Absolutní pozicování – absolute:
Fixní pozicování – fixed:
IE6- vyhodnocuje fixní umístění jako absolutní.
img { position: absolute; bottom: 0; left: 50%; /* levy roh se umisti na stred nadrazeneho elementu */ }
Vzdálenost horního vnějšího okraje relativně či absolutně pozicovaného elementu od horního vnitřního okraje nadřazeného elementu.
#links { position: absolute; top: 0; }
Vzdálenost pravého vnějšího okraje relativně či absolutně pozicovaného elementu od pravého vnitřního okraje nadřazeného elementu.
#menu { position: absolute; right: 0; }
Vzdálenost spodního vnějšího okraje relativně či absolutně pozicovaného elementu od spodního vnitřního okraje nadřazeného elementu.
#footer { position: absolute; bottom: 0; }
Vzdálenost levého vnějšího okraje relativně či absolutně pozicovaného elementu od levého vnitřního okraje nadřazeného elementu.
#menu { position: absolute; left: 10px; }
Umístění absolutně pozicovaného elementu do vzdálenější (nižší číslo) nebo bližší vrstvy (vyšší číslo).
h1 img { position: absolute; top: 10px; left: 10px; z-index: 1; } #links { position: absolute; top: 0; left: 0; z-index: 2; }
Ořízne absolutně pozicovaný element.
img { position: absolute; clip: rect(10px auto auto auto); /* souradnice z leveho horniho rohu */ }
IE6- neumí oříznout pozadí, ale pouze obsah elementu
Hodnoty:
img { width: 100px; /* definovana sirka je nutnou podminkou */ float: right; }
Určuje stranu, ze které se ukončí obtékání.
.clear {clear: both;} .clear-left {clear: left;} .clear-right {clear: right;}
<blockquote> <p>Text text text text...</p> <div>Autor: <cite>Jan Werich</cite></div> </blockquote>
blockquote {
position: relative;
text-align: justify;
}
blockquote p:before,
blockquote p:after {
position: relative;
display: block;
height: 40px;
width: 40px;
content: '„';
font-size: 60px;
color: #eee;
}
blockquote p:before {
float: left;
margin: -46px 0 0 -45px;
}
blockquote p:after {
float: right;
margin: -18px -50px 0 0;
content: '“';
}
Rozdělení obsahu (např. nečíslovaného seznamu) na definovaný počet sloupců
ul.columns3 { -moz-column-count:3; /* Firefox */ -webkit-column-count:3; /* Safari and Chrome */ column-count:3; -moz-column-gap:40px; /* Firefox */ -webkit-column-gap:40px; /* Safari and Chrome */ column-gap:40px; -moz-column-rule:4px outset #f00; /* Firefox */ -webkit-column-rule:4px outset #f00; /* Safari and Chrome */ column-rule:4px outset #f00; }
Hodnoty:
th {vertical-align: bottom;} td {vertical-align: top;}
table { border: 1px dotted blue; border-collapse: collapse; } table.dvojramecek { border: 1px solid green; border-collapse: separate; /* oddelene bunky a ramecek tabulky */ }
table { border: 1px dotted blue; border-spacing: 10px; }
Nepodporuje IE7-
Hodnoty:
table { caption-side: bottom; }
Nepodporuje IE7-
Opera zná pouze hodnoty top a bottom
table { border: 1px dotted blue; empty-cells: hide; } table.zobrazit { border: 1px solid green; empty-cells: show; }
Nepodporuje IE7-
Umožňuje zkrácený zápis všech vlastností seznamů:
ul li {list-style: square outside none;} ol li {list-style: upper-latin outside url(images/menu.gif);}
ul, ol {list-style-type: none;} /* bez oznaceni */ ul.kolecko {list-style-type: disc;} ul.kruh {list-style-type: circle;} ul.ctverec {list-style-type: square;} ol.cislo {list-style-type: decimal;} ol.velke-pismeno {list-style-type: upper-latin;} ol.male-pismeno {list-style-type: lower-latin;} ol.velke-rimske {list-style-type: upper-roman;} ol.male-rimske {list-style-type: lower-roman;} ol.velke-pismeno {list-style-type: upper-alpha;} ol.male-pismeno {list-style-type: lower-alpha;} ol.recke-pismeno {list-style-type: lower-greek;} /* nefunguje v IE */ ol.s-pocatecni-nulou {list-style-type: decimal-leading-zero;} /* nefunguje v IE */ ol.armenske-cislo {list-style-type: armenian;} /* nefunguje v IE a Opeře */ ol.hebrejske-cislo {list-style-type: georgian;} /* nefunguje asi nikde */
ul {list-style-position: outside;} ol {list-style-position: inside;}
Definovaný obrázek přepíše vlastnost list-style-type
.
ul {list-style-image: url(images/menu.gif);}
Tipy:
Original Hover Effects with CSS3 Transitions and Animations
Syntaxe:
transition: (hlidane_vlastnosti) trvani_animace (funkce_prubehu) (zpozdeni) (, dalsi_prechody);
Rotace, zvětšení a změna průhlednosti při najetí myší:
.thumbs { opacity: 0; transform: rotateY(180deg) scale(0.5, 0.5); transition: all 450ms ease-out 0s; } .thumbs:hover { opacity: 1; transform: rotateY(0deg) scale(1, 1); }
/* css3 hover opacity */ img { -webkit-opacity: 0.5; -moz-opacity: 0.5; -ms-opacity: 0.5; -o-opacity: 0.5; opacity: 0.5; -webkit-transition: all 1s ease; -moz-transition: all 1s ease; -ms-transition: all 1s ease; -o-transition: all 1s ease; transition: all 1s ease; } img:hover { -webkit-opacity: 1; -moz-opacity: 1; -ms-opacity: 1; -o-opacity: 1; opacity: 1; }
/* css3 transition fade-in effect on page load */ /* Chrome and Safari, Firefox, IE, Opera, CSS3 browser */ @-webkit-keyframes fadein {from {opacity: 0;} to {opacity: 1;}} @-moz-keyframes fadein {from {opacity: 0;} to {opacity: 1;}} @-ms-keyframes fadein {from {opacity: 0;} to {opacity: 1;}} @-o-keyframes fadein {from {opacity: 0;} to {opacity: 1;}} @keyframes fadein {from {opacity: 0;} to {opacity: 1;}} #section-content { /* use animattion ease-in and repeat it only 1 time */ -webkit-animation: fadein 2s; -moz-animation: fadein 2s; -ms-animation: fadein 2s; -o-animation: fadein 2s; animation: fadein 2s; }
/* css3 transition fade-in effect on page load */ /* Chrome and Safari, Firefox, IE, Opera, CSS3 browser */ @-webkit-keyframes fadein {from {opacity: 0;} to {opacity: 1;}} @-moz-keyframes fadein {from {opacity: 0;} to {opacity: 1;}} @-ms-keyframes fadein {from {opacity: 0;} to {opacity: 1;}} @-o-keyframes fadein {from {opacity: 0;} to {opacity: 1;}} @keyframes fadein {from {opacity: 0;} to {opacity: 1;}} p { /* make invisible upon start */ opacity: 0; /* use animattion ease-in and repeat it only 1 time */ -webkit-animation: fadein ease-in 1; -moz-animation: fadein ease-in 1; -ms-animation: fadein ease-in 1; -o-animation: fadein ease-in 1; animation: fadein ease-in 1; /* tafter animation is done we remain at the last keyframe value (opacity: 1) */ -webkit-animation-fill-mode: forwards; -moz-animation-fill-mode: forwards; -ms-animation-fill-mode: forwards; -o-animation-fill-mode: forwards; animation-fill-mode: forwards; /* duration */ -webkit-animation-duration: 1s; -moz-animation-duration: 1s; -ms-animation-duration: 1s; -o-animation-duration: 1s; animation-duration: 1s; /* delay */ -webkit-animation-delay: 0; -moz-animation-delay: 0; -ms-animation-delay: 0; -o-animation-delay: 0; animation-delay: 0; } p.one { -webkit-animation-delay: 0.7s; -moz-animation-delay: 0.7s; -ms-animation-delay: 0.7s; -o-animation-delay: 0.7s; animation-delay: 0.7s; } p.two { -webkit-animation-delay: 1.2s; -moz-animation-delay:1.2s; -ms-animation-delay:1.2s; -o-animation-delay:1.2s; animation-delay: 1.2s; } p.three { -webkit-animation-delay: 1.6s; -moz-animation-delay: 1.6s; -ms-animation-delay: 1.6s; -o-animation-delay: 1.6s; animation-delay: 1.6s; }
Pomocí přiložených dat upravte vzhled fotogalerie ze cvičení 4.
Příloha | Velikost |
---|---|
data-fotogalerie-css.zip | 154.93 KB |
bg.png | 2.86 KB |
Pomocí přiložených dat upravte vzhled webového dokumentu ze cvičení 2.
Příloha | Velikost |
---|---|
data-cviceni-6.zip | 552.75 KB |
data-cviceni-6-easy.zip | 208.12 KB |
Odkazy:
Při ukládání webové stránky se neuloží (prohlížeč uloží pouze data přístupná přímo ze zdroje webové stránky):
CSS Framework:
overflow: Přetečený obsah zvětší v Exploreru výšku prvku
Každý CSS kodér by si měl vytovřit svůj vlastní "FrontEnd Style Guide", obsahující koncepci "jak stylovat".
Vhodná metodika zajistí jednotný vzhled a správnou funkčnost (dynamické chování).
Doporučení:
.menu__item
(oddělovačem bloku a elementu jsou dvě podtržítka).menu__item--size-xl
Další zdroje informací:
Preprocesor CSS je nástroj, který ze zdrojového kódu zapsaného pomocí vlastní syntaxe vygeneruje výsledný klasický
kaskádový styl (CSS). Oproti klasickému CSS nabízí funkce, proměnné a předdefinované sady tzv. mixiny
.
Nevýhodou je nutnost kompilace do výsledného CSS.
CSS preprocesor:
Nejznámější preprocesory CSS:
SASS/SCSS | Stylus | LESS | |
---|---|---|---|
Zpracování | server | server | server i klient |
Jazyk | Ruby | Ruby | JavaScript |
Syntaxe | bez {} a ; i klasické CSS (vyžaduje nejvíce psaní) |
bez {}, : a ; i klasické CSS (vyžaduje nejméně psaní) |
klasické CSS |
Hlášení chyb | nejpřesnější | občas chybné určení řádku | nejhorší |
Možnosti | zřejmě největší | velké | drobná omezení |
Mixins | Compass CSS3 mixins | NIB | LESS Elements Bootstrap LESS mixins |
Modulární nástroje provádějící následnou transformaci CSS.
Odkazy:
Hacks:
/* IE6 */ #element { _color: blue } /* IE6, IE7 */ #element { *color: blue; or #color: blue} /* Everything but IE6 */ #element { color/**/: blue } /* IE6, IE7, IE8 */ #element { color: blue\9; } /* IE7, IE8 */ #element { color/*\**/: blue\9; } /* IE6, IE7 -- acts as an !important */ #element { color: blue !ie; } /* string after ! can be anything */ /* IE8, IE9 */ #element {color: blue/;} /* must go at the END of all rules */
Upoutávka v rohu stránky:
<div id="corner">CSS3</div>
#corner { position: absolute; top: 0; right: 0; z-index: 99; padding: 10px 40px; background: #ffb321; color: #7f3300; font-size: 16px; font-weight: bold; text-align: center; text-transform: uppercase; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -o-transform: rotate(45deg); writing-mode: lr-tb; }
JavaScript je multiplatformní, objektově orientovaný skriptovací jazyk, určený především pro programování dynamických internetových stránek (aplikací).
Ukázky:
JavaScript projekty:
U stránek používajících JavaScript je nutné vždy do hlavičky dokumentu doplnit meta informaci o typu skriptovacího jazyka.
Definice JavaScriptu v hlavičce dokumentu:
... <meta http-equiv="content-script-type" content="text/javascript" /> <script type="text/javascript"> /* <![CDATA[ */ alert('Můj první JavaScript'); /* ]]> */ </script> </head> <body> ...
Připojení externího souboru s JavaScriptem v hlavičce dokumentu:
... <meta http-equiv="content-script-type" content="text/javascript" /> <script type="text/javascript" src="muj-skript.js"></script> </head> <body> ...
Poznámka: IE5- nepodporuje žádný JavaSript.
Příklad vložení aktuálního roku:
<script> document.write(new Date().getFullYear()); </script>
Vložení pevných mezer za definované předložky a spojky:
<script> var document; function nbsp() { var x = document.querySelector("body"); x.innerHTML = x.innerHTML.replace(/ ([ai]|[kosuvz]|do|ke|na|od|po|se|ve|za|ze) /g, " $1 "); } nbsp(); </script>
CSS vlastnost behavior
(chování) podporovaná pouze prohlížečem Internet Explorer umožňuje implementovat JavaScriptu do webových stránek pomocí kaskádových stylů.
Oproti klasickému zápisu JavaScriptu se do každého (X)HTML prvku nemusí psát ovladač (onclick, onmouseover, onmouseout atd.) jehož hodnotou je skript. Stačí pouze (X)HTML prvku přiřadit styl s vlastností behavior
, která obsahuje přímo skript nebo adresu na externí soubor s příponou *.htc (HTml Component). HTC komponenta se nejvíce vyplatí u složitých nebo často se opakujících skriptů.
Příklady použití:
Do hlavičky webové stránky vložte:
<!--[if (gt IE 5)&(lte IE 6)]> <link type="text/css" rel="stylesheet" media="screen, projection" href="ie-6.css" /> <![endif]-->
Obsah souboru ie-6.css:
/* obrazky musi mit nastavene rozmery */ img { behavior: expression((this.runtimeStyle.behavior="none") && (this.src.toLowerCase().indexOf('.png')>-1) && (this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "', sizingMethod='scale')", this.runtimeStyle.paddingTop = this.height, this.runtimeStyle.height = 0)); overflow:hidden; } /* pozadi se nebude dlazdicove opakovat a bude zarovnano vlevo nahoru */ .png { behavior: expression((this.runtimeStyle.behavior = "none") && (this.currentStyle.backgroundImage.toString().toLowerCase().indexOf('.png')>-1) && (this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.currentStyle.backgroundImage.toString().replace('url("','').replace('")','') + "', sizingMethod='crop')", this.runtimeStyle.zoom = 1, this.runtimeStyle.backgroundImage = "none")); }
Odkazy:
Bližší informace viz Formalize CSS.
jQuery je JavaScriptová knihovna, která zjednodušuje použití JavaScriptu v HTML dokumentu.
jQuery umožňuje vytvářet interaktivní webové aplikace. Funkčnost jQuery je možné dále rozšiřovat pomocí tzv. "zásuvných modulů", které nabízejí již hotová řešení nejčastějích požadavků.
Typickým příkladem použítí mohou být např. reakce na události, okamžitá validace formuláře již při jeho vyplňování, nejrůznější animace, bez nutnosti používat technologii Flash, jednoduchá spolupráce s AJAX technologií atd.
Co budeme potřebovat:
jQuery knihovnu je možné k dokumentu připojit v hlavičce dokumentu interně (jQuery knihovna je součástí webové stránky) nebo externě např. pomocí odkazů na jQuery CDN, Google CDN nebo Miscrosoft CDN.
Zajištění dostupnosti jQuery knihovny (1. z CDN zdroje, 2. z lokálního umístění):
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.2.min.js"></script> <script type="text/javascript"> if (!window.jQuery) { var jq = document.createElement('script'); jq.type = 'text/javascript'; jq.src = '/path-to-your/jquery.min.js'; document.getElementsByTagName('head')[0].appendChild(jq); } </script>
Funkce "Dokument je připraven ke zpracování jQuery" + změna obsahu H1 (příkaz se provede ihned po načtení stromové struktury stránky DOM (Document Object Model) tj. ještě před načtením externího obsahu např. obrázků):
$(document).ready(function() { $("h1").text("Nový text tagu H1."); });
Vkládání textu před a za:
... <body> <h1>jQuery</h1> </body> ...
$(document).ready(function() { $("h1").prepend("Knihovna "); $("h1").append(" je skvělá."); });
Příklad automatického skrytí prvku:
$(document).ready(function(){ $(".my-css-class").hide(1000); });
.my-css-class – CSS selektor
.hide – jQuery metoda
Příklad výpisu proměnné do konzole webového prohlížeče (Developer Toolbar):
$(document).ready(function(){ var text = "Text vypsaný v konzole."; console.log(text); });
Detekce existence elementu:
if ($("#myID").length) { $("#myID").show(); }
Výhody použití Behaviors v Drupalu
codylindley.com/jqueryselectors – vizulání demonstace selektorů
Příklady selektorů:
.text – změna obsahu
.val – získání/přiřazení hodnoty
.prepend – vložení obsahu před
.append – vložení obsahu za
.hide – skrytí
.addClass – přidání třídy
.css – nastavení kaskádového stylu
Události umožňují interakci s uživatelem (reakce na myš, klávesnici atd.).
Načtení dokumentu (pomocí metody .ready):
$(document).ready(function() {...});
je možné zkrátit na:
$().ready(function() {...});
Klepnutí myší:
$().ready(function() { $('.test').click(function() { $(this).css('background', 'green'); }); });
Ukázka shodného zápisu:
$('.my-selector').click(function(e) { e.preventDefault(); });
$('.my-selector').click(function() { return false; });
Parallax efekt – obrázky a video na pozadí:
jQuery(document).ready(function($) { // Set the background-attachment for body to "fixed" so that // we can control it's scroll speed. $('body').css('background-attachment', 'fixed'); // Attach a function to watch the window.scroll event, and // move the background image slower than the content scroll. $(window).scroll(function () { document.body.style.backgroundPosition = "0px " + (0 – (Math.max(document.documentElement.scrollTop, document.body.scrollTop) / 4)) + "px"; }); });
Příklad parallax efektu: wwws.superfish.com
julianware.com/jquery-scroll-follow-sticky-fixed-sidebar
// Float block + Sticky navigation $(function() { scrollPoint = 100, // Distance to scroll before sticking topPadding = 100, // Fixed minimum distance from top of window bottomPadding = 40, // Adjustment to scrolling element point of deactivation at footer $window = $(window), documentHeight = $(document).height(), $sticky = $('.float-block'), // Scrolling element $footer = $('footer'), // Footer container $sidebar = $('.content'), // Sidebar Container sidebarHeight = $sidebar.outerHeight(), footerHeight = $footer.outerHeight(), offset = $sticky.offset(), stop = sidebarHeight - $sticky.height() - 15, $menu = $('#main-menu'); }); function floatBlock() { if (($window.scrollTop() > offset.top - scrollPoint) && ($window.scrollTop() < (documentHeight - footerHeight) - sidebarHeight + bottomPadding)) { if (($window.scrollTop() - offset.top + topPadding) < stop) { $sticky.stop().animate({marginTop: $window.scrollTop() - offset.top + topPadding},0); // Last number is drag animation duration } else { $sticky.stop().animate({marginTop: stop},0); } $menu.addClass('affix'); // Sticky navigation } else { $sticky.stop().animate({marginTop: 0},0); // Input same drag animation duration as above $menu.removeClass('affix'); // Sticky navigation } } $(window).scroll(function(){ floatBlock(); });
Plovoucí (floating div) SkyScraper reklama
JS:
$(document).ready(function(){ var skyscraperAd = $("#skyscraper"); var skyscraperOffset = skyscraperAd.offset().top; var skyscraperBottom = $("#footer").offset().top – skyscraperAd.height(); $(window).scroll(function() { skyscraperAd.stop(); var windowTop = $(window).scrollTop(); if (windowTop > skyscraperOffset) { if (windowTop > skyscraperBottom) windowTop = skyscraperBottom; if (windowTop < 0) windowTop = 0; skyscraperAd.animate({top: windowTop + 'px'}, 'fast'); } else skyscraperAd.animate({top: skyscraperOffset + 'px'}, 'fast'); }); });
CSS:
#skyscraper { position: absolute; top: 300px; left: 50%; margin-left: 500px; width: 120px; height: 600px; }
Plovoucí blok respektující obklopující prvek (např. postranní sloupec – sidebar)
JS:
/** * Sticky element in the wrapper on scroll */ var jQuery = jQuery.noConflict(); jQuery("document").ready(function($){ $(window).scroll(function () { var sticky = $(".sticky"); var wrapper = $(".wrapper"); var top = $(window).scrollTop(); var wrapperTop = wrapper.offset().top; var wrapperBottom = wrapperTop + wrapper.height(); var normalPosition = wrapperBottom - sticky.height(); if (wrapperTop < top && normalPosition > top) { sticky.addClass("sticky-top"); sticky.removeClass("sticky-bottom"); } else { sticky.removeClass("sticky-top"); if (wrapperBottom > top && normalPosition < top) { sticky.addClass("sticky-bottom"); } else { sticky.removeClass("sticky-bottom"); } } }); });
CSS:
/** * Sticky element in the wrapper on scroll */ body { min-height: 2000px; /* optional */ } .wrapper { position: relative; height: 300px; /* optional */ background: #eee; /* optional */ } .sticky { width: 300px; /* optional */ background: #ccc; /* optional */ } .sticky-top { position:fixed; top: 0; } .sticky-bottom { position: absolute; bottom: 0; }
Příloha | Velikost |
---|---|
sticky-element-in-wrapper-on-scroll.zip | 40.3 KB |
Efekt rozbalování s sbalování obsahu využívající jQuery rozšíření Collapser.
Demo viz přiložený archiv akordeon.zip.
Zjednodušenou variantou (samozřemě vyžaduje jQuery knihovnu) může být také:
<!-- show-hide --> <script type="text/javascript"> $(document).ready(function() { $('.show-hide').hide(); $('a.toggle_link').click(function() { $(this).next('div.show-hide').toggle(); return false; }); }); </script>
Kdy se po kliku na odkaz:
<a href="#" class="toggle_link">Více</a>
Skryje obsah elementu s třídou .show-hide:
<div class="show-hide">...</div>
Příloha | Velikost |
---|---|
akordeon.zip | 39.94 KB |
Masonry automaticky "skládá" obsah stránky dle volného místa (jQuery).
Columnizer umožňuje zalomit dlouhý úzký obsah do více sloupců (jQuery).
jQuery Flat Shadow – vržený stín
factory.brainleaf.eu/jqueryIntroLoader
Příloha | Velikost |
---|---|
Correct CSS margin (jquery.simplyscroll) | 12.1 KB |
Posuvník (JqueryUI Slider) se používá pro změnu číselných hodnot v určitém rozsahu.
Výhodou posuvníku je, že všechny zvolené hodnoty jsou platné (brání vložení chybné hodnoty).
Příklady:
jQuery Slideshow podporující dotyková gesta.
Pokud potřebujete zajistit na stránce stejnou výšku některých prvků (tj. zjistit maximální výšku a nastavit ji u všech ostatních) jistě se Vám bude hodit níže uvedené řešení.
... <meta http-equiv="content-script-type" content="text/javascript" /> <script type="text/javascript" src="jquery-1.6.4.min.js"></script> <script type="text/javascript" src="jquery.equalHeights.js"></script> <script type="text/javascript" src="jquery.pxem.js"></script> <script type="text/javascript" src="jquery.settings.js"></script> </head> <body> ...
$(document).ready(function(){ // vyber selektoru $("#box1, #box2, .boxes ... etc.").equalHeights({ relative: true }); });
Další možnosti:
/* * Unify Heights * * <div id="container"> * <div id="sidebar"></div> * <div id="content"></div> * </div> * *//* $(function() { function unifyHeights() { var maxHeight = 0; $('#container').children('#sidebar, #content').each(function() { var height = $(this).outerHeight(); // alert(height); if (height > maxHeight) { maxHeight = height; } }); $('#sidebar, #content').css('height', maxHeight); } unifyHeights(); });
/* * iframe Auto Adjust Height as content changes * * <div id="main"> * <div id="navigation"></div> * <div id="content"> * <iframe></iframe> * </div> * </div> * * html, body, #main { * margin: 0; * padding: 0; * height: 100%; * } * */ $(function() { // Resize iFrame Height to Fit Content function ResizeIframe() { var mainHeight = $('#main').outerHeight(); var navHeight = $('#navigation').outerHeight(); var contenHeight = mainHeight - navHeight; $('iframe').css('height', contenHeight); } // Resize ResizeIframe(); // Try to change the iframe size every 2 seconds setInterval(function() { ResizeIframe(); }, 2000); });
Příloha | Velikost |
---|---|
equalheights.zip | 2.63 KB |
Práce s textem (odstranění, úprava, vložení):
$(document).ready(function(){ $('#block-1 .text').remove(); $('#block-1 .title').text('Nadpis'); $('#block-1 .link').append('<a href="#">Odkaz</a>'); });
Příklad úpravy URL adresy:
$(document).ready(function(){ $('#block-1 .content a').each(function(){ $(this).attr('href', 'http://www.myweb.cz' + $(this).attr('href')); }); });
Změna velikosti textu zvoleného prvku:
Zobrazení příspěvku zvoleného uživatele:
Ukázka Fixed menu on scroll (soubory ke stažení).
Zdroj:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta charset="utf-8" /> <title>Fixed menu on scroll</title> <meta name="description" content="How to make fixed menu on scroll with jQuery and CSS" /> <meta name="keywords" content="fixed,menu,scroll" /> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/fixed-menu-on-scroll.js"></script> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div class="header">Brand</div> <div class="main-menu"> <ul class="clearfix"> <li><a href="#">Home</a></li> <li><a href="#">jQuery</a></li> <li><a href="#">CSS</a></li> </ul> </div> <h1>Fixed menu on scroll</h1> <p>Make fixed menu on scroll with jQuery and CSS.</p> </body> </html>
jQuery:
/** * Fixed menu on scroll */ var jQuery = jQuery.noConflict(); jQuery("document").ready(function($){ var nav = $('.main-menu'); $(window).scroll(function () { if ($(this).scrollTop() > 110) { nav.addClass("fixed"); } else { nav.removeClass("fixed"); } }); });
CSS:
/** * Fixed menu top on scroll */ .fixed { position: fixed; top: 0; left: 0; z-index: 999; width: 100%; }
Příloha | Velikost |
---|---|
fixed-menu-on-scroll.zip | 40.12 KB |
Modální upozornění:
$("#alert").hover( function() { alert("Your book is overdue."); } );
Modální upozornění vytvořené pomocí jQuery Dialog:
// Inserting modal information message when clicking on the link $('#dialog a').click(function(event) { var link = $(this).attr('href'); // create message $(this).append('<div id="message" title="AKCE">Výprodej!</div>'); // show message as dialog $(function() { $("#message").dialog({ modal: true, resizable: false, buttons: { Ok: function() { // close dialog $(this).dialog("close"); // execute a link location.href = link; } } }); }); // stop link execution return false; //event.preventDefault(); });
.ui-dialog .ui-widget-header { background: #ffb321; color: #7f3300; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } .ui-dialog .ui-button { background: #d6007f; color: #fff; box-shadow: none; }
Další možnosti:
Vysouvání (Slide Out and In):
<!-- Slide Toggle -->
<div class="slide-toggle">
<p>Lorem ipsum dolor sit amet.</p>
</div>
/** * Slide Toggle */ var jQuery = jQuery.noConflict(); jQuery("document").ready(function($){ var toggle = $('.slide-toggle'); $(toggle).click(function(){ if(toggle.css("bottom") == "0px") { toggle.animate({bottom: "-60px"}, 1000); } else { toggle.animate({bottom: "0px"}, 1000); } return false; }); });
/**
* Slide Toggle
*/
.slide-toggle {
position: fixed;
bottom: -60px;
left: 60%;
z-index: 99;
margin: 0;
height: 300px;
cursor: pointer;
}
<div id="block-block-2"> <h2 class="block-title">Announcement Area</h2> <div class="content"> <p>Lorem ipsum dolor sit amet.</p> </div> </div>
/**
* Slide Toggle
*/
$('#block-block-2 .block-title').click(function(){
if ($("body").css("direction").toLowerCase() == "rtl") {
if($("#block-block-2").css("right") == "-170px") {
$("#block-block-2").animate({right: "0"}, 1000);
$("#block-block-2").addClass('in');
} else {
$("#block-block-2").animate({right: "-170px"}, 1000);
$("#block-block-2").removeClass('in');
}
} else {
if($("#block-block-2").css("left") == "-170px") {
$("#block-block-2").animate({left: "0"}, 1000);
$("#block-block-2").addClass('in');
} else {
$("#block-block-2").animate({left: "-170px"}, 1000);
$("#block-block-2").removeClass('in');
}
}
return false;
});
/** * Slide Toggle */ #block-block-2 { position: absolute; top: 100px; left: -170px; /* LTR */ width: 200px; } #block-block-2 .block-title { position: absolute; left: 70px; /* LTR */ top: 99px; width: 228px; height: 30px; line-height: 27px; cursor: pointer; text-align: center; font-weight: normal; font-size: 16px; background: #ff0000; color: #fff; -webkit-transform: rotate(-90deg); -moz-transform: rotate(-90deg); -o-transform: rotate(-90deg); -ms-transform: rotate(-90deg); writing-mode: lr-tb; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); }
Efekt grafického zvýraznění obrázkové mapy využívající jQuery rozšíření Map Hilight.
Příloha | Velikost |
---|---|
map-hilight.zip | 70.75 KB |
Pomocí jQuery pluginu TableSort je možné řadit data v tabulce dle záhlaví:
Příloha | Velikost |
---|---|
tablesorter.zip | 17.8 KB |
Dean Edwards IE je JavaScriptová knihovna umožňující naučit Internet Explorer W3C standardům:
Nevýhody:
Příloha | Velikost |
---|---|
DeanEdwardsIE.zip | 25.04 KB |
HTML5 enabling script umožňuje prohlížeči Internet Explorer rozpoznat HTML5 prvky.
Viz modul Modernizr.
<p>Webová standardizační organizace <a href="http://www.w3.org" type="text/html" charset="utf-8" hreflang="en" xml:lang="en" lang="en" title="The World Wide Web Consortium" onclick="return !window.open(this.href);" onkeypress="return !window.open(this.href);">W3C</a></p>
Pozice left, top platí pro IE4+, pozice screenX, screenY platí pro Netscape 4+
<img src="obrazek.jpg" onload="window.open('http://www.google.cz/',
'reklama', 'width=600, height=400, left=100, top=100,
screenX=100, screenY=100, location=no, directories=no,
status=no, menubar=no, toolbar=no, copyhistory=no,
scrollbars=yes, resizable=yes');" alt="Popis obrázku"/>
IE6- neumí zobrazit průhlednost u PNG obrázků. Můžete jej to ovšem naučit :)
Pokud webový prohlížeč neumí zobrazit PNG průhlednost, zobrazí místo ní barvu nastavenou jako barvu pozadí při ukládání obrázku.
/* Correctly handle PNG transparency in Win IE 5.5 & 6. http://homepage.ntlworld.com/bobosola */ var arVersion = navigator.appVersion.split("MSIE") var version = parseFloat(arVersion[1]) if ((version >= 5.5) && (document.body.filters)) { for(var i=0; i<document.images.length; i++) { var img = document.images[i] var imgName = img.src.toUpperCase() if (imgName.substring(imgName.length-3, imgName.length) == "PNG") { var imgID = (img.id) ? "id='" + img.id + "' " : "" var imgClass = (img.className) ? "class='" + img.className + "' " : "" var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' " var imgStyle = "display:inline-block;" + img.style.cssText if (img.align == "left") imgStyle = "float:left;" + imgStyle if (img.align == "right") imgStyle = "float:right;" + imgStyle if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" img.outerHTML = strNewHTML i = i-1 } } }
<meta http-equiv="content-script-type" content="text/javascript" /> <!--[if (lte IE 7)&(gte IE 5)]> <script defer type="text/javascript" src="scripts/fix-png.js"> </script> <![endif]-->
IE5- nepodporuje žádný JavaSript.
/* Correctly handle PNG transparency in Win IE 5.5 & 6. http://homepage.ntlworld.com/bobosola/imagemap.htm */ var strGif = "scripts/transparentpixel.gif" var strFilter = "progid:DXImageTransform.Microsoft.AlphaImageLoader" var arVersion = navigator.appVersion.split("MSIE") var version = parseFloat(arVersion[1]) if ((version >= 5.5) && (document.body.filters)) { for(var i=0; i<document.images.length; i++) { var img = document.images[i] var imgName = img.src.toUpperCase() if (imgName.substring(imgName.length-3, imgName.length) == "PNG") { var imgID = (img.id) ? "id='" + img.id + "' " : "" var imgClass = (img.className) ? "class='" + img.className + "' " : "" var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' " var imgStyle = "display:inline-block;" + img.style.cssText if (img.align == "left") imgStyle = "float:left;" + imgStyle if (img.align == "right") imgStyle = "float:right;" + imgStyle if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle if (img.useMap) { var strAddMap = "<img style=\"position:relative; left:-" + 0 + "px; top:" + 0 +"px;" + "height:" + img.height + "px;width:" + img.width +"\" " + "src=\"" + strGif + "\" usemap=\"" + img.useMap + "\" border=\"" + img.border + "\"></span>" var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:" + strFilter + "(src=\'" + img.src + "\', sizingMethod='scale');\">" strNewHTML += strAddMap } else { var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:" + strFilter + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" } img.outerHTML = strNewHTML i = i-1 } } for(i=0; i < document.forms.length; i++) findImgInputs(document.forms(i)) } function findImgInputs(oParent) { var oChildren = oParent.children if (oChildren) { for (var i=0; i < oChildren.length; i++) { var oChild = oChildren(i) if ((oChild.type == 'image') && (oChild.src)) { var origSrc = oChild.src oChild.src = strGif oChild.style.filter = strFilter + "(src='" + origSrc + "')" } findImgInputs(oChild) } } }
strGif
.<meta http-equiv="content-script-type" content="text/javascript" /> <!--[if (lte IE 7)&(gte IE 5)]> <script defer type="text/javascript" src="scripts/fix-png-map.js"> </script> <![endif]-->
IE5- nepodporuje žádný JavaSript.
Příloha | Velikost |
---|---|
transparentpixel.gif | 43 bajtů |
fix-png.js.txt | 1.48 KB |
fix-png-map.js.txt | 2.63 KB |
IE7- nastavuje u elementu <object> vlastní okraje, rámeček a vertikální posuvník. Tomuto chování je možné zabránit:
function fixObjectImages () { var objs = document.getElementsByTagName ('object'); for (n = 0; n < objs.length; n++) { var obj = objs [n]; if ((obj != null && obj.type != null) && ((obj.type == "image/png") || (obj.type == "image/jpeg") || (obj.type == "image/gif"))) { fixObject (obj); } } } function fixObject (obj) { obj.body.style.margin = '0'; obj.body.style.border = 'none'; obj.body.style.overflow = 'hidden'; } // Do this only for IE! window.onload = fixObjectImages;
<meta http-equiv="content-script-type" content="text/javascript" /> <!--[if (lte IE 7)&(gte IE 5)]> <script type="text/javascript" src="scripts/pngfix.js"> </script> <![endif]-->
IE5- nepodporuje žádný JavaSript
Pomocí přiložených dat přidejte do obrázkové mapy ve fotogalerie ze cvičení 5 šipky pro přechod na předchozí a následující fotografii.
Příloha | Velikost |
---|---|
data-cviceni-7.zip | 2.11 KB |
js-formular.zip | 65.75 KB |
Kulaté rožky je možné vytvářet pomocí CSS vlastnosti border-radius.
Curvy Corners používají k vytovření kulatých rožků JavaScript.
Níže uvedený příklad použije JavaScript na vytváření kulatých rožků vždy (zvyšuje zátěž počítače):
... <style type="text/css"> /* <![CDATA[ */ .rounded { background-color: #ff0; border: 3px solid #f00; } /* ]]> */ </style> <meta http-equiv="content-script-type" content="text/javascript" /> <script type="text/javascript" src="scripts/curvycorners.js"></script> <script type="text/javaScript"> /* <![CDATA[ */ addEvent(window, 'load', initCorners); function initCorners() { var settings = { tl: {radius: 20}, tr: {radius: 20}, bl: {radius: 20}, br: {radius: 20}, antiAlias: true } curvyCorners(settings, ".rounded"); } /* ]]> */ </script> </head> <body> <h1>Curvy Corners</h1> <div class="rounded"> Content </div> ...
Níže uvedený příklad použije JavaScript pouze v případě, kdy prohlížeč nepodporuje CSS3 vlastnot border-radius:
... <style type="text/css"> /* <![CDATA[ */ .rounded { background-color: #ff0; border: 3px solid #f00;
/* Do rounding (native in Firefox and Safari) */ border-radius: 20px; -webkit-border-radius: 20px; -moz-border-radius: 20px; } /* ]]> */ </style> <meta http-equiv="content-script-type" content="text/javascript" /> <script type="text/JavaScript" src="scripts/curvycorners.js"></script> </head> <body> <h1>Curvy Corners</h1> <div class="rounded"> Content </div> ...
Nifty Corners nabízí další způsob vytvoření kulatých rožků.
Příloha | Velikost |
---|---|
curvycorners-2.0.4.zip | 188.9 KB |
curvy-corners-css.zip | 2.66 KB |
Colorbox – a jQuery lightbox (obrázky včetně "Retina", stránky, multimédia)
Lightbox2 – pouze obrázky
Shadowbox – obrázky, stránky, multimédia
Greybox – obrázky, stránky, multimédia
mediaelementjs.com – HTML5 přehrávač
Video a audio je možné snadno publikovat pomocí služeb YouTube, Viddler, Revver, MySpace a dalších.
Přestože je možné multimédia do stránek vkládat prostřednictvím různých pluginů jako je např. QuickTime, Windows Media a další, Flash je v současnosti jediný rozšířený plugin, který je multiplatformní a nabízí potřebné API (Application Programming Interface – aplikační programové rozhraní) pro vývojáře.
mediaelementjs.com – HTML5 přehrávač
Návody:
Příloha | Velikost |
---|---|
puzzle.swf | 39.46 KB |
puzzle.zip | 468.8 KB |
slivovice.swf | 39.63 KB |
slivovice.zip | 468.96 KB |
dvojcata-jak-jsme-se-narodili.flv | 9.61 MB |
dvojcata-jak-jsme-se-narodili.jpg | 8.58 KB |
Galerie:
Tip: pokud rozbalovací menu "zajíždí" pod flash animaci, vše řeší doporučení přímo od Macromedia tj. přidání parametru "transparent":
<object wmode="transparent" ...> <param name="wmode" value="transparent" /> ...
Sjednocuje metody vkládání Flash obsahu (nabízí jak značkovací metodu, tak metodu využívající JavaScript).
Při vypnutém JavaScriptu vyžaduje aktivaci objektu v prohlížečích Internet Explorer 6-7 a Opera 9+.
Vyžaduje JavaScript.
Příloha | Velikost |
---|---|
audio.zip | 4.81 MB |
video.zip | 113.85 KB |
flash-clock.zip | 682.84 KB |
PHP (Hypertextový Preprocesor, původně Personal Home Page) je multiplatformní skriptovací programovací jazyk, určený především pro programování dynamických internetových stránek (aplikací).
LAMP je často používaná zkratka pro kombinaci operačního systému GNU/Linux, webového serveru Apache, databázového systému MySQL (případně PostgreSQL) a PHP.
Příklad PHP skriptu, který zobrazí slovo Ahoj:
<?php echo "Ahoj"; ?>
Další informace viz manuálové stránky PHP.
Nabízejí PHP dokumentaci, šablony a zejména usnadňují psaní skriptů (třídy, funkce, procedury).
Funkce print stejně tak konstruktor echo slouží pro vypsání obsahu na obrazovku.
Print je o něco málo pomalejší než echo, ale zato vrací hodnotu True nebo False. Způsob použití se dále liší při výpisu proměnné.
<?php $text = print "Jak se mate?"; // s echo toto neni mozne if($text) { echo “Výpis úspěšný:)“; } ?>
Funkce print_r umožňuje navíc i vypsat obsah pole:
<?php $pole = array ('a' => 'délka', 'b' => 'šířka', 'c' => array ('x', 'y', 'z')); print_r ($pole); ?>
Zobrazení poslední aktualizace souboru číselně:
<? /* aktualni soubor */ $file = $_SERVER['SCRIPT_FILENAME']; /* cas zmeny souboru */ $update = filemtime($file); /* aktualizace ciselne */ echo "<p>Poslední aktualizace: " .date('d. n. Y – H:i\'s"', $update). "</p>"; ?>
Zobrazení poslední aktualizace souboru slovně (české slovní zobrazení měsíce a dne v týdnu):
<?php /* aktualni cas */ echo "<p>Nyní je " .date('l d. m. Y H:i\'s"'). ".</p>"; /* aktualni soubor */ $file = $_SERVER['SCRIPT_FILENAME']; /* cas zmeny souboru */ $update = filemtime($file); /* aktualizace ciselne */ echo "<p>Poslední aktualizace: " .date('d. n. Y – H:i\'s"', $update). "<br />"; /* aktualizace slovne */ $months = array('leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'); $days = array('pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota', 'neděle'); echo "Poslední aktualizace: " .$days[date('w', $update) - 1] ." ". date('j', $update). ". " .$months[date('n', $update) - 1] . date(' Y – H:i\'s"', $update). "</p>"; ?>
Český formát datumu:
<?php // Czech date $en = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); $cz = array("ledna", "února", "března", "dubna", "května", "června", "července", "srpna", "září", "října", "listopadu", "prosince"); $date = str_replace($en, $cz, date("j. F Y")); $datePlusOneDay = str_replace($en, $cz, date("j. F Y", strtotime('+1 day'))); $dateMo = str_replace($en, $cz, date("j. F Y", strtotime('monday this week'))); $dateTu = str_replace($en, $cz, date("j. F Y", strtotime('tuesday this week'))); $dateWe = str_replace($en, $cz, date("j. F Y", strtotime('wednesday this week'))); $dateMoNext = str_replace($en, $cz, date("j. F Y", strtotime('monday next week'))); ?>
Zobrazení intervalu mezi datumy ve dnech:
<?php $dateA = date_create('2014-11-12'); $dateB = date_create('2014-10-13'); $interval = date_diff($dateA, $dateB); echo $interval->format('%R%a days'); ?>
rand – generuje náhodná celá čísla v rozsahu 0-32767 (Windows):
<?php echo rand() . "\n"; echo rand(3, 12); // cela cisla v rozsahu 3 az 12 ?>
mt_rand – generuje náhodná celá čísla přibližně 4x rychleji než funkce rand
<?php echo mt_rand() . "\n"; echo mt_rand(3, 12); // cela cisla v rozsahu 3 az 12 ?>
Při zjišťování délky řetězce pozor na diakritiku např.:
print strlen('Tomáš Daněk'); // 14 :(
print mb_strlen('Tomáš Daněk', 'utf-8'); // 11
Trvalé přesměrování URL adresy bez ztráty pozice ve vyhledávačích (úspěch není ovšem nikdy zaručen):
RewriteEngine on RewriteRule (.*) http://www.nova-domena.cz/$1 [R=301,QSA]
Nouzové řešení:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://tomas.dankovi.info/");
header("Connection: close"); // fix IE bug
?>
V případě hledání chyb nebo problémů v PHP skriptu je vhodné zapnout zobrazování chybových hlášení.
Změnu nastavení je možné provést několika způsoby:
<IfModule mod_php4.c> php_value error_reporting 2047 php_flag display_errors 1 </IfModule>
<IfModule mod_php5.c> #php_value error_reporting 6143 # PHP 5.2 a méně php_value error_reporting 30719 # PHP 5.3 a více php_flag display_errors 1 </IfModule>
<?php ini_set("display_errors", 1); error_reporting(E_ALL); $x = 2 / 0; //chyba deleni nulou ?>
Popis | error_reporting() | PHP4 | PHP5 | PHP5.3 |
Nezobrazovat hlášení (implicitní) | 0 | 0 | 0 | 0 |
Zobrazovat všechna hlášení | E_ALL | 2047 | 6143 | 30719 |
Zobrazovat pouze chyby a varování | E_ERROR | E_WARNING | E_PARSE | 7 | 7 | 7 |
Všechna hlášení, kromě notice | E_ALL ^ E_NOTICE | 2039 | 6135 | 30711 |
Všechna hlášení, kromě deprecated | E_ALL ^ E_DEPRECATED | - | - | 22527 |
Níže uvedený skript nabízí základní ochranu e-mailu zveřejněném na webu proti spam robotům. Převádí text e-mailové adresy na HTML entity a zobrazuje jej pomocí JavaScriptu.
<?php // javascript antispam e-mail link function antispamlink($email, $title){ $return = "<script type=\"text/javascript\"><!--\ndocument.write('<a href=\"' + 'mailto:' + '"; $offset = 0; while ($offset >= 0) { $code1 .= '&#'.ordutf8($email, $offset).';'; } $offset = 0; while ($offset >= 0) { $code2 .= '&#'.ordutf8($title, $offset).';'; } $return .= $code1."' + '\">' + '".$code2."' + '<\/a>');\n--></script>"; return $return; } // utf-8 characters to ASCII (ord function isn't UTF-8 fiendly) function ordutf8($string, &$offset) { $code = ord(substr($string, $offset,1)); if ($code >= 128) { //otherwise 0xxxxxxx if ($code < 224) $bytesnumber = 2; //110xxxxx else if ($code < 240) $bytesnumber = 3; //1110xxxx else if ($code < 248) $bytesnumber = 4; //11110xxx $codetemp = $code – 192 – ($bytesnumber > 2 ? 32 : 0) – ($bytesnumber > 3 ? 16 : 0); for ($i = 2; $i <= $bytesnumber; $i++) { $offset ++; $code2 = ord(substr($string, $offset, 1)) – 128; //10xxxxxx $codetemp = $codetemp*64 + $code2; } $code = $codetemp; } $offset += 1; if ($offset >= strlen($string)) $offset = -1; return $code; } // print e-mail with title echo antispamlink("info@dhosting.cz","Bc. Tomáš Daněk"); ?>
V průběhu vytváření a zejména po dokončení webových stránek je třeba všechny stránky zkontrolovat, zda neobsahují chyby. Je možné využít jak on-line, tak i off-line validátory integrované v editorech.
Vzhled webových stránek ve zvolených prohlížečích (veřejné statistiky) si můžete nechat zkontrolovat automaticky pomocí on-line služeb. Bližší informace o nástrojích na testování a kontrolu webových stránek viz Mobilní zařízení.
Implementaci webových standardů v internetových prohlížečích je možné zkontrolovat pomocí Acid Tests a HTML5 test.
--purge-memory-button
se v Task Manažeru zobrazí tlačítko na ruční vyprázdnění paměti <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
Vzhled webových stránek je vhodné otestovat i v mobilních zařízeních. Pro testy je možné využít např.:
Možnosti jak testovat "Retina web ready" bez Retina displeje:
body { zoom: 200%; -moz-transform: scale(2); -moz-transform-origin: 0 0; }
Webové stránky je možné ručně nebo automaticky zařadit do webových vyhledávačů, katalogů, databází firem, e-shopů atd.
Před registrací:
Soubor robots.txt umístěný v kořeni webu zabraňuje (povoluje) procházení a indexování určitých částí webu vyhledávacím robotům (Google, Yahoo! atd.). Tento soubor respektují pouze "slušní" roboti.
Parametry:
Procházení a indexace je povolena pro celý web (není zakázáno nic = je povoleno vše):
User-agent: * Disallow:
Procházení a indexace je pro celý web zakázána (je zakázán kořen webu):
User-agent: * Disallow: /
Komplexnější příklad (robotu s názevem W3C-checklink, kontorlující správnost odkazů, je povoleno procházet vše):
User-agent: * # Directories Disallow: /scripts/ # Files Disallow: /cron.php Disallow: /INSTALL.txt # Paths (clean URLs) Disallow: /admin/ # Paths (no clean URLs) Disallow: /?q=admin/ # Images Disallow: /*size= # Sitemap Sitemap: http://www.tomas.dankovi.info/sitemap.xml # Crawl-delay Crawl-delay: 10 # Link Checker User-Agent: W3C-checklink Disallow: # majesticseo.com User-Agent: MJ12bot Disallow:
Soubor sitemap.xml umístěný v rořeni webu poskytuje vyhledávacím robotům relevantní údaje k lepší orientaci na daném webu. V případě rozsáhlejších webů je vhodné soubor zagzipovat (sitemaps.xml.gz).
Minimální struktura souboru sitemap.xml:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.tomas.dankovi.info/</loc> </url> </urlset>
Doplňkové značky náležející dovnitř značky url:
Všechny hodnoty, které sitemap obsahuje jsou pro vyhledávače pouze informativní!
XML Sitemap generátor:
Nejlépe se přirozená návštěvnost webu zvýši zajímavým obsahem (články, recenze, návody, tipy a triky, akntety atd.).
Nenabízejte všechno všem – nabídněte správným zákazníkům co chtějí ve chvíli, kdy to chtějí.
Personalizace a automatizace:
Prodej:
Účetnictví:
Faktura:
Autorský zákon 121/2000 Sb. (např. § 40)
Komplexní reklamní systémy:
Propagace:
Dokumentace:
Doporučení pro mobilní zařízení:
Novinky:
Základní informace:
DPH:
Poznámky:
Pokud je smluvní protistranou společnost Google Ireland a nemám platební adresu v Irsku podléhají služby tzv. mechanismu reverse charge, kdy DPH platí pouze příjmence, tedy GOOGLE IRELAND. Vice přímo na stránkách Google. DPH v takovém případě platby hradí Google Ireland, společnost zapsaná v obchodním rejstříku podle zákonů Irska. V souladu s podmínkami smlouvy se společností Google podléhají poskytované služby mechanismu reverse charge, kdy DPH musí být v souladu s článkem 196 směrnice Rady č. 2006/112/ES vyúčtována příjemcem, tedy společností Google Ireland. V případě dalších dotazů se obraťte na místního daňového poradce.
Pokud nejsem plátce DPH mohu se společností, která plátcem je, uzavřít smlouvu o zporstředkování pronájmu webových ploch a jakmile přijdou peníze, vystavit fakturu na obnos, který z Googlu z mých stranek (reklmaních kanálu) přijde.
Postup:
Tipy:
PR články mírně zvedají povědomí a umožňují získávat zpětné odkazy.
Příklad výpočtu ceny za napsaný text:
PR weby:
Placené služby:
Na každé stráce mít dostatečné množství originálního textu.
Každá duplicita snižuje váhu.
Získání dostatečného množství kvalitních zpětných odkazů, pomocí nichž je možné u cílového webu zvýšit postavení ve výsledcích vyhledávání.
Kontrola zpětných odkazů:
Strukturální elementy H1 až H6 mít na stránce pouze jednou (např. více nadpisů H2 snižuje jejich váhu).
V H1 mít název stránky (ne název webu).
Vyhledávače indexují maximáně prvních 70 znaků z nadpisu.
Klíčová slova i odkazy zvýraznit a doplnit o atribut TITLE, který by měl obsahovat rozšiřující text ve kterém je použito dané klíčové slovo.
U rozsáhlejších stránek vytvořit "Osnovu" s odkazy na "ID kotvy" v nadpisech "kapitol (sekcí)". Vybrané odkazy se zobrazují pod nadpisem ve výsledcích vyhledávání např. na seznam.cz.
URL adresa by měla být jedinečná (použít .htaccess nebo mode_rewrite pro vynucení adresy bez nebo s www).
Slova v URL adrese oddělovat spojovníkem (krátká pomlčka).
Přesměrovat neexistující URL adresu např. na mapu webu nebo se zadaným výrazem provést vyhledávání.
Externí spolupráce:
Jak se stát důvěrychodným autorem:
Like box na webu:
Time line:
Automatizace:
Automatizace:
Webové služby:
Správa:
Vyhledávače kromě stránek indexují i soubory (pdf, doc, xls, ppt, odt, ods, odp atd.). Hledaný obsah je možné parametrizovat dle kritérií (site:, -site:, link:, related: atd.). Vyzkoušejte např. do vyhledávače Google zadat níže uvedené parametry, které vyhledají veškeré PDF dokumenty na webu tomas.dankovi.info:
site:tomas.dankovi.info filetype:pdf
Níže je uveden příklad definice vlastního vyhledávacího pole dle parametrů Google Custom Search Engine (CSE) tj. např. vyhledávání pouze v PDF dokumentech (vygenerování zdrojového kódu vyžaduje Google účet):
<div id='cse' style='width: 100%;'>Loading</div> <script src='//www.google.com/jsapi' type='text/javascript'></script> <script type='text/javascript'> google.load('search', '1', {language: 'en', style: google.loader.themes.V2_DEFAULT}); google.setOnLoadCallback(function() { var customSearchOptions = {}; var orderByOptions = {}; orderByOptions['keys'] = [{label: 'Relevance', key: ''} , {label: 'Date', key: 'date'}]; customSearchOptions['enableOrderBy'] = true; customSearchOptions['orderByOptions'] = orderByOptions; customSearchOptions['overlayResults'] = true; var customSearchControl = new google.search.CustomSearchControl('012680400026706346516:cmutncfxzbk', customSearchOptions); customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); var options = new google.search.DrawOptions(); options.setAutoComplete(true); customSearchControl.draw('cse', options); /* Add query addition to restrict filetype */ customSearchControl.setSearchStartingCallback( this, function(control, searcher, query) { searcher.setQueryAddition("filetype:pdf OR filetype:PDF"); } ); }, true); </script> <style type='text/css'> .gsc-control-cse { font-family: Arial, sans-serif; border-color: #FFFFFF; background-color: #FFFFFF; } .gsc-control-cse .gsc-table-result { font-family: Arial, sans-serif; } input.gsc-input, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus { border-color: #D9D9D9; } input.gsc-search-button, input.gsc-search-button:hover, input.gsc-search-button:focus { border-color: #666666; background-color: #CECECE; background-image: none; filter: none; } .gsc-tabHeader.gsc-tabhInactive { border-color: #FF9900; background-color: #FFFFFF; } .gsc-tabHeader.gsc-tabhActive { border-color: #E9E9E9; background-color: #E9E9E9; border-bottom-color: #FF9900 } .gsc-tabsArea { border-color: #FF9900; } .gsc-webResult.gsc-result, .gsc-results .gsc-imageResult { border-color: #FFFFFF; background-color: #FFFFFF; } .gsc-webResult.gsc-result:hover, .gsc-imageResult:hover { border-color: #FFFFFF; background-color: #FFFFFF; } .gs-webResult.gs-result a.gs-title:link, .gs-webResult.gs-result a.gs-title:link b, .gs-imageResult a.gs-title:link, .gs-imageResult a.gs-title:link b { color: #0000CC; } .gs-webResult.gs-result a.gs-title:visited, .gs-webResult.gs-result a.gs-title:visited b, .gs-imageResult a.gs-title:visited, .gs-imageResult a.gs-title:visited b { color: #0000CC; } .gs-webResult.gs-result a.gs-title:hover, .gs-webResult.gs-result a.gs-title:hover b, .gs-imageResult a.gs-title:hover, .gs-imageResult a.gs-title:hover b { color: #0000CC; } .gs-webResult.gs-result a.gs-title:active, .gs-webResult.gs-result a.gs-title:active b, .gs-imageResult a.gs-title:active, .gs-imageResult a.gs-title:active b { color: #0000CC; } .gsc-cursor-page { color: #0000CC; } a.gsc-trailing-more-results:link { color: #0000CC; } .gs-webResult .gs-snippet, .gs-imageResult .gs-snippet, .gs-fileFormatType { color: #000000; } .gs-webResult div.gs-visibleUrl, .gs-imageResult div.gs-visibleUrl { color: #008000; } .gs-webResult div.gs-visibleUrl-short { color: #008000; } .gs-webResult div.gs-visibleUrl-short { display: none; } .gs-webResult div.gs-visibleUrl-long { display: block; } .gs-promotion div.gs-visibleUrl-short { display: none; } .gs-promotion div.gs-visibleUrl-long { display: block; } .gsc-cursor-box { border-color: #FFFFFF; } .gsc-results .gsc-cursor-box .gsc-cursor-page { border-color: #E9E9E9; background-color: #FFFFFF; color: #0000CC; } .gsc-results .gsc-cursor-box .gsc-cursor-current-page { border-color: #FF9900; background-color: #FFFFFF; color: #0000CC; } .gsc-webResult.gsc-result.gsc-promotion { border-color: #336699; background-color: #FFFFFF; } .gsc-completion-title { color: #0000CC; } .gsc-completion-snippet { color: #000000; } .gs-promotion a.gs-title:link,.gs-promotion a.gs-title:link *,.gs-promotion .gs-snippet a:link { color: #0000CC; } .gs-promotion a.gs-title:visited,.gs-promotion a.gs-title:visited *,.gs-promotion .gs-snippet a:visited { color: #0000CC; } .gs-promotion a.gs-title:hover,.gs-promotion a.gs-title:hover *,.gs-promotion .gs-snippet a:hover { color: #0000CC; } .gs-promotion a.gs-title:active,.gs-promotion a.gs-title:active *,.gs-promotion .gs-snippet a:active { color: #0000CC; } .gs-promotion .gs-snippet, .gs-promotion .gs-title .gs-promotion-title-right, .gs-promotion .gs-title .gs-promotion-title-right * { color: #000000; } .gs-promotion .gs-visibleUrl,.gs-promotion .gs-visibleUrl-short { color: #008000; } .gsc-control-cse table, .gsc-control-cse td { margin: 0; border: 0; } td.gsib_b { padding: 0; } td.gsc-search-button input { margin: 0; } table.gsc-search-box td { vertical-align: top; } </style>
Převod formátů:
Nástroje:
CSS:
Grafika:
Fotobanky:
Obrázky zdarma (pozor Ceative commons licence je pouze pro NEkomerční použití):
Webová inspirace:
Knihovny zdarma při dodržení uvedených licencí:
Sdílení dat:
Video konference:
SEO nástroje:
Info podnikání:
Multimédia:
Domény:
Překlady
Pro zefektivnění práce je možné využívat i automatizované nástroje.
Mapy:
Layout:
Tlačítka:
Témata vzhledu: