14. diel - Obtekanie v HTML - Float, Tieň
V predchádzajúcom cvičení, Riešené úlohy k 7.-13. lekciu HTML a CSS, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.
Naposledy sme v HTML/CSS tutoriále skončili vložením
tagu <article>
, v ktorom sa nachádzala hlavička
(<header>
) a sekcia s článkom
(<section>
). Naša stránka vyzerá asi takto:
Dnes si ukážeme, ako k lepšiemu rozvrhnutiu našej stránky využijeme obtekanie prvku a posunieme týmto náš obrázok vpravo vedľa textu. Pozrieme sa tiež ako je možné využiť nastavenie tieňa.
Plávajúci obsah (float
)
Float umožňuje nastaviť obtekanie elementu ďalším obsahom – napríklad ak chceme do textu umiestniť obrázok a chceme, aby ho text nejakým spôsobom obklopoval (tak, ako to poznáme napríklad z Wordu a iných textových editorov).
Predtým sa používal float
na pozíciovanie
elementov v layoutu vedľa seba. Toto použitie je dnes už zle. Používame na
to flexbox, o ktorom si povieme neskôr. Nikdy by sme float
nemali
používať na vytváranie layoutu stránky!
Niekto si myslí, že sa float
už nemá vôbec
používať. Float ako taký však zle nie je a je to úplne validná vlastnosť
na obtekanie elementov v texte.
Vlastnosť float
použijeme na obrázok s naším avatarom,
ktorý má už priradenú triedu .avatar
.
V CSS teraz upravíme selektor pre triedu .avatar
, kde sme
doteraz mali definovanú iba šírku. K nej vložíme tieto ďalšie
vlastnosti:
.avatar { float: right; width: 300px; padding-left: 10px; filter: grayscale(1); }
Tie nám umožnia nastaviť nasledujúce:
- vlastnosť
float
s hodnotouright
umožní, že obrázok bude umiestnený vpravo a obtekaný textom zľava
Rovnú sme obrázku nastavili aj niekoľko ďalších vecí:
- vlastnosť
padding
, o ktorej si povieme ďalej v kurze, zaistí odsadenie obrázku, aby sa text nenalepil priamo na fotografiu - a pridanie čiernobieleho vzhľadu vďaka vlastnosti
filter: greyscale(1);
, kdegrayscale
môže nadobúdať číselné hodnoty0
,0.1
,0.2
, ... až1
podľa toho, na koľko chceme obrázok "sčernobieliť". Hodnotu vlastnostigrayscale
možno uvádzať aj v percentách. Môžeme si vyskúšať zadať napr. hodnotu0.5
(alebo50%
), aby sme vedeli, že aj také možnosti štýlovania CSS ponúka.
Floatom je možné do textu vložiť aj iné elementy ako obrázky, je im však vždy potrebné nastaviť pevnú šírku.
Ukončenie obtekania
(clear
)
Niekedy sa môže stať, že je text kratší, než je výška obrázku.
Obrázok potom môže začať obtekať ďalší element, ktorý je za textom a
stránka by sa nám rozhodila. Preto na koniec textu vložíme element s
vlastnosťou clear
. Na taký "čistič" nesmieme zabudnúť a
obtekanie na konci obsahu takto zastaviť. Preto si ho teraz rovno pridáme.
Na koniec <section>
teda pridáme <div>
s triedou cleaner
, teda celým zápisom
<div class="cleaner"></div>
:
<section> <img src="images/avatar.jpg" class="avatar" alt="Programmer SaBi" /> <p> Welcome! I'm thrilled to help you transform your ideas into stunning, <strong>high-performing websites</strong>. </p> <p> I'm Sam Bittner, a web developer with a passion for creating dynamic and responsive websites. I have expertise in various technologies, including HTML, CSS, JavaScript, and Java with Spring Boot. </p> ... <div class="cleaner"></div> </section>
Následne si v CSS súbore pre túto triedu vytvoríme selektor
.cleaner
.
.cleaner { clear: both; }
Vlastnosť clear
nadobúda hodnoty left
,
right
alebo both
, podľa toho, z akej strany chceme
obtekanie plávajúcich elementov ukončiť. Obvykle chceme jednoducho na konci
textu ukončiť všetko obtekanie, pretože ďalej už text nepokračuje, a
vložíme tam teda jednoducho <div>
s
clear: both
.
Výsledkom teda je, že je fotka v šedých tónoch a obtekaná textom, čo je najlepšie vidieť pri zmenšení prehliadača:
Tieň
S tieňom sme sa už v CSS stretli, bol to tieň pri texte pomocou CSS3
vlastnosti text-shadow
. Tieň môžeme nastaviť ľubovoľnému
elementu na stránke pomocou vlastnosti box-shadow
. Ukážeme si to
na elemente <article>
s článkom, aj keď tieň v dizajne
nie je, aby sme si vlastnosť vyskúšali. Potom tieň zas odoberieme. Do
selektora article
pridáme nastavenie box-shadow
:
article { margin: 0 auto; ... box-shadow: 2px 2px 7px #1c2228; }
Zadali sme niekoľko hodnôt:
- Prvé 2 hodnoty (
2px
2px
) sú pozície tieňa. - Treťou hodnotou (
7px
) je rozostrenie. - Poslednou hodnotou je farba.
Vlastnosť ostyluje obdĺžnikový tieň okolo elementu. Pozrime sa na výsledok:
Po vyskúšaní si vlastnosť box-shadow
s uvedenými hodnotami
zo selektora article
zmažeme.
V budúcej lekcii, Rámček a boxmodel v CSS, si vysvetlíme tzv. boxmodel a dokončíme oblasť s článkom.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 23x (2.28 MB)
Aplikácia je vrátane zdrojových kódov v jazyku HTML a CSS