home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 October / PCWorld_2004-10_cd.bin / novinky / interval / clanek03.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-09-12  |  25.5 KB  |  257 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='-1' />
  10. <meta name='robots' content='index,follow' />
  11. <meta name='googlebot' content='index,follow,snippet,noarchive' />
  12. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  13. <meta name='keywords' content='Interval' />
  14. <meta name='ICBM' content='49.1915, 16.626' />
  15. <meta name='DC.Title' content='Interval.cz' />
  16. <meta name='DC.Identifier' content='http://interval.cz' />
  17. <meta name='DC.Language' content='cs' />
  18. <meta http-equiv='pics-label' content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline EN v2.0" l gen true for "http://interval.cz" r (nz 1 vz 1 lz 1 oz 1 cz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://interval.cz" r (n 0 s 0 v 0 l 0))' />
  19. <meta http-equiv='imagetoolbar' content='no' />
  20. <meta http-equiv='MSThemeCompatible' content='no' />
  21. <meta name='MSSmartTagsPreventParsing' content='true' />
  22. <link rel='shortcut icon' type='image/x-icon' href='favicon.ico' />
  23. <link rel='alternate' type='application/rss+xml' title='RSS Interval.cz' href='http://interval.cz/__rss/rss.asp' />
  24. <link rel='home' href='http://interval.cz' />
  25. <link rel='search' href='http://interval.cz/search_ex.asp' />
  26. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  27. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/basic_all.css' />
  28. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/homepage_all.css' />
  29. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/articles_all.css' />
  30. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/articles_print.css' />
  31. <title>Interval.cz - webdesign a e-komerce denn∞</title>
  32. </head>
  33. <body class='interval interval-articles'>
  34. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  35. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  36. <div id='page-body'><div id='page-left'><div id='article'>
  37.  
  38.  
  39. <h2>Myslete elasticky s CSS</h2>
  40. <p id='prepend'>Myslet elasticky ve webdesignu znamenß urΦovat rozm∞ry strßnek ne napevno, ale v zßvislosti na preferencφch u₧ivatele û v zßvislosti na jeho velikosti pφsma a na velikosti okna prohlφ₧eΦe. ElastickΘ strßnky nemajφ problΘm se zobrazenφm tΘm∞° v ₧ßdnΘm za°φzenφ, nekladou u₧ivateli p°ekß₧ky. Ukß₧eme si tedy, jak pomocφ CSS nastavit relativn∞ velikost pφsma a jak se zbavit pevnΘ Üφ°ky strßnky.</p>
  41.  
  42. <h3>ProΦ myslet elasticky</h3>
  43. <p>V souΦasnosti si u₧ivatelΘ prohlφ₧ejφ webovΘ strßnky na r∙zn²ch za°φzenφch s r∙zn²mi preferencemi. Jmenujme nap°φklad PDA a podobnΘ vymo₧enosti s malou obrazovkou a tφm pßdem i mal²m oknem prohlφ₧eΦe, nebo klasickΘ poΦφtaΦe, jejich₧ rozliÜenφ se dnes pohybuje od 640 do 1 600 pixel∙ na Üφ°ku. V takov²ch podmφnkßch je stßle obtφ₧n∞jÜφ vystaΦit s pevnou Üφ°kou strßnky, proto₧e t∞₧ko vyhovφte jednou hodnotou souΦasn∞ malΘ obrazovce PDA a poΦφtaΦi s rozliÜenφm vφce ne₧ 1 000 pixel∙ na Üφ°ku.</p>
  44. <p>Vedle tohoto vznikajφcφho problΘmu se ji₧ dlouho pot²kßme i s problΘmem druh²m û prohlφ₧eΦ Microsoft Internet Explorer pro Windows (MSIE) neumo₧≥uje u₧ivateli zm∞nit velikost pφsma, pokud je v CSS nastavena pomocφ absolutnφch jednotek, vΦetn∞ pixel∙. To by snad jeÜt∞ ani nebyla takovß tragΘdie, kdyby ale MSIE nem∞lo nainstalovßno p°es 90 % u₧ivatel∙ internetu. (T∞₧ko °φct, jestli je chovßnφ MSIE v tomto p°φpad∞ sprßvnΘ nebo chybnΘ. Mo₧nß by se nßm stejn∞ tak nelφbilo, kdyby umo₧≥oval pφsmo s absolutnφ velikostφ zv∞tÜovat.)</p>
  45. <p>Nechat u₧ivatele ovlivnit velikost pφsma strßnky je urΦit∞ dobrß v∞c, kdy₧ uvß₧φme, kolik lidφ nosφ br²le nebo mß jinΘ problΘmy. Proto je t°eba nastavovat pφsmo strßnky relativn∞, s Φφm₧ jsou spojeny dalÜφ problΘmy. Nynφ se na n∞ podφvßme.</p>
  46.  
  47. <h3>Jak nastavit relativn∞ velikost pφsma</h3>
  48. <p>K nastavenφ velikosti pφsma, kterß byla nastavena u₧ivatelem v prohlφ₧eΦi, staΦφ jedinΘ û nenastavovat ₧ßdnou velikost pro prvek <code><body></code>, nastavit pouze v∞tÜφ Φi menÜφ pφsmo pomocφ procent tam, kde to pot°ebujeme, nap°φklad u nadpis∙.</p>
  49. <p>V²chozφ velikost pφsma v prohlφ₧eΦi (pokud ji u₧ivatel po instalaci nezm∞nφ) je ale obvykle p°φliÜ velkß a nehodφ se nßm do grafickΘho pojetφ strßnky. Proto budeme chtφt nastavit velikost, kterß je p°ibli₧n∞ osmdesßtiprocentnφ oproti v²chozφ velikosti v prohlφ₧eΦi. To se d∞lß v∞tÜinou takto...</p>
  50.  
  51. <div class='sample'>
  52. body {
  53. <br />  font-size: 0.8em;
  54. <br />}
  55. </div>
  56.  
  57. <p>...nebo takto:</p>
  58.  
  59. <div class='sample'>
  60. body {
  61. <br />  font-size: 80%;
  62. <br />}
  63. </div>
  64.  
  65. <p>Zde je ale kßmen ·razu! Pokud nastavφme pφsmo jednφm z t∞chto zp∙sob∙ a zkusφme ho zmenÜit nebo zv∞tÜit v prohlφ₧eΦi, zjistφme, ₧e rozdφly mezi jednotliv²mi stupni velikosti jsou p°φliÜ velkΘ (u jednotek <em>em</em> v∞tÜφ ne₧ u procent). Nap°φklad v MSIE u₧ p°i "malΘ" velikosti pφsma dostaneme tΘm∞° neΦitelnou velikost. Tento problΘm se ale t²kß i ostatnφch prohlφ₧eΦ∙, nap°φklad Mozilly.</p>
  66. <p>╪eÜenφm je pou₧φt klφΦovß slova pro nastavenφ velikosti pφsma, v naÜem p°φpad∞ slovo <em>small</em>. KlφΦovß slova jsou ale Üpatn∞ interpretovßna v MSIE 5.x, proto musφme pou₧φt hack. Pro MSIE 5.x pou₧ijeme klφΦovΘ slovo <em>x-small</em>, kterΘ nastavuje jeÜt∞ o stupe≥ menÜφ pφsmo, proto₧e MSIE 5.x mß posunutΘ v²znamy t∞chto klφΦov²ch slov. Pro ostatnφ prohlφ₧eΦe nastavφme <em>small</em> pomocφ zkrßcenΘho Tantekova hacku.</p>
  67.  
  68. <div class='sample'>
  69. body {
  70. <br />  font-size: x-small;
  71. <br />  fo\nt-size: small;
  72. <br />}
  73. </div>
  74.  
  75. <p>Nynφ ji₧ jsou rozestupy mezi r∙zn²mi stupni velikosti pφsma v po°ßdku. ProΦ ale zp∙sobujφ procenta a <em>em</em> takovΘ problΘmy a klφΦovß slova fungujφ, to se m∙₧eme jen dohadovat. Podle mΘho nßzoru je to zap°φΦin∞no r∙zn²mi aproximacemi p°i poΦφtßnφ skuteΦnΘ velikosti pφsma, kdy u procent a <em>em</em> jich je urΦit∞ vφce ne₧ u klφΦov²ch slov, jejich₧ ΦφselnΘ hodnoty si m∙₧e prohlφ₧eΦ podle sv²ch pot°eb upravit.</p>
  76.  
  77. <h4>ProblΘmy s n∞kter²mi elementy v MSIE</h4>
  78. <p>V MSIE se po pou₧itφ hodnoty <em>small</em> na <code><body></code> vykreslujφ prvky <code><samp></code>, <code><code></code> a <code><kbd></code> menÜφm pφsmem, ne₧ by m∞ly. Proto se vyplatφ p°idat do CSS jeÜt∞ pßr °ßdek:</p>
  79.  
  80. <div class='sample'>
  81. samp, code, kbd {
  82. <br />  font-size: 90%;
  83. <br />}
  84. </div>
  85.  
  86. <p>P°i devadesßtiprocentnφ velikosti vypadß neproporcißlnφ pφsmo (jφm₧ jsou tyto prvky vykresleny) uvnit° normßln∞ psanΘho textu asi nejlΘpe, jak m∙₧e a nenaruÜuje tolik jeho tok jako p°i stoprocentnφ velikosti.</p>
  87. <p>TakΘ m∙₧ete u₧ivatele nechat ovlßdat pφsmo ve formulß°ov²ch prvcφch:</p>
  88.  
  89. <div class='sample'>
  90. input, select, button, textarea {
  91. <br />  font-size: 100%;
  92. <br />}
  93. </div>
  94.  
  95. <p>Po tomto nastavenφ se i v nich bude pφsmo zv∞tÜovat a zmenÜovat podle p°ßnφ u₧ivatele.</p>
  96.  
  97. <h3>Jak se osvobodit od pevnΘ Üφ°ky</h3>
  98. <p>Jak jsme si ji₧ °ekli, v souΦasnosti bychom p°i nßvrhu vzhledu strßnky m∞li poΦφtat jak s mal²mi, tak velk²mi obrazovkami (a tφm pßdem s r∙zn²mi velikostmi okna prohlφ₧eΦe). M∞li bychom tedy d∞lat strßnky <strong>elastickΘ</strong>, kterΘ se automaticky p°izp∙sobujφ velikosti okna (proto₧e p°φliÜ ÜirokΘ strßnky v malΘm okn∞ se Üpatn∞ pou₧φvajφ a p°φliÜ ·zkΘ strßnky ve velkΘm okn∞ Üpatn∞ vypadajφ). Samoz°ejm∞ nenφ mo₧nΘ d∞lat elastickΘ strßnky ve vÜech p°φpadech, pokud nap°φklad pot°ebujeme na strßnku nasklßdat hodn∞ grafiky nebo chce zadavatel stejn² vzhled za vÜech okolnostφ, pravd∞podobn∞ pou₧ijeme pevnou Üφ°ku. Troufßm si ale tvrdit, ₧e v∞tÜina web∙ se bez nφ m∙₧e obejφt.</p>
  99. <p>A jak provΘst osvobozenφ od pevnΘ Üφ°ky prakticky? Nenastavovat Üφ°ku strßnky vlastnostφ <em>width</em> a mφsto nφ zaΦφt pou₧φvat vlastnosti <em>min-width</em> pro minimßlnφ Üφ°ku (d∙le₧itß kv∙li mal²m obrazovkßm) a <em>max-width</em> pro maximßlnφ Üφ°ku (d∙le₧itß kv∙li vyÜÜφm rozliÜenφm). SpoleΦn∞ nßm tyto vlastnosti umo₧≥ujφ nastavit jakΘsi rozmezφ. Podle konkrΘtnφho webu je t°eba se rozhodnout, jestli pou₧φt tyto vlastnosti pro celou strßnku a Üφ°ku jejφch Φßstφ nastavit procentußln∞, nebo takto omezovat jejφ Φßsti zvlßÜ¥ û nap°φklad hlavnφ obsah, sloupeΦky a podobn∞.</p>
  100.  
  101. <h4>TextovΘ bloky</h4>
  102. <p>U textov²ch blok∙ bychom m∞li vlastnosti <em>min-width</em> a <em>max-width</em> nastavovat podle velikosti pφsma. Tu jsme ale nastavili relativn∞, zßle₧φ tedy na u₧ivatelov∞ prohlφ₧eΦi. Skv∞le nßm v tomto p°φpad∞ poslou₧φ jednotka <em>em</em>, kterß nßm umo₧nφ nastavit rozmezφ Üφ°ky v zßvislosti na velikosti pφsma v prvku:</p>
  103.  
  104. <div class='sample'>
  105. #obsah {
  106. <br />  min-width: 18em;
  107. <br />  max-width: 30em;
  108. <br />}
  109. </div>
  110.  
  111. <p>Otßzka znφ, jakΘ hodnoty se pro textovΘ bloky hodφ. Obecn∞ se mφnφ, ₧e ke Φtenφ je vhodnß Üφ°ka od 40 do 65 znak∙ na °ßdek. Je tedy t°eba zjistit, kterß hodnota zajistφ pot°ebn² poΦet znak∙ na °ßdek p°i vÜech mo₧n²ch velikostech pφsma. Provedl jsem pokusy s r∙zn²mi pφsmy a doÜel jsem k nßsledujφcφm hodnotßm:</p>
  112.  
  113. <div class='table'>
  114. <table cellspacing='0'>
  115. <tr><th>Pφsmo</th><th>èφ°ka pro 40 znak∙</th><th>èφ°ka pro 65 znak∙</th></tr>
  116. <tr><td>Arial</td><td>18 em</td><td>30 em</td></tr>
  117. <tr><td>Times</td><td>16 em</td><td>26 em</td></tr>
  118. <tr><td>Verdana</td><td>21 em</td><td>34 em</td></tr>
  119. <tr><td>Georgia</td><td>19 em</td><td>31 em</td></tr>
  120. </table>
  121. </div>
  122.  
  123. <p>VhodnΘ hodnoty se liÜφ podle typu pφsma, co₧ je zp∙sobeno r∙zn²m pom∞rem Üφ°ky a v²Üky znak∙ u jednotliv²ch pφsem. Pokud se s tφm ale nechcete zase tolik "babrat", m∙₧ete se smφ°it s urΦit²mi nep°esnostmi a pou₧φvat jedny hodnoty pro vÜechna pφsma.</p>
  124.  
  125. <h4>Grafickß zßhlavφ</h4>
  126. <p>V souvislosti s grafikou a elastick²mi strßnkami m∙₧ete pou₧φt jeden trik. ╪ekn∞me, ₧e mßte v hlaviΦce obrßzek na pozadφ p°es celou Üφ°ku strßnky û s pevnou Üφ°kou jste v CSS mohli pou₧φt nßsledujφcφ:</p>
  127.  
  128. <div class='sample'>
  129. #hlavicka {
  130. <br />  background: url("zahlavi.gif") no-repeat;
  131. <br />  width: 750px;
  132. <br />}
  133. </div>
  134.  
  135. <p>S pou₧itφm elastickΘ Üφ°ky by to ale dopadlo takto:</p>
  136.  
  137. <div class='sample'>
  138. #hlavicka {
  139. <br />  background: url("zahlavi.gif") no-repeat;
  140. <br />  max-width: 750px;
  141. <br />  min-width: 250px;
  142. <br />}
  143. </div>
  144.  
  145. <p>V druhΘm p°φpad∞ m∙₧e mφt hlaviΦka r∙znou Üφ°ku. To ale obrßzku nevadφ, proto₧e se ho zobrazφ pouze takovß Φßst, aby se do hlaviΦky veÜel. Dokonce m∙₧ete nastavit maximßlnφ Üφ°ku i v∞tÜφ ne₧ 750 pixel∙ a cel² obrßzek ud∞lat v∞tÜφ û v₧dy se ho zobrazφ pouze takovß Φßst, jakß je pot°eba.</p>
  146.  
  147. <h4>Co zvß₧it, na co si dßt pozor</h4>
  148. <p>Pou₧φvßnφ minimßlnφch a maximßlnφch Üφ°ek je daleko slo₧it∞jÜφ na mo₧nΘ kombinace ne₧ pevnß Üφ°ka, hlavn∞ v kombinaci s jednotkou <em>em</em>. P°i nßvrhu vzhledu strßnky je tedy t°eba v₧dy p°em²Ület a zkouÜet, jak bude strßnka vypadat ve velkΘm a jak v malΘm okn∞, jak ji ovlivnφ nastavenφ v∞tÜφho Φi menÜφho pφsma a podobn∞.</p>
  149.  
  150. <h3>Zprovozn∞nφ max-width v MSIE</h3>
  151. <p>Prohlφ₧eΦ MSIE bohu₧el nepodporuje vlastnosti <em>min-width</em> ani <em>max-width</em>. V p°φpad∞ vlastnosti <em>min-width</em> to tolik nevadφ (je d∙le₧itß hlavn∞ kv∙li mal²m obrazovkßm), ale <em>max-width</em> je ji₧ bolestivß ztrßta, proto₧e bez nφ se m∙₧e strßnka na vysok²ch rozliÜenφch roztßhnout tak, ₧e u₧ z nφ u₧ivatel nebude moci nic p°eΦφst.</p>
  152. <p>Programßto°i Microsoftu sice neimplementovali v²Üe uvedenΘ vlastnosti, ale zavedli specißlnφ CSS hodnoty <code>expression(v²raz)</code> (viz <a href='http://msdn.microsoft.com/workshop/author/dhtml/overview/recalc.asp'>About Dynamic Properties</a>), kde "v²raz" je vyhodnocen pomocφ JavaScriptu a jeho v²sledek je pou₧it jako hodnota pro danou vlastnost. Prßv∞ s pomocφ tΘto hodnoty <em>max-width</em> nahradφme:</p>
  153.  
  154. <div class='sample'>
  155. #hlavicka {
  156. <br />  max-width: 750px;
  157. <br />  min-width: 250px;
  158. <br />  width: 751px;
  159. <br />  width: expression((document.getElementById("hlavicka").currentStyle.width == "751px") ? "auto" : (document.getElementById("hlavicka").offsetWidth > 750 ? "750px" : "auto"));
  160. <br />}
  161. </div>
  162.  
  163. <p>Jak vidφte, testujeme skuteΦnou Üφ°ku prvku a pokud je v∞tÜφ ne₧ 750 pixel∙, nastavφme Üφ°ku na t∞chto 750 pixel∙.</p>
  164. <p>Krom∞ toho se musφme n∞jak vypo°ßdat se situacφ, kdy jsou vypnutΘ skripty, v takovΘm p°φpad∞ toti₧ <code>expression()</code> nefunguje. Proto jsme p°ed°adili naÜφ deklaraci jeÜt∞ jednu deklaraci, kterß nastavuje pevnou Üφ°ku 751 pixel∙. V hodnot∞ <code>expression()</code> pak tuto Üφ°ku zruÜφme. Tato pevnß Üφ°ka nesmφ b²t stejnß jako Üφ°ka, kterou jsme urΦili jako maximßlnφ, jinak by se v²poΦet <code>expression()</code> zacyklil (po prvnφm p°ekroΦenφ maximßlnφ Üφ°ky by se stßle dokola nastavovaly hodnoty "auto" a "750px").</p>
  165.  
  166. <h4>Skrytφ deklaracφ p°ed ostatnφmi prohlφ₧eΦi</h4>
  167. <p>Ob∞ nastavenφ vlastnosti <em>width</em> ve v²Üe uvedenΘ ukßzce jsou ale urΦena jen pro MSIE, v ostatnφch prohlφ₧eΦφch by m∞la dopad, o kter² nestojφme. Proto musφme tyto dv∞ deklarace p°ed ostatnφmi prohlφ₧eΦi n∞jak skr²t. Pro tento ·Φel m∙₧eme pou₧φt <a href='http://www.pixy.cz/blog/2003_11_archiv.html#1069419461'>podtr₧φtkov² hack</a> û na zaΦßtek jmΘna vlastnosti se umφstφ podtr₧φtko, co₧ zajistφ, ₧e tuto vlastnost interpretuje jen MSIE:</p>
  168.  
  169. <div class='sample'>
  170. #hlavicka {
  171. <br />  max-width: 750px;
  172. <br />  min-width: 250px;
  173. <br />  _width: 751px;
  174. <br />  _width: expression((document.getElementById("hlavicka").currentStyle.width == "751px") ? "auto" : (document.getElementById("hlavicka").offsetWidth > 750 ? "750px" : "auto"));
  175. <br />}
  176. </div>
  177.  
  178. <p>Podtr₧φtkov² hack zp∙sobφ, ₧e naÜe CSS bude nevalidnφ, proto₧e <a href='http://www.w3.org/TR/CSS21/'>specifikace CSS</a> o ₧ßdnΘ vlastnosti <em>_width</em> nemluvφ. Zßrove≥ ale tato specifikace °φkß, ₧e v nßzvu vlastnosti se smφ vyskytovat podtr₧φtko a ₧e prohlφ₧eΦe majφ ignorovat neznßmΘ vlastnosti. Proto by ostatnφ prohlφ₧eΦe m∞ly deklaraci <em>_width</em> ignorovat a pokraΦovat dalÜφ Φßstφ p°edpisu (jeho sprßvnΘmu parsovßnφ tato deklarace nezabra≥uje).</p>
  179. <p>Pokud chcete mφt sv∙j stylov² p°edpis validnφ, m∙₧ete pou₧φt ke skrytφ obou deklaracφ druhou mo₧nost, takzvanΘ <a href='http://interval.cz/clanek.asp?article=896' title='R∙₧iΦka, Pavel: Podmφn∞nΘ komentß°e v Internet Exploreru'>podmφn∞nΘ komentß°e</a>. StaΦφ umφstit do hlaviΦky strßnek tento k≤d:</p>
  180.  
  181. <div class='sample'>
  182. <!--[if IE]>
  183. <br /><link rel="stylesheet" type="text/css" href="styl-ie.css" />
  184. <br /><![endif]-->
  185. </div>
  186.  
  187. <p>Prohlφ₧eΦ MSIE naΦte v takovΘm p°φpad∞ do strßnky dalÜφ stylov² p°edpis, ve kterΘm m∙₧ete uvΘst vÜechny deklarace urΦenΘ jen pro n∞j (tedy i naÜe dv∞ deklarace Üφ°ky). Ostatnφ prohlφ₧eΦe budou tento zßpis chßpat sprßvn∞ jako (X)HTML komentß° a nic nenaΦtou. Udr₧φte si tak sv∙j stylov² p°edpis validnφ, na druhou stranu bude muset MSIE nahrßvat o jeden soubor CSS navφc, co₧ m∙₧e vykreslovßnφ strßnky zpomalit. Vyberte si sami °eÜenφ, kterΘ je vßm bli₧Üφ.</p>
  188.  
  189. <h4>ProΦ nenahrazovat min-width</h4>
  190. <p>V tΘto chvφli si takΘ m∙₧eme vysv∞tlit druh² d∙vod, proΦ nenahrazovat <em>min-width</em> pomocφ <em>expression()</em>. Pokud si u₧ivatel otev°e odkaz na naÜi strßnku v MSIE do novΘho okna, je toto okno minimalizovanΘ. Velmi pravd∞podobn∞ by se v takovΘm p°φpad∞ nastavila Üφ°ka prvku (pomocφ <code>expression()</code>) na svoji minimßlnφ hodnotu. Jak jste si ale ji₧ mo₧nß vÜimli, jakmile je takto Üφ°ka nastavena na urΦitou hodnotu, prvek si ji ponechß za vÜech okolnostφ a ji₧ se pomocφ <code>expression()</code> nezm∞nφ (proto₧e hodnota <samp>document.getElementById("hlavicka").offsetWidth</samp> bude ji₧ napo°ßd stejnß). To znamenß, ₧e i po maximalizaci okna by si prvek ponechal minimßlnφ Üφ°ku, co₧ jist∞ nenφ ideßlnφ (vzhledem k tomu, ₧e otevφrßnφ nov²ch oken nenφ nic neobvyklΘho).</p>
  191.  
  192. <h4>Nahrazenφ max-width v em</h4>
  193. <p>Zp∙sobem, kter² jsme si prßv∞ popsali, je tedy mo₧nΘ nahradit vlastnost <em>max-width</em> v p°φpad∞, ₧e ji uvßdφte v pixelech. Nynφ si ukß₧eme, jak tuto vlastnost nahradit v p°φpad∞, ₧e je nastavena pomocφ jednotky <em>em</em>:</p>
  194.  
  195. <div class='sample'>
  196. #obsah {
  197. <br />  min-width: 18em;
  198. <br />  max-width: 30em;
  199. <br />  width: 30.1em;
  200. <br />  width: expression((document.getElementById("obsah").currentStyle.width == "30.1em") ? "auto" : (document.getElementById("obsah").offsetWidth >= (parseInt(document.documentElement.currentStyle.fontSize) <= 10 ? ((parseInt(document.documentElement.currentStyle.fontSize) - 1) * 4/3 * 30) : ((parseInt(document.documentElement.currentStyle.fontSize) - 2) * 4/3 * 30)) ? "30em" : "auto"));
  201. <br />} 
  202. </div>
  203.  
  204. <p>Postup je podobn² jako v p°edchozφm p°φpad∞, i kdy₧ to tak podle dΘlky k≤du nevypadß. Jedin² rozdφl je v tom, jak se zjiÜ¥uje maximßlnφ Üφ°ka v pixelech, kterß mß pro prvek v danΘ chvφli platit (v p°edchozφm p°φpad∞ bylo na tomto mφst∞ pouze Φφslo "750"). Musel jsem takΘ pou₧φt neostrou nerovnost, proto₧e s ostrou mi MSIE z mn∞ nepochopiteln²ch d∙vod∙ padal.</p>
  205. <p>Abychom zφskali maximßlnφ Üφ°ku v pixelech, musφme nejprve zjistit velikost pφsma v bodech (pt) v dokumentu (p°edpoklßdßm, ₧e v naÜem prvku je tato velikost stejnß, pokud ne, bylo by to t°eba ve skriptu zohlednit). Vynßsobenφm tΘto velikosti Φty°mi t°etinami zφskßme velikost pφsma v pixelech (Φφslo "4/3", respektive jeho aproximaci, pro tento p°epoΦet prohlφ₧eΦe opravdu pou₧φvajφ) a tuto velikost vynßsobφme t°iceti (proto₧e Üφ°ka mß b²t <samp>30em</samp> a jedno em je rovno velikosti pφsma prvku v pixelech), Φφm₧ zφskßme maximßlnφ Üφ°ku v pixelech pro prvek.</p>
  206. <p>Nynφ k tomu, jak zjistit velikost pφsma dokumentu v bodech. Nem∙₧eme k tomu pou₧φt vlastnost <em>currentStyle</em>, proto₧e ta obsahuje pouze p°i°azenΘ, ne p°epoΦφtanΘ hodnoty (p°i°azenß hodnota je v naÜem dokumentu <samp>small</samp>). Ud∞lal jsem tedy n∞jakΘ pokusy a zjistil jsem nßsledujφcφ:</p>
  207.  
  208. <div class='list'>
  209. <ul>
  210. <li>MSIE nabφzφ u₧ivateli p∞t zßkladnφch velikostφ pφsma - 9 pt pro "nejmenÜφ", 10 pt pro "malΘ", 12 pt pro "st°ednφ", 14 pt pro "velkΘ" a 16 pt pro "nejv∞tÜφ". Velikost vybranß u₧ivatelem je nastavena pro dokument a relativnφ velikost, kterou nastavujeme pro <code><body></code>, se od nφ odvozuje.</li>
  211. <li>Pokud nastavφme pro <code><body></code> pφsmo <em>small</em>, celß stupnice se posune û 8 pt bude pro "nejmenÜφ", 9 pt pro "malΘ", 10 pt pro "st°ednφ", 12 pt pro "velkΘ" a 14 pt pro "nejv∞tÜφ".</li>
  212. </ul>
  213. </div>
  214.  
  215. <p>Abychom zjistili velikost pφsma dokumentu v bodech, staΦφ nßm tedy zφskat u₧ivatelem nastavenou velikost (pomocφ <samp>document.documentElement.currentStyle.fontSize</samp>) a p°evΘst ji na hodnotu odpovφdajφcφ <em>small</em>.</p>
  216. <p>Jednß se o vcelku slo₧it² v²poΦet, kter² vÜak dßvß p°esnΘ v²sledky. Vy mu ale rozum∞t p°φliÜ nemusφte, staΦφ vßm upravit si m∙j zßpis pro svΘ pot°eby (pravd∞podobn∞ pouze ·pravou hodnoty maximßlnφ Üφ°ky). Samoz°ejm∞ byste op∞t m∞li ob∞ deklarace skr²t p°ed ostatnφmi prohlφ₧eΦi, bu∩ podtr₧φtkov²m hackem nebo pomocφ podmφn∞n²ch komentß°∙.</p>
  217.  
  218.  
  219.  
  220. <div id='article-author'>
  221. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=92'>Snφ₧ek, Martin</a> (9. 8. 2004)
  222.  
  223. </div>
  224.  
  225.  
  226. </div></div>
  227. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  228. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  229.  
  230.  
  231.  
  232. <div class='page-right-box book'>
  233.     <h3>Kni₧nφ novinka</h3>
  234.     <div class='page-right-box-in'>
  235.         <div class='book-top'>
  236.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=254'>Macromedia Flash MX 2004, oficißlnφ v²ukov² kurz</a></h4>
  237.         </div>
  238.         <div class='image'>
  239.             <img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  240.         </div>
  241.         <div class='book-bottom'>Cena: <span class='book-price-old'>550 KΦ</span> <span class='book-price-new'>495 KΦ</span></div>
  242.     </div>
  243. </div>
  244.  
  245.  
  246.  
  247. <div class='page-right-box reading'><h3 title='NejΦten∞jÜφ Φlßnky za poslednφch 7 dn∙'>NejΦten∞jÜφ</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3549'>Hrßtky s okrajem textu v CSS</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3527'>Manußly aneb Jak jsem se nauΦil ned∞lat si starosti a mφt rßd internet</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3528'>PφÜeme pro web - odliÜte se od konkurence</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3546'>Zamezenφ vφcenßsobnΘho odeslßnφ formulß°e JavaScriptem</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3550'>Nßvrh aplikacφ v jazyce UML - textovß specifikace p°φpad∙ u₧itφ</a></li></ul></div></div><div class='page-right-box cauldron'><h3 title='Nejdiskutovan∞jÜφ Φlßnky za poslednφch 21 dn∙'>Diskuznφ kotel</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3533' title='(55 komentß°∙)'>Editory pro webdesignΘry - velk² programßtor</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3529' title='(40 komentß°∙)'>Zaklφnadla na spam</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3527' title='(22 komentß°∙)'>Manußly aneb Jak jsem se nauΦil ned∞lat si starosti a mφt rßd internet</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3517' title='(21 komentß°∙)'>PφÜeme pro web - podle Φeho se zßkaznφci rozhodujφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3549' title='(16 komentß°∙)'>Hrßtky s okrajem textu v CSS</a></li></ul></div></div>
  248.  
  249.  
  250.  
  251. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  252. </div>
  253. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  254. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  255. </body>
  256. </html>
  257.