Zadejte měrné jednotky pro velikosti znaků. CSS jednotky (pixely, Em a Ex) a funkce calc. Příklady. Relativní jednotky měření

Dosud jsme spolupracovali s jednoduché typy data – logická (boolean), integer (celé číslo, slovo, byte, longint), reálná (real), znaková (char). Pomocí těchto čtyř základních typů lze naprogramovat jakýkoli algoritmus. Ale zpracovávat informace o různých skutečný svět jsou vyžadována data se složitější strukturou. Takové složité konstrukce založené na nejjednodušších skalárních typech se nazývají struktury. Struktura – některé kompozitní typ data složená ze základních skalárních. Pokud struktura nemění svou strukturu po celou dobu provádění programu, ve kterém je popsána, pak se taková struktura nazývá statická.

Pole – homogenní kolekce prvků

Nejběžnější strukturou, implementovanou téměř ve všech programovacích jazycích, je pole.

Pole se skládají z omezeného počtu komponent a všechny komponenty pole mají stejný typ, který se nazývá základní typ. Struktura pole je vždy jednotná. Pole se může skládat z prvků typu integer, real nebo char nebo z jiných prvků stejného typu. Z toho však nelze usuzovat, že komponenty pole mohou mít pouze skalární typ.

Další vlastností pole je, že ke kterékoli z jeho komponent lze přistupovat jakýmkoli způsobem. co to znamená? Program může okamžitě získat prvek, který potřebuje svým sériové číslo(index).

Index pole

Zavolá se číslo prvku pole index. Index je hodnota ordinální typ, definovaný jako typ indexu tohoto pole. Velmi často toto celočíselný typ(celé číslo, slovo nebo byte), ale může být logické a symbolické.

Popis pole v Pascalu. V Pascalu je typ pole specifikován pomocí speciálního slova pole(anglicky – pole) a jeho deklarace v programu vypadá takto:

Typ< имя _ типа >= pole [I] z T;

kde I je typ indexu pole, T je typ jeho prvků.

Lze ihned popsat typové proměnné pole, tzn. v části popis proměnné:

Var a,b: pole [I] z T;

Typ indexu je obvykle charakterizován určitým rozsahem hodnot jakéhokoli ordinálního typu: I 1 .. I n . Indexy se mohou například lišit v rozsahu 1..20 nebo "a ".." n ".

V tomto případě je délka pole Pascal charakterizována výrazem:

ord (I n)- ord (I 1)+1.

Zde je například deklarace dvou typů: vektor jako pole Pascal o 10 celých číslech a řetězec jako pole o 256 znacích:

Typ
Vektor=pole celého čísla;
Stroka=pole znaků;

Pro přístup lze použít index pole jednotlivé prvky libovolné pole, stejně jako běžná proměnná: můžete získat hodnotu tohoto prvku, přiřadit mu hodnotu samostatně a použít ji ve výrazech.

Pojďme si popsat proměnné typu vektor a řetězec:

Výpočet indexu Pascal Array

Index pole v Pascalu nemusí být zadán v výslovně. Jako index pole můžete použít proměnnou nebo výraz odpovídající typu indexu. Jinými slovy, indexy lze vypočítat.

Tento mechanismus je velmi výkonným programovacím nástrojem. Ale to vede k běžné chybě: výsledek výpočtu může být mimo interval přijatelné hodnoty index, to znamená, že bude proveden pokus o přístup k prvku, který neexistuje. Tento typická chyba se nazývá "mimo hranice pole".

Příklad programu s chybou pole Pascal

Program primer_error;
Typ
vektor=pole slov;
var
n:integer;
a:vektor;
začít
n:=45;
a:=25;
konec.

Ačkoli tento program zcela odpovídá syntaxi jazyka a překladatel to ve fázi provádění „vynechá“, dojde k chybě, když je pole Pascal mimo hranice. Když n = 45, výraz n * 2 = 90, počítač se pokusí získat přístup k prvku pole a, ale žádný takový prvek neexistuje, protože pole dimenze 80 je popsáno.

