Autor Zpráva
CZghost
Profil
Potřeboval bych pomocí javascriptu dynamicky zobrazit obrázek v hlavičce na základě šířky okna. Mám dva obrázky, které zaměním, když změním šířku okna (například emulátorem mobilního prohlížeče). Má už kód, který se rozhoduje, kdy má použít ten a ten obrázek:
<script type="text/javascript">
if(document.body.clientWidth<557) document.write('<img id="header-textimage" src="./img/header_text_nologo.jpg alt="Střední průmyslová škola Resslova 5 Ústí nad Labem, středisko Resslova" />');
if(document.body.clientWidth>=557) document.write('<img id="header-textimage" src="./img/header_text.jpg alt="Střední průmyslová škola Resslova 5 Ústí nad Labem, středisko Resslova" />');
</script>
Požadovanou šířku okna jsem zjistil podle šířky obrázku. Ještě bych teda potřeboval tuto změnu dynamickou (změna šířky bez znovunačtení dokumentu). Zkusil jsem to přes atribut onresize na tagu body, ale ten, jak se zdá, nefunguje.
candiess
Profil
CZghost:
Tak proč nedáte atributu width elementu img plovoucí rozměry (x%)?
Chamurappi
Profil
Reaguji na candiesse:
Pravděpodobně načítá jinak vypadající obrázek.


Reaguji na CZghosta:
Zkusil jsem to přes atribut onresize na tagu body, ale ten, jak se zdá, nefunguje.
Funguje.

Já bych to napsal asi takhle:
(window.onresize = function()
{
  document.getElementById('ídéčko-obrázku').src = document.body.clientWidth < 557 ? "./img/header_text_nologo.jpg" : "./img/header_text.jpg";
})();
… a umístil skript těsně za dotyčný <img>.
CZghost
Profil
Chamurappi:
Děkuju, někdy to vyzkouším. Obrázek tvořím pomocí javascriptu se stejnou podmínkou, protože na mobilním zařízení nejde měnit šířka okna :-)
Teď na to nemám moc času :-)
Chamurappi
Profil
Reaguji na CZghosta:
Obrázek tvořím pomocí javascriptu se stejnou podmínkou
Proč? Ono je snad logo tak nedůležité, aby mohlo být zcela závislé na JS?
Můj kód tu funkci vykonávanou při onresize hned sám zavolá, žádné duplikování kódu není potřeba.
CZghost
Profil
Chamurappi:
Dobrá :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0