Autor Zpráva
YOYO
Profil
Ahoj,
kamarád si udělal grafický návrh hodin a požádal mne, abych mu je rozpohyboval, což nebyl zas takový problém (ale k javasript kódu se můžete vyjádřit taky, určitě není dokonalý) viz živá ukázka, ale trápí mne trochu vzhled, mám tam nějaký takovýhle kód:
<html>
<head>
<style>
*{
  margin: 0;
  padding: 0;
}
html, body{
  height: 100%;
  margin:0px auto;
  text-align: center;
  background: #eee
}
canvas {
  margin:1% auto;
  max-height: 95%;
  background: #a11 url("dial.png") no-repeat center center;
  background-size: contain;
}
</style>

<script>
//script vykreslující ručičky hodin do canvasu
</script>

</head>
<body>
  <canvas id=canvas width=900 height=900>
  </canvas>
</body>
</html>


v chrome a firefoxu se to vykresluje přesně tak jak chci, tedy:
1.) obrázek je vycentrovaný
2.) je vysoký podle velikosti okna
3.) šířka v nezměněném poměru

ale v IE a opeře se ten canvas (podbarvený červeně) roztáhne, takže jsou ručičky deformované (pozadí ne, díky background-size: contain;)
jak dosáhnou kýženého výsledku ve všech prohlížečích? pokud možno jen za pomoci css
bukaJ
Profil
Ve stylopise máte uveden
canvas {max-height: 95%;}

a ten se uplatňuje a přebíjí rozměry 900px nastavené u elementu. Zvažte, jaké použití hodin očekáváte.

Každopádně je max-height podle mě zbytečný. Hodiny budete mít buď ve stránce v určeném boxu a nebo případě jejich velikost upravte javascriptem podle velikosti okna.

Veřím, že by se řešení pomocí CSS našlo i pro vaše potřeby, ale to přesahuje mé schopnosti. Doufám, že jsem alespoň trochu pomohl.
YOYO
Profil
to mám úmyslně attribut height (který se ani nezadává s jednotkou px) je vnitřní rozlišení canvasu pro potřeby vykreslování/kreslení atd, to je něco jiného, než css vlastnost height, která udává zobrazovanou velikost prvku,...
max-height místo jen height mám proto, aby v případě, že je velikost body větší, než velikost obrázku, se ten nezvětšoval (nerozpixelovával),.. jde mi o to, aby byly vždy zobrazené celé hodiny a aby zabíraly co možná největší prostor a nebyly deformované

problém je asi v tom, že si browsery různě vykládají width:auto (které je tam automaticky, když není nic uvedeno)
bukaJ
Profil
Jasně, ale dělá to problémy.

Navrhuji při načtení stránky překontrolovat její rozměry a upravit velikost canvasu. Stejně je to na JS závislé, tak výhody CSS tu nejsou zase tak markantní.
YOYO
Profil
bukaJ, dík za návrh
Tak jsem to nakonec vyřešil tím javascriptem, dokonce se to přizpůsobuje v obou osách a ani to moc nebolelo,..
kdyby někoho zajímalo jak, tak výsledek mého dosavadního snažení najde na http://time.yo2.cz/

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0