To budeme předpokládat dobrý program by měl zobrazit varovnou zprávu, pokud dojde k pokusu o přístup k neexistujícím prvkům pole. Nebylo by zbytečné kontrolovat možné odchylky od pravé i levé hranice pole, protože je možné, že v důsledku výpočtu hodnoty výrazu bude výsledkem číslo umístěné vlevo od hranice Pascalova pole.

Z toho všeho můžeme vyvodit závěr: programátor musí být velmi opatrný při práci s indexy polí.

Základní operace s Pascalovými poli

Jak víte, definování datového typu znamená omezení rozsahu přípustných hodnot, vnitřní reprezentaci v počítači a také sadu přípustných operací s daty tohoto typu. Datový typ jsme definovali jako pole Pascal. Jaké operace jsou definovány na tomto datovém typu? Jedinou akcí, kterou lze provést na celých polích a pouze v případě, že jsou pole stejného typu, je přiřazení. Pokud program popisuje dvě proměnné stejného typu, např.

Var
a , b: pole reálných ;

pak můžete použít proměnnou A přiřadit hodnotu proměnné b(a:= b). V tomto případě každý prvek pole A bude přiřazena odpovídající hodnota z pole b. Všechny ostatní akce na polích Pascal se provádějí prvek po prvku (to je důležité!) .

Vstup pole Pascal

Chcete-li zadat hodnoty prvků pole, musíte postupně změnit hodnotu indexu, počínaje první po poslední, a zadat odpovídající prvek. Pro realizaci těchto akcí je vhodné použít smyčku s daným počtem opakování, tzn. jednoduchá aritmetická smyčka, kde parametrem smyčky bude proměnná - index pole Pascal. Hodnoty prvků lze zadat z klávesnice nebo zadat pomocí operátoru přiřazení.

Příklad fragmentu vstupního programu pole Pascal

Var
A: pole integer ;
Začít
Pro i:=1 až 10 do
Readln(a[i]); (i-tý prvek se zadává z klávesnice)

Podívejme se nyní na případ, kdy se pole Pascal vyplní automaticky náhodná čísla, k tomu použijeme funkci náhodný(N).

Příklad fragmentu programu pro vyplnění pole Pascal náhodnými čísly

Var
I: byte ; (proměnná I se zadává jako index pole)
Začít
Pro i:=1 až 10 do
A[i]:= náhodný(10); (i-tému prvku pole je přiřazeno „náhodné“ celé číslo v rozsahu od 0 do 10)

Výstup pole Pascal

Výstup pole v Pascalu se také provádí prvek po prvku, ve smyčce, kde parametrem je index pole, který postupně přebírá všechny hodnoty od prvního do posledního.

Příklad fragmentu výstupního programu pole Pascal

Var
A: pole celých čísel;
I: byte ; (proměnná I se zadává jako index pole)
Začít
Pro i:=1 až 10 do
Write(a[i]," "); (pole se vypíše na řádek, za každým prvkem se vytiskne mezera)

Výstup lze také provést ve sloupci označujícím odpovídající index. V tomto případě je ale potřeba počítat s tím, že pokud je pole velké, nemusí se všechny prvky vejít na obrazovku a dojde k rolování, tzn. Když jsou všechny řádky na obrazovce vyplněny, vytiskne se další prvek a horní se posune mimo obrazovku.

Příklad programu pro zobrazení pole Pascal ve sloupci

Var
A: pole celých čísel;
I: byte ; (proměnná I se zadává jako index pole)
Začít
Pro i:=1 až 10 do
Writeln("a[", i,"]=", a[i]); (zobrazení prvků pole ve sloupci)

Na obrazovce uvidíme například následující hodnoty:

a = 2
a = 4
a = 1 atd.

Příklad řešení problému pomocí polí Pascal

Úkol: jsou dány dva n-rozměrné vektory. Najděte součet těchto vektorů.

Řešení problému:

  • Vstupní data v tomto problému budou dvě jednorozměrná pole. Velikost těchto polí může být libovolná, ale jistá. Tito. můžeme popsat záměrně velké pole a v programu určit, kolik prvků bude skutečně použito. Prvky těchto polí mohou být celá čísla. Pak bude popis vypadat takto:

    var a, b: pole celého čísla;

  • Výstupem budou prvky výsledného pole, říkejme mu c . Typ výsledného pole musí být také celé číslo.
  • Kromě tří polí budeme potřebovat proměnnou – parametr smyčky a index pole, říkejme mu i, a také proměnnou n pro určení počtu prvků v každém poli.

