Autor Zpráva
lukigod
Profil
Dobrý den, tak nevím zda popis tématu přesně vystihuje co mám za problém. Mám DIV který má nějakou pohyblivou šířku a v něm dalších 10, které by měly být všechny stejně široké. Pokud ale zadám všem vnitřním divům šířku 10% tak u exploreru se mi ty divy seřadí od kraje do kraje (což předpokládám) ale u Chrome (počítám to samé bude firefox atd..) mi na konci vzniká mezera. Udělal jsem ještě to, že dám všem divům 9% šířku a po půl procentu oba krajní marginy. V IE výsledek očekávaný, ovšem Chrome bohužel ne. Přikládám dvě foto, jelikož to nemám nikde pověšené na netu a kód css.
Díky za rady

IE: takto předpokládám


CHROME: takto nechci

#kalendar div {
  width:9%;
  margin-left: 0.5%;
  margin-right:0.5%;
  float:left;
  position:relative;
  top:-60px;
  text-align:center;
  background-color: white;
  font-size: 85%;
  }


Díky Lukáš
Bubák
Profil
Sjednoť box modely.
lukigod
Profil
Bubák:
Díky, v tom bude zakopaný pes, ale jakým způsobem to použít nevím. Zkouším různě, ale stále je to stejné. Nastavil jsem divum
-webkit-box-sizing: border-box;
a nic :(. Jinak doctype mam nastavené:
<!DOCTYPE HTML>
nebude problém v tomto?? vše ostatní mi v tomhle modu funguje optimálně, proto jej takto mám.
Trejpa
Profil
lukigod:
<!DOCTYPE HTML>
Tohle přepne všechny prohlížeče do standardního režimu, kde je výchozím box modelem content-box. Tak ho neměň. Pokud už jsi ho něčemu nadřazenému změnil, tak ho u těch prvků zase vrať zpět:
-moz-box-sizing : content-box;
-webkit-box-sizing: content-box;
box-sizing: content-box;
lukigod
Profil
Trejpa:
no to ja tam mam tenhle doctype od zacatku, nic neměním. to já jsem dle rady bubáka chtěl nastavit Chromovi aby pocital sirku stejne jako IE, ale nedari se. mám pocit, že je problém hlavně v těch procentech, protože std šířky mi jdou jako normálně. Už jsem tady četl nějaký komentáře, ale jsem z toho tumpach :(
ja to asi někam pověsím, aby byl videt kod.. jestli to pomůže..
Trejpa
Profil
lukigod:
ja to asi někam pověsím, aby byl videt kod.. jestli to pomůže..
Obvykle to pomáhá.

je problém hlavně v těch procentech
Různé prohlížeče zaokrouhlují procenta různě, ale to by se na deseti prvcích vedle sebe projevilo maximálně o deset pixelů. Spíš bude problém v tom, z čeho se ty procenta počítají - a tady bych se opět zajímal o box model nadřazeného prvku.
lukigod
Profil
Trejpa:
no ja si ted tady různě čtu o box-modelech a všude se tak nějak píše, že explorer to vykresluje špatně. Ale mně to vykresluje tak jak já chci, ale ostatní prohlížeče ne. Zkouším tedy v IE8 ve standardním modu.
Ale jestli to dobre chapu, tak: explorer chybně počítá šířky prvků při použití width(height) zároveň s padding(resp.border). Což já tady nepoužívám. Zkusil jsem i nastavit natvrdo border na nulu a padding taky, ale Chrome zatvrzele nechává mezeru - nedopočítá se.
... o par minut pozdeji: tak jsem testoval když nebudu mit 9% a marginy po půl procentech ale stejnych deset divu po deseti procentech a zrovna budu mít okno otevřené tak, že div ve kterém leží těhle 10, bude mít šířku dělitelnou deseti tak je vše v pořádku.

Proste: mam div který má šířku dejmetomu 600px; a v něm je deset malých šířkou 10%. - Vše OK.
jakmile ten div je například 605px tak se u Chrome vytvoří vpravo mezera 5px;
..ach jo je to nějaký zamotaný
Trejpa
Profil
lukigod:
všude se tak nějak píše, že explorer to vykresluje špatně
Ale ne. Ve standardním režimu Internet Explorer od verze 6 vykresluje box model obsahový, tedy content box. Starší IE a nové ve zpětně kompatibilním režimu vykreslují box model okrajový, tedy border box. Do osmé verze IE to však nelze v CSS přepnout, takže se to řídí jen režimy podle použitého zápisu !DOCTYPE (nejjednodušší: neuvedu nic - zpětně kompatibilní; uvedu jen <!DOCTYPE HTML> - standardní).

Ale jestli to dobre chapu, tak: explorer chybně počítá šířky prvků při použití width(height) zároveň s padding(resp.border).
Pouze ve zpětně kompatibilním režimu (popis). Při použití <!DOCTYPE HTML> na úplném začátku stránky máš však jistotu standardního režimu.

mam div který má šířku dejmetomu 600px
Znáš-li přesnou velikost, tak se tím netrap - dopočítej si to a zadej přímo v pixelech. Potřebuješ-li to v procentech, tak sem dej živou ukázku, ať se na to můžeme podívat a třeba zjistit, zda je chyba ve stránce nebo jde o vlastnost konkrétního prohlížeče.

EDIT: Překlep.

<mimo téma>
explorer chybně počítá šířky prvků
Tady bych s autory těch textů polemizoval nad slovem „chybně“, spíš by problém vystihovalo slovo „jinak“. Box model má totiž dost pohnutou historii a ten „standardní“ obsahový nemusí být nutně lepší.
</mimo téma>
Bubák
Profil
Trejpa:
Různé prohlížeče zaokrouhlují procenta různě, ale to by se na deseti prvcích vedle sebe projevilo maximálně o deset pixelů.
Může to dělat i více, zaokrouhlit se musí šířka, levý margin, pravý margin, takže to může udělat až 3×10-1, tedy 29 pixelů.

lukigod:
Je to tím zaokrouhlováním.
IE8 ve standardním režimu a Firefox vyplní celý DIV, tyto prohlížeče to dělají tak, že některý z DIVů o 10% šířce je o 1px širší, nebo užší.
Takže DIV o šířce 10% z 605px bude někdy široký 60px, jindy 61px, aby se jich 10 akorát vešlo do 605px. Je zajímavé, že IE rozšířil jiné DIVy, než Firefox.

Opera a Chrome (přesněji WebKit) zaokrouhlují dolů, takže DIV o šířce 10% z 605px bude široký 60px.
Starší IE zaokrouhluje matematicky, takže DIV o šířce 10% z 605px bude široký 61px.

V případě 9% a 0.5% to bude ještě složitější.

Pokud požaduješ, aby tohle řešení vypadalo napříč prohlížeči stejně, asi nezbude nic jiného, než použít tabulku.
lukigod
Profil
Bubák & Trejpa
Děkuji všem (oběma :), už jsem v obraze.
A už jsem se smířil, že budu muset použít tabulku. Ono se to stejně bude vyplňovat daty z databáze, takže se to bude i sémanticky hodit :) Díky
PS: Budou někdy v budoucnu prohlížeče používat stejné režimy jakéhokoli vykreslování, nebo se s takovýmito věcmi budeme potkávat stále? (to jen tak mimo téma)..

Vaše odpověď

Mohlo by se hodit

Nezapomeňte na odkaz na živou ukázku problému.

Prosím používejte diakritiku a interpunkci.

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

0