| Autor | Zpráva | ||
|---|---|---|---|
| nethor Profil |
#1 · Zasláno: 25. 7. 2011, 15:36:38
Mám layout, kde má být menu s pevnou šířkou vlevo a obsah s pevnou šířkou na středu zbytku stránky:
<style type="text/css" media="all">
<!--
.menu {
width: 230px;
float: left;
background-color: #cc0;
}
.obsah {
width: 762px;
background-color: #0cc;
margin: 0px auto ;
float: none;
text-align: left;
}
.obal {
text-align: center;
float: none;
margin: 0px 0px 0px 240px ;
background-color: #c0c;
}
//-->
<body>
<div class="menu">
menu <br>menu<br> menu
</div>
<div class="obal">
<div class="obsah">
<h2 style="clear:both;">nadpis</h2> <!-- zde je problém -->
obsah <br>abcd <br>
</div>
</div>
</body>
Vše funguje dokud v 'obsahu' nepoužiju clear:both; pak nadpis odskočí až pod úroveň menu. (Tento problém je ve FFoxu, chromu, Opeře. V IE funguje jak je žádoucí. ) Měl jsem za to , že vlastnost clear platí v rámci přímo nadřazeného elementu, ne globálně. Předesílám, že článek vnořené divy a float jsem četl, včetně sovisejících. Ale rozchodit se mi to stejně nedaří. Živý příklad Předem díky za pomoc |
||
| Elcid Profil |
#2 · Zasláno: 25. 7. 2011, 15:50:55
co takto?
<style type="text/css" media="all">
.menu {
width: 230px;
float: left;
background-color: #cc0;
}
.obsah {
width: 762px;
background-color: #0cc;
margin: 0px auto;
text-align: left;
}
.obal {
text-align: center;
padding-left:230px;
background-color: #c0c;
}
</style>
|
||
| nethor Profil |
#3 · Zasláno: 25. 7. 2011, 16:44:48
Elcid:
Stále stejný problém. |
||
| Elcid Profil |
#4 · Zasláno: 25. 7. 2011, 17:51:21
nethor:
jasne.. napsal jsem tu blbost. toto přímo k něčemu potřebuješ, nebo je to teoreticke zamyšlení? |
||
| Davex Profil |
#5 · Zasláno: 25. 7. 2011, 19:16:43
nethor:
Clear bude působit pouze v bloku .obsah, pokud ho také rozplaveš. |
||
| nethor Profil |
#6 · Zasláno: 25. 7. 2011, 19:51:54
Davex:
díky, už jsem měl radost , že jsem to obešel:
<style type="text/css" media="all">
<!--
.menu {
width: 230px;
float: left;
background-color: #cc0;
}
.obal {
text-align: center;
float: none;
margin: 0px 0px 0px 240px ;
background-color: #c0c;
}
.obsah {
width: 762px;
background-color: #0cc;
margin: 0px auto ;
float: none;
text-align: left;
}
.float {
width: 100%;
float: left;
text-align: left;
}
//-->
</style>
</head>
<body>
<div class="menu">
menu <br>menu<br> menu
</div>
<div class="obal">
<div class="obsah">
<div class="float">
<h2 style="clear:both;">nadpis</h2>
obsah <br>abcd <br>
</div>.
</div>
</div>
</body>
Ale takhle se mi zase začal zalamovat obsah pod menu v IE při okně menším než 1000px. :( V podstatě řeším, jak provést bez tabulky toto: <table border="0" width='100%'> <tr> <td width='230' valign='top'> menu </td> <td align='center' valign='top'> <div style="width:762px;"> <h2 style="clear:both;">nadpis</h2> obsah <br>abcd <br> </div> </td> </tr> </table> Jde to řešit s .menu {position: absolute;} , ale to mázase jiné nevýhody. Zvažuju, jestli v tomto není lepší vrátit se případě zpět k tabulkovému layoutu. |
||
| Davex Profil |
#7 · Zasláno: 25. 7. 2011, 22:13:10
V Exploreru 8 by s tím problém být neměl. Explorer 7 a starší se pokouší odskočením vyřešit situaci, kdy se bloky nevejdou vedle sebe do vyhrazeného prostoru, což je v tvém případě šířka stránky, kterou si nechal na prohlížeči. Nastav stránce šířku, která bude minimálně součtem šířek .menu a .obsah.
|
||
| nethor Profil |
#8 · Zasláno: 26. 7. 2011, 08:49:13
Davex:
pravda v IE8 to funguje. „Nastav stránce šířku, která bude minimálně součtem šířek .menu a .obsah.“ Popravdě nevím přesně jak. Takhle?: body , html {min-width: 1005px;}To začalo fungovat i v IE7 , diky , ale od IE6 níž ne, nevím jak na to ani mě nanapadá žádný _hack . |
||
| Davex Profil |
#9 · Zasláno: 26. 7. 2011, 18:27:19
Nastavuješ minimální šířku, kterou IE6 nepodporuje. Použij vlastnost
width.
|
||
| nethor Profil |
#10 · Zasláno: 26. 7. 2011, 18:55:55
Davex:
Samozřejmě. Ale width neznám ani v px ani v %. Když nastavím body , html {width: 1005px;} K tomu, co pořebuji slouží vlastnost min-width , kterou <= IE6 nepodporuje. To nevím, jak fixnout. |
||
| Davex Profil |
#11 · Zasláno: 26. 7. 2011, 19:07:26
V tom případě nevím, jak chceš aby se to chovalo. Menu a obsah mají pevnou šířku, takže proč potřebuješ nastavit
min-width?
|
||
| nethor Profil |
#12 · Zasláno: 26. 7. 2011, 19:34:35
Má být menu s pevnou šířkou vlevo a obsah s pevnou šířkou na středu zbytku stránky.
S tím, že když je šířka okna menší než (menu + obsah) nesmí se obsah zalomit pod menu (vše se bude scrollovat horizontálně). Tabulkou to jde prvést celkem snadno: <table border="0" width='100%'> <tr> <td width='230' valign='top'> menu </td> <td align='center' valign='top'> <div style="width:762px;"> <h2 style="clear:both;">nadpis</h2> obsah <br>abcd <br> </div> </td> </tr> </table> Obdobný živý příklad s tabulkou |
||
| YoSarin Profil |
#13 · Zasláno: 26. 7. 2011, 19:58:26
nethor:
Nechová se v IE6 width defacto stejně jako min-width ve FF & spol? A co expression, to by nešlo? width: expression(document.body.clientWidth < 850 ? "850px" : document.body.clientWidth + "px"); (dlouho jsem nepoužil, kdyžtak googli) |
||
| panther Profil |
#14 · Zasláno: 26. 7. 2011, 22:24:01
YoSarin:
„Nechová se v IE6 width defacto stejně jako min-width ve FF“ nechová. |
||
| YoSarin Profil |
#15 · Zasláno: 26. 7. 2011, 23:35:27
panther:
Nerad to tu zasypávám nadbytečným offtopicem, ale kde konkrétně je ten rozdíl? Pokud se dobře pamatuju, tak jsem si takhle už párkrát pomohl a nenarazil jsem na nějaké konkrétní úskalí a ani teď při googlení (pravda, možná trochu povrchním) jsem nenarazil na to co na tom dělá problémy (ale, pravda, narazil jsem na spoustu článků, které popisují řešení min-width pro IE6 složitějšími postupy, takže tam nějakou zradu očekávám...) |
||
| panther Profil |
#16 · Zasláno: 27. 7. 2011, 06:25:24 · Upravil/a: panther
YoSarin:
„kde konkrétně je ten rozdíl?“ že se tak prostě nechová. „tak jsem si takhle už párkrát pomohl a nenarazil jsem na nějaké konkrétní úskalí“ ukaž konkrétní příklad, kde sis tak „pomohl“. Místo minimální šířky jsi nastavil jen obyčejnou, pevnou, šířku. Kdyby se totiž jako min-width chovalo width, zhroutila by se drtivá většina layoutů s fixními rozměry. Hádej proč. |
||
| YoSarin Profil |
#17 · Zasláno: 27. 7. 2011, 10:45:29
panther:
Já se jdu stydět do kouta, nějak jsem to pomotal - většinou jsem to řešil sice přes width ale pomocí expression... (alespoň jestli dobře chápu své předpotopní kódy) |
||
| Davex Profil |
#18 · Zasláno: 27. 7. 2011, 21:47:22
nethor:
„obsah s pevnou šířkou na středu zbytku stránky“ Pokud nebudou mít 2 % uživatelů vystředěno na zbytku stránky, tak se nic moc nestane. Pokud na tom trváš, tak zkus expression, nech to v tabulce nebo menu napozicuj, ale dle mého názoru to nestojí za to. |
||
| peteruu Profil * |
#19 · Zasláno: 28. 7. 2011, 17:13:02
toto len citujem z jedneho clanku: " Dalším (ač se to nezdá) problémem je nastavení minimální výšky levého, pravého, i středního (hlavního) sloupce. Z estetického hlediska je totiž vhodné, aby tyto měly nějakou minimální výšku, aby i v případě, že jejich obsah není dostatečný, jejich spodní hrana končila až kousek pod spodní hranou okna prohlížeče. V případě Mozilly a Opery 7+ to není problém, stačí nastavit procentní hodnotu (100% nebo o něco víc) vlastnosti min-height. S Internet Explorerem je to trochu komplikovanější. Explorer totiž min-height vůbec nezná, ale můžeme mu podstrčit vlastnost height, kterou Internet Explorer zpracuje podobně, jako ostatní prohlížeče min-height. Pouze nesmíme zapomenut tuto přenastavit zpět na auto (pomocí selektoru potomka), jinak by i ostatní prohlížeče použili height"
no a tady je priklad: .levy
{
background: silver;
font-size: 180%;
border: thin solid black;
position: absolute;
top: 120px;
left: 10px;
width: 150px;
height: 120%;
min-height: 120%;
padding: 5px 0;
overflow: hidden;
overflow-y: visible;
}
*>.levy
{
height: auto;
}uprav si podla seba snad ti to pomohlo. |
||
|
Časová prodleva: 15 let
|
|||
0