Průběh řešení problému:

  • Určíme počet prvků (rozměr) polí, zadáme hodnotu n;
  • zavedeme pole a ;
  • zaveďme pole b;
  • ve smyčce, iterujeme přes hodnoty indexu i od 1 do n, vypočítáme postupně hodnoty prvků pole c pomocí vzorce:

    c [ i ] = a [ i ] + b [ i ];

  • Zobrazme výsledné pole na obrazovce.

Text programu:

Příklad programu vektorového součtu

program summa;
Var
a, b, c: pole celých čísel;
I, n: byte;
Začít
Write("zadejte velikost pole:");
Readln(n);
Pro i:=1 až n do
Readln(a[i]); (vstup pole a)
Pro i:=1 až n do
Readln(b[i]); (vstup pole b)
Pro i:=1 až n do
C[i]:=a[i]+b[i]; (výpočet součtu polí)
Pro i:=1 až n do
write(c[i]," "); (výstup pole s)
konec.

Chcete-li nastavit rozměry různé prvky CSS používá absolutní a relativní jednotky měření. Absolutní jednotky jsou nezávislé na výstupním zařízení a relativní jednotky určují velikost prvku vzhledem k hodnotě jiné velikosti.

Relativní jednotky

Relativní jednotky obvykle se používá pro práci s textem. V tabulce 1 uvádí hlavní relativní jednotky.

Jednotka em je proměnná hodnota, která závisí na velikosti písma aktuálního prvku (velikost se nastavuje pomocí stylová vlastnost velikost písma). Každý prohlížeč má vestavěnou velikost textu, která se použije, pokud tato velikost není výslovně určena. Proto zpočátku 1em rovna velikosti výchozí písmo prohlížeče nebo velikost písma rodičovský prvek. Procentuální zápis je identický s em v tom, že hodnoty 1em a 100% jsou stejné.

Jednotka ex je definována jako výška znaku "x" v malá písmena. ex podléhá stejným pravidlům jako em , totiž že je vázán na výchozí velikost písma prohlížeče nebo na velikost písma jeho nadřazeného prvku.

Jednotka ch se rovná šířce znaku "0" pro aktuální prvek a stejně jako em závisí na velikosti písma.

Rozdíl mezi em a rem je následující. em závisí na velikosti písma nadřazeného prvku a mění se s ní a rem je vázán na kořenový prvek, tj. velikost písma určená pro prvek html.

Existuje také skupina relativních jednotek vázaných na velikost výřezu prohlížeče. V tabulce 2 ukazuje jejich seznam s popisem.

Absolutní jednotky

Absolutní jednotky jsou fyzické rozměry- palce, centimetry, milimetry, body, picas a pixely. U zařízení s nízkým dpi (počet pixelů na palec určuje hustotu pixelů) je vazba na pixel. V tomto případě se jeden palec rovná 96 pixelům. Je zřejmé, že skutečný palec nebude odpovídat palci na takovém zařízení. Na zařízeních s vysokým DPI je skutečný palec stejný jako palec na obrazovce, takže velikost pixelu se vypočítá jako 1/96 palce. V tabulce 3 uvádí základní absolutní jednotky.

Příklad

Relativní jednotky

30px záhlaví

Velikost textu 1,5 em



Absolutní jednotky

24bodový nadpis

Posunout text doprava o 30 milimetrů



Poznámka

Při nastavování rozměrů nezapomeňte zadat měrné jednotky, například šířka: 30px. V opačném případě nebude prohlížeč schopen zobrazit požadovaný výsledek, protože nerozumí, jakou velikost požadujete. Jednotky se nepřidávají pouze tehdy, když nulová hodnota(okraj: 0).

Internet Explorer podporuje jednotku vm namísto vmin .

Specifikace

