Autor Zpráva
petrfox
Profil *
FF 3.6 zvětšuje výšku DIVu o 3px oproti výšce vnořeného obrázku, ale jen pro DOCTYPE Strict. Nevím ale, co je to za chybu zobrazování.
Kód:
<html>	
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  </head>
  <body>
  </body>
  <script type="text/javascript" >
    father=document.createElement("div");
    father.style.background='red';
    father.style.position="absolute";
    document.body.appendChild(father);
    dvImg=document.createElement("img");
    //zdrojový soubor obrázku i1.jpg musí existovat
    dvImg.setAttribute('src','i1.jpg'); 
    father.appendChild(dvImg);
    //zobrazuje compatMode ve stavove liste - jen kdyz je povoleno prohlizecem
    window.status=document.compatMode;
   </script>
</html>   


Když před tento kód vložím definici striktního DOCTYPE, tedy:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
zobrazuje se pod obrázkem mezera 3px.
Naopak při "přechodném" doctype:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
je zobrazení v pořádku.

FF v obou případech hlásí režim CSS1Compat, bez DOCTYPE hlásí BackCompat - a v něm je zobrazení také bez nadbytečné mezery. Neznáte někdo nějaký hack?
Chamurappi
Profil
Reaguji na petrfoxe:
To je jedna z cca dvou věcí, v nichž se liší standardní a skoro-standardní režim Mozilly, viz Mozilla (ff) a převážně-standardní mód.

Neznáte někdo nějaký hack?
Proč hack? Řešení je snadné, viz Mezera pod obrázkem.
Nebo můžeš deklarovat ten první z uvedených <!doctypů>, stejně nemá žádný jiný praktický význam, než přepnutí režimu.

Mimochodem, proč nastavuješ zdroj obrázku přes setAttribute a ne přes prosté přiřazení do dvImg.src?
Volat document.body.appendChild před donačtením <body> je dost nebezpečné.
petrfox
Profil *
Chamurappi:
Dík. A to volání document.body.appendChild je jen tady v té ukázce - ve skutečnosti je to window.attachEvent... a window.addEventListener...

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