Diskuze: Zjištění výšky
V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 21 zpráv z 21.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.
Záleží na konkrétním problému, ale obecně v CSS pouze nastavuješ. Pravděpodobně budeš muset využít JS.
Ty to zrovna pochopíš asi nejlíp Mám pevně danou výšku elementu(header) a v tom je sticky menu. Jenže když je zařízení menší výška zůstává stejná, chtěl jsem nastavovat výšku podle výšky obrázku(ten má width 100% takže se mění) napřesno a ne to dělat přes media. Na to je asi potřeba js, že?
Jo na to potřebuješ js
Achjo, js nějak nechápu...i pres přečtení zakladu a zakladu jquery, ale diky
window.onload = function() {
var vyska = document.getElementById("obrazek").style.height;
document.getElementById("menu").style.height = vyska;
} ;
Obrázku nastav id obrazek a menu nastav id menu.
Snad je to správně, i když ne zrovna elegantně (píšu to na mobilu)
Ak by ti stačilo zachovávať proporcie prvku, využi percentuálnej hodnoty paddingu. Tá sa vždy počíta od šírky prvku.
div {
width: 100%;
height: 0;
padding-bottom: 100%;
}
vytvorí presný štvorec... Za height si môžeš dať aj inú hodnotu. Slúži ako akýsi modifikátor. Pohraj sa s tým a sám uvidíš.
Otázkou je, či toto je to, čo požaduješ. Podľa obrázku úplne inde v dokumente výšku nenastavíš. Ak by si poznal pomer jeho strán, týmto to môžeš simulovať.
Špatně jsem se vyjádřil. V hlavičce je fotka a menu. Je to v jednom,elementu a tomu potrebuju zmenšovat výšku.
A kde je problém? Ak je všetko v jednom prvku, na čo potrebuješ zisťovať a nastavovať výšku? Niečo sa tam napočíta: http://kod.djpw.cz/djvb... Skús si zmenšovať okno. Mení sa aj výška divu.obal bez toho, aby trebalo niečo počítať. Ak nechceš používať img, ale iný prvok, ktorému nastavíš pozadie v CSS, použi ten hack: http://kod.djpw.cz/ejvb.
Ak chceš vidieť ukážky na celej obrázovke, pridaj si za adresu mínusko.
Po delší pauze
No já asi nevím jak to popsat.. Snad pomůže když se podíváš na live
verzi. www.matmasar.wz.cz
Když si zmenšíš okno tak je tam mezera, protože header má nastavenou
výšku 225px, aby to při smooth scrollu( a sticky menu ) neškubal. Zkus si to
v prvku vypnout, třeba poochopíš jak to myslím
Spôsobuje to fixne nastavená výška prvku #menu.
Ja by som to pozadie nastavil prvku #menu, vymazal odtiaľ <img> (na dekoračné účely slúži CSS) a navigáciu absolútne napozicioval naspod. Nejako takto: http://kod.djpw.cz/pkvb
Bohužiaľ, je nutné poznať proporcie a hodnotu nastavovať pre dva prvky (prípadne si spoj dva selektory, aby bolo pohodlnejšie hodnotu zmeniť).
Neviem, či v CSS existuje riešenie, ktoré by nevyžadovalo poznať rozmery obrázku a bolo všeobecne funkčné. Súčasné má aspoň dobrú podporu.
Pozerám, že navigáciu máš na spodnej hrane hlavičky. To by šlo takto: http://kod.djpw.cz/qkvb
Deklarácia top: 100% zariadi, že sa prvok napoziciuje presne na spodnú hranu (najbližšieho nadradeného) obmedzujúceho bloku (div.hlavicka).
No já vím. Samozřejmě, že by se to dalo předělat do css ale tím bych si stejně problém nevyřešil.
Jde to bez Javascriptu, obrázek můžeš nastavit jako pozadí a nastavit mu background-size na cover. To funguje fajn
S tím ještě souvisí background position center center Možná funguje i jeden center, nechce se mi to teď hledat
Podľa mňa tu bolo nastienené funkčné riešenie bez JavaScriptu... Je taký problém poznať proporcie obrázku? V tvojom prípade, by si potreboval odsadiť o presne 16,625%...
Ak máš v pláne obrázok meniť, meraj si JavaScriptom výšku divu.hlavicka + výšku .nav a nastav to ako horný margin obsahovej časti.
Jestli si to myslel takhle
window.onload = function() {
var vyskaHeaderu = document.getElementByTagName("header");
var vyska = vyskaHeaderu.offsetHeight();
document.getElementById("Reference-weby").style.marginTop = vyska;
} ;
Tak to nefunguje, nevím jak jinak si to myslel.
V tvojom headeri je predsa obrázok poziciovaný. Musíš merať výšku obrázku. Myslel som, že budeme vychádzať z môjho kódu.
Inak, myslím, že existuje iba getElementsByTagName. Aj tak mi ale príde rozumnejšie využiť metódu getElementById().
Díky, výsledný fungující kód
window.onload = function() {
var vyskaHeaderu = document.getElementById("zahlavi");
var vyska = vyskaHeaderu.offsetHeight;
document.getElementById("menu").style.height = vyska;
} ;
Akorád, když měníš šířku okna, tak to nefunguje, protože se js neaktualizuje(to stejné s pozicí navu). Nedá se nějak při změně šířky aktualizovat js?
Není to snad to samé, co jsem psal já?
No asi jo, ale když jsem pozměnil ten tvůj, jak jsi psal, tak to nefungovalo tak nevím
Zobrazeno 21 zpráv z 21.