Každá specifikace prochází několika fázemi schvalování.

  • Doporučení – Specifikace byla schválena W3C a je doporučena jako standard.
  • Doporučení kandidáta ( Možné doporučení ) - skupina odpovědná za standard je spokojena, že splňuje své cíle, ale vyžaduje pomoc od vývojářské komunity při implementaci standardu.
  • Navrhované doporučení Doporučené doporučení) - v této fázi je dokument předložen poradní radě W3C ke konečnému schválení.
  • Working Draft – Vyspělejší verze návrhu, která byla prodiskutována a upravena pro komunitní recenzi.
  • Předloha editora ( Redakční návrh) - návrhová verze normy po změnách, které provedli redaktoři projektu.
  • Koncept ( Návrh specifikace) - první verze návrhu normy.
×

Při práci s CSS vždy přijde bod, kdy si začnete uvědomovat, jak mocný je ten či onen nástroj. I když docela dobře rozumím jednotce CSS em, jejich sílu jsem skutečně pocítil až po přečtení Simuraiova příspěvku. V tomto článku použiji jeho zkušenosti.

co je to?

V CSS je jednotka em rovna aktuální velikosti písma prvku, na který je em aplikováno. Při použití jednotek em v podřízené prvky kteří nemají určitou velikost písmo, dědí ho po rodičích, až kořenový prvek dokument.

Podívejte se na následující kód CSS:

Příklad (velikost písma: 20px; )

V v tomto případě 1 em tohoto prvku nebo jeho potomků ( při absenci jiných definic velikosti písma) se bude rovnat 20 pixelům. Pokud tedy přidáme řádek:

Příklad ( font-size: 20px; border-radius: .5em; )

Hodnota poloměru ohraničení 5 em se bude rovnat 10 pixelům (tj. 20 * 0,5 ). Rovněž:

Příklad ( font-size: 20px; border-radius: .5em; padding: 2em; )

Hodnota odsazení 2 em bude 40 pixelů (20 * 2 ). Jak bylo zmíněno, tento typ výpočtu se vztahuje na jakýkoli podřízený prvek, pokud nemá explicitně definovanou velikost písma. Potom se podobným způsobem vypočítá hodnota jednotky CSS em.

Pokud CSS neurčuje velikost písma, pak em bude výchozí velikost písma prohlížeče. Nejčastěji je tato hodnota 16px. Podívejme se, jak můžete tuto metodu použít ke snadné změně velikosti prvků.

Změna velikosti úrovní komponent

Pojem „komponenty“ je nyní velmi populární. Dobře se hodí pro modulární metody CSS a také pro myšlenku zapouzdřených částí kódu obecně. A představuji si, že další metoda bude ještě zajímavější, jakmile webové komponenty získají širokou podporu.

Metoda funguje takto: používá vlastnost font-size, která vytváří základní jednotku pro různé prvky v modulu. Vzhledem k tomu, že jednotka em se vypočítává na základě velikosti písma nadřazeného prvku, umožňuje to snadno upravovat celou komponentu změnou vlastnosti velikosti písma nadřazeného prvku.

Podívejme se na to v akci:

Zobrazit demo

Tento modul se skládá ze čtyř hlavních prvků. Přesunutím posuvníku v horní části ukázkové stránky změňte velikost modulu. Pokud chcete, můžete si to prohlédnout PROTI režim celé obrazovky . Posuvník obsahuje jednu hodnotu pro kořenový prvek komponenty: hodnotu velikosti písma.

Je třeba poznamenat, že nastavení rozměrů součásti po jedné Vlastnost CSS volitelné, uživatel může změnit velikost v nastavení. To se provádí tak, aby vývojář mohl rychle provádět změny, aniž by je musel procházet různé významy ve všech částech součásti.

Když se změní velikost písma, ovlivní to všechny hodnoty em CSS nadřazeného prvku a také všechny jeho potomky, takže všechny části komponenty jsou proporcionálně flexibilní.

Všimněte si, že:

  • Uvnitř komponenty jsou všechny rozměry specifikovány pomocí em . Kromě vnějšího okraje a obrázku, který lze na přání změnit, jsem ale spokojen s velikostí, která je v tomto případě statická;
  • Ikona vpravo horní roh, který vypadá jako slza, je pseudoprvek, který podobně používá velikost písma svého nadřazeného prvku;
  • CSS také obsahuje dva dotazy na média, které upravují velikost písma nadřazeného prvku. Což ukazuje užitečnost této metody, protože v dotazech na média nemusíte měnit všechny velikosti, ale pouze velikost písma.

