Autor Zpráva
Amunak
Profil
Zdravím, mám na webu pozadí které se opakuje každých dvacet pixelů. Vypadalo by to lépe, kdyby pozadí končilo tam, kde končí opakování. Zkoušel jsem to vyřešit takovýmto skriptem:
el_poz = document.getElementById('pozadi');
el_zve = document.getElementById('zvetsovaci');
rep = 20;
el_zve.style.height = (Math.ceil(el_poz.offsetHeight/rep)*rep - el_poz.offsetHeight) + 'px';
kde "pozadí" je nějaký element s pozadím a má neznámou velikost. Na jeho konci je neviditelný element "zvětšovací" který může nabývat velikosti 0-19px tak, aby se "pozadí" doplnilo vždy do dvaceti pixelů. Skript funguje, ale nejspíš něco počítám špatně, protože pozadí nekončí tam kde má.

Když si navíc vypíšu Offset, Scroll nebo Client Height toho pozadí, má podezřele malé rozměry - ukazuje asi o 200px méně, než to ve skutečnosti má.


Řešení je překvapivě jednoduché. Stačilo to navázat na onload místo předpokládání domReady na konci dokumentu. Nedošlo mi, že donačtení obrázků způsobí změnu výšky toho elementu.
peta
Profil
Margin, padding, border muze mit vliv na rozmer. Ja bych to napsal jako:
h = el_poz.offsetHeight;
el_zve.style.height = Math.ceil( h / rep ) * rep + 'px';

Nevim, ceho chces docilit odectenim cele vysky...
Math.ceil(h/rep)*rep - h)
h = 1030
rep = 50
Math.ceil(h/rep) = 20
20*rep = 1000
1000 - 1030 = -30
Stejny vysledek bys dostal ze vzorce -h%rep
Amunak
Profil
peta:
ani jeden z elementů nemá ani margin, ani padding, ani border. Tady by mě navíc zajímal maximálně padding, který by pozadí protáhl. Nějak nechápu ten výpočet dole, moc nedává smysl. Nechtěl bys to zapsat normálně v javascriptu, ayb bylo poznat, co kam přiřazuješ a jak s tím pracuješ?

Odečtením celé výšky docílím toho, že získám výšku, kterou je potřeba přidat (tedy výšku na kterou je třeba roztáhnout ten průhledný element). Kdybych dostal -30, je mi to k ničemu, potřebuji první vyšší hodnotu, ne nižší. Pravda ale je, že zbytek po dělení by asi nějak šel použít. Tak jak to mám mi to každopádně funguje a nevím, jestli do toho chci vrtat.
panther
Profil
Amunak:
nevím, jestli jsem tě zcela pochopil, ale mělo by stačit nastavit výšku takto. Nebo se pletu?
el_zve.style.height = Math.ceil(el_poz.offsetHeight % rep)
Amunak
Profil
panther:
U tohohle vzorce je ještě třeba odečíst to od rep (protože potřebuji vlastně doplněk ke zbytku, ne zbytek po dělení). Je to ale elegantnější, takže to použiji, díky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0