Nějaké komentáře, opomenutí atd..

Jak můžete vidět z příkladu, tento typ flexibilní změny velikosti není vždy tím, co byste měli použít. Může být poněkud omezen.

Možná budete muset upravit některé hodnoty jednotek em v CSS. A stejně jako u okraje nadřazeného prvku v příkladu pravděpodobně nebudete chtít měnit velikost. Protože vlastnost platí pro všechny prvky. Tento problém můžete vyřešit tím, že jednoduše opustíte ems prvků, které chcete zachovat.

K nastavení velikosti kořenového písma není třeba používat pixely. Můžete je k tomu použít, ale nezapomeňte, že tyto jednotky budou předány od rodičů.

A co Rem a Sass?

Jednotka rem v CSS vždy zdědí hodnotu velikosti písma kořenového prvku, bez ohledu na vypočítanou velikost písma. V HTML je kořenovým prvkem . Tímto způsobem můžete použít rem. To ale znamená, že budete muset ovládat všechny komponenty na stránce pomocí velikosti písma daného prvku. To může fungovat v některých projektech, ale myslím, že tato metoda funguje nejlépe při změně velikosti samostatná složka, nikoli celý dokument.

Ohledně použití Sass preprocesor, pak je to druhořadý problém. Nakonec CSS použije jakékoli jednotky uvedené v kódu Sass a dědění bude fungovat stejným způsobem.

Závěr

Tomu věřím dobrá metoda pro použití při vytváření frameworku CSS nebo knihovny komponent. Tato metoda přesvědčivě dokazuje jak mocný nástroj je jednotka em v CSS.

Překlad článku " Síla of em Units in CSS“ připravil přátelský projektový tým.

V CSS je několik vlastností, které berou jako hodnoty délku (nebo vzdálenost). Tyto vlastnosti zahrnují vlastnosti blokový model: šířka, výška, okraj, výplň, okraj. Existují ale i další vlastnosti, jako je offset a velikost stínu vlastnosti box-shadow nebo velikost či mezery písma. Jaké jednotky délky se běžně používají v CSS? Možností je mnoho.

Absolutní jednotky délky

Pixely px

.wrap (šířka: 400px; )

Pixel je možná nejlépe si představit jako „abstraktní veličinu“, protože nemá nic společného s fyzickým pixelem na vašem displeji.

CSS pixely- abstraktní hodnota používaná prohlížeči k přesnému zobrazení obsahu na stránkách bez ohledu na obrazovku.

Pixely jsou základní měrnou jednotkou na webu, a protože se zobrazují téměř rovnoměrně, mnoho délek se počítá v pixelech; stejný javascript „mluví“ v pixelech.

Palce v

.wrap (šířka: 4 palce; )

Palec (z nizozemského duim - palec) je jednotka měření vzdálenosti v některých evropských nemetrických systémech měr. V css jsou palce jednoduše mapovány na pixely. Je však třeba poznamenat, že palce se v CSS používají velmi zřídka.

1in == 96px

Centimetry cm

.zavinovačka (šířka: 20cm; )

Centimetr je jednotka délky v různých metrických systémech, která se rovná 0,01 metru. V css se také mapuje na pixely.

1 cm == 37,8 pixelů

Milimetry mm

.wrap (šířka: 200 mm; ) 1 mm == 0,1 cm == 3,78 px

Jednotky měření závislé na písmu

Em

.zabalit (šířka: 40em; )

Relativní jednotka měření. Při tisku se používají další jednotky měření - jedna z nich odpovídá šířce velké písmeno M. Hlavní vlastností, která ovlivňuje velikost písma, je velikost písma.

Bez jakéhokoliv dalšího pravidla css 1em funguje takto:

1m == 16px == 0,17 palce == 12 bodů == 1ks == 4,2 mm == 0,42 cm

Pokud změníte velikost písma v dokumentu, 1em se rovná aktuální (nastavené) velikosti písma.

Existují některé zdánlivě zvláštní věci. Pokud je prvek s velikostí písma 1,1 em obsažen v prvku s velikostí písma také 1,1 em a navíc sdílejí společného rodiče, jehož velikost písma je 1,1 em , pak výsledná výška písma vnořeného prvku sám bude 1,1 x 1,1 x 1,1 == 1,331 em . To znamená, že musíte vzít v úvahu následující: když prvku přiřadíte velikost písma rovnou například 10em , vůbec to neznamená, že kamkoli prvek vložíte, bude jeho písmo rovné 10em . Vše záleží na kontextu (viz důkazy).

Rem

.obal (šířka: 40rem; )

Nabídka Rems nejlepší alternativa em s. Fungují téměř stejně, až na jednu věc klíčový rozdíl: jednotky rem jsou vždy relativní k pevné základní hodnotě, konkrétně k velikosti písma kořenového prvku dokumentu (v případě HTML je to vždy html prvek).

Neúplná podpora prohlížeče: nefunguje v IE 8, Safari 4 nebo iOS 3.2.

Položky

.zabalit (šířka: 120pt; )

Body jsou měrnou jednotkou rovnající se 1/72 palce. Odstavce jsou mimo CSS velmi běžné (což je pravděpodobně důvod, proč jsou součástí CSS).

Body jsou skvělé pro tisk, ale nic vám nebrání body používat na webu. I když stojí za zmínku, že prohlížeče ne vždy zobrazují položky stejným způsobem.

Štika

.obal (šířka: 12ks; )

Stejný příběh jako u bodů, ale 1ks == 12pt .

.wrap (šířka: 60ex; )

Tato jednotka měření je založena na výšce x (malá písmena) aktuálního písma. Někdy je informace o výšce x zabudována do samotného písma, někdy prohlížeč tuto výšku vypočítá měřením výšky malých písmen a v nejhorším případě prohlížeč jednoduše nastaví tuto výšku na 0,5 em . Abyste pochopili, proč se používá výška x, představte si naviják, jako např malé písmeno d. X-height nezahrnuje tento návazec.

Na rozdíl od em s, které se při změně vlastnosti font-family nemění, jednotky ex se změní, když změníte hodnotu vlastnosti font-family (důkaz).

Ch

.obal (šířka: 60ch; )

V duchu se podobá x-height, ale místo x-height se použije šířka znaku 0, když se změní hodnota vlastnosti font-family.

Podpora prohlížeče: zapnuto momentálně není podporováno prohlížeči založenými na webkitu (safari, Yandex, chrome).

Procentuální jednotky délky založené na velikosti výřezu

Vw

.wrap (šířka: 10vw; )

Toto je šířka zobrazovací oblasti zařízení. 1vw se rovná 1% šířky výřezu. Trochu jako procenta, až na to, že prvky zadané pomocí jednotek vw již nejsou ovlivněny šířkou jejich nadřazených prvků.

Podpora prohlížeče: žádná není podporována mobilní prohlížeč, kromě ios6. To platí pro všechny relativní jednotky výřezu.

Vh

.wrap (šířka: 10vh; )

Stejně jako pouze VW tuto jednotku Měření nezávisí na šířce, ale na výšce pozorovací plochy zařízení.

Vmin

.obal (šířka: 20vmin; )

1vmin trvá 1vw nebo 1vh, podle toho, co je menší. Při určování velikosti standardní písmo vmin může být mnohem užitečnější než vh nebo vw.

Vmax

.obal (šířka: 20vmax; )

1vmin trvá 1vw nebo 1vh, podle toho, co je větší.

Podpora prohlížeče: Prohlížeče založené na webkitu podporují vmin, ale nepodporují vmax (zatím). Firefox podporuje vmax.

Zajímat

.zabalit (šířka: 50 %; )

Vzdálenost zadaná v procentech závisí na stejné vlastnosti nadřazeného prvku. Pokud má například prvek šířku 450 pixelů a jeho podřízený prvek má šířku 50 %, pak šířka podřízeného prvku je 225 pixelů.

Technicky procenta nemohou měřit délku, ale zahrnul jsem procenta tento článek, protože délka a procenta spolu souvisí.

Zmínil jsem nové (relativně) měrné jednotky. Tyto jednotky jsou vw, vh, vmin a vmax a jsou založeny na velikosti zobrazované oblasti prohlížeče. Jejich skutečná velikost se mění se změnou výřezu prohlížeče, díky čemuž jsou tyto jednotky ideální pro adaptivní design. I když v mém předchozí příspěvek Argumentoval jsem proti použití těchto jednotek k určení velikosti písma, mohou být velmi užitečné pro práci s prvky rozvržení.

Výhledové jednotky

Jednotky výřezu jsou relativní jednotky, což znamená, že je nelze objektivně měřit. Jejich velikost je určena velikostí výřezu prohlížeče. S výřezem souvisí čtyři jednotky.

Zaměřím se na první dva, protože jsou nejčastěji používané. V mnoha případech jednotky výřezu(vh a vw) se protínají s procenty z hlediska schopností. Každý z nich má však své silné a slabé stránky.

Když to shrnu, vypadá to takto:

Při řešení šířky je lepší % a při řešení výšky je lepší vh.

Prvky celé šířky stránky: % > vw

Jak jsem již řekl, vw určuje velikost prvku na základě šířky výřezu. Prohlížeče však vypočítají velikost na základě prostoru pro posuvník.

Pokud šířka stránky přesahuje šířku zobrazované oblasti, zobrazí se posuvník. Ve skutečnosti je však šířka výřezu větší než šířka prvku html

Výřez > html > tělo

Pokud tedy nastavíte šířku prvku na 100vw, prvek bude přesahovat limity html a tělo. PROTI v tomto příkladu Udělal jsem červený okraj kolem prvku html a vyplnil sekce různými barvami.

Kvůli této nuanci je lepší vytvářet prvky přes celou šířku stránky pomocí procent, než se spoléhat na šířku výřezu.

Prvky celé výšky stránky: vh > %

Při vytváření prvků, které musí mít stejnou výšku jako stránka, je mnohem lepší použít místo procent vh. Vzhledem k tomu, že procentuální velikost prvku je relativní k jeho rodičovskému prvku, můžeme získat výšku prvku stejná výška obrazovka pouze v případě, že její nadřazený prvek také zabírá celou výšku obrazovky. To znamená, že musíme umístit prvek jako pevný, aby se prvek html stal rodičem, nebo se uchýlit k použití nějakého hacku.

Použití vh k dosažení tohoto efektu je poměrně jednoduché:

Příklad ( výška: 100vh; )

Bez ohledu na to, jak je prvek .example vnořen, lze jeho rozměry nastavit relativně k rozměrům výřezu. Problém posouvání nás nebude obtěžovat, protože většina webů nemá vodorovný posuvník

Zde je několik příkladů použití jednotek vh.

Obrázky na pozadí celé obrazovky

Typickým použitím jednotky vh je tvořit obrázek na pozadí, který zabírá celou výšku a šířku obrazovky bez ohledu na velikost zařízení. To je docela snadné.

Bg ( pozice: relativní; pozadí: url("bg.jpg") střed/obálka; šířka: 100 %; výška: 100vh; )

Podobným způsobem můžeme vytvořit efekt „stránky“ tím, že každé sekci přidělíme rozměry výřezu.

Sekce ( šířka: 100 %; výška: 100vh; )

K vytvoření iluze otáčení stránek můžeme použít JavaScript.

$("nav").on("click", function() ( if ($(this).hasClass("dolů")) ( var movePos = $(window).scrollTop() + $(window).height (); ) if ($(this).hasClass("up")) ( var movePos = $(window).scrollTop() - $(window).height(); ) $("html, tělo"). animate(( scrollTop: movePos ), 1000 ))

Skládací obrázek

Vh lze také použít k ovládání velikosti obrázku na stránce. Například v rámci článku. Chceme zajistit, aby se jakýkoli obrázek zobrazil celý bez ohledu na velikost obrazovky.

Budeme potřebovat následující kód

Img ( šířka: auto; /* Automatická šířka bude úměrná výšce */ max-width: 100 %; /* Ne větší než šířka nadřazeného prvku */ max-height: 90vh; /* Ne větší než výška výřezu */ okraj: 2rem auto;

Podpora prohlížeče

Protože jsou tyto jednotky relativně nové, stále existují problémy s určitými prohlížeči.

Zde je návod, jak je vyřešit.




Nahoru