| Autor | Zpráva | ||
|---|---|---|---|
| Mufna Profil |
#1 · Zasláno: 19. 1. 2009, 17:59:00
Zdravím Vás. Mám problém s cleanerem (kupodivu jen v FF) - IE je v pohodě. Mám konstrukci používající PHP:
$i=0;
echo "\n".'<!-- Block Start -->'."\n";
echo '<div class="floatImages">'."\n";
echo '<div class="floatImages_in">'."\n";
while ($row=mysql_fetch_array($res)) {
$i++;
show_items($row);
if ($i != $num_rows) {
if ($i%3==0) {
echo '</div>'."\n";
echo '<div class="cleaner"><hr /></div>'."\n";
echo '</div>'."\n"; tady jsem zkoušel různě prohazovat ukončovací divy a clerovací div, ale nic nepomohlo
echo '<!-- Block End -->'."\n";
echo "\n".'<!-- Block Start -->'."\n";
echo '<div class="floatImages">'."\n";
echo '<div class="floatImages_in">'."\n";
}
}
}
echo '</div>'."\n";
echo '<div class="cleaner"><hr /></div>'."\n";
echo '</div>'."\n";tady jsem to taky zkoušel prohazovat
echo '<!-- Block End -->'."\n";
funkce show_items() se nachází v requirovaném souboru a část související s CSS vypadá takto:
function show_items() {
echo '<div>';
echo '<p><b>'.$row["submitter"].'</b></p>';
if (strlen($row["submitter_desc"])!=0) {
echo '<p>'.$row["submitter_desc"].'</p>';
}
foreach ($images as $image) {
if ($image!="" && file_exists($script_thumbs_dir.$image.'.jpg'))
echo '<p>'.wrt_img($script_thumbs_dir.$image.'.jpg').'</p>';
}
echo '<p>'.$row["description"].'</p>';
echo '</div>'."\n";
}
No a CSS načítané do hlavičky každé stránky vypadá takhle:
div.floatImages {
/* clear:both; */ zkoušel jsem to, nepomáhá
width:650px;
margin-top:2px;
border-top:1px solid #53254f;}
div.floatImages_in {
/* clear:both; */ zkoušel jsem to, nepomáhá
margin:10px 0 10px 0; tady je zakopaný pes, dolní margin v FF nejde, je jakoby 0
min-height:50px;kromě toho taky se nenatáhne bckgr, když je div delší, to taky nechápu
_height:50px;
background: url(../images/bg_dot_floatimgs.gif) 0 0 repeat-y;}
div.floatImages_in div {
float:left;
width:216px;}
Můžete se na to prosím někdo podívat. Už fakt nevím, kde je nějaká chyba. Myslím, že to souvisí s clearováním, ale vyzkoušel jsem snad už všechny možnosti a pořád nic. |
||
| SwimX Profil |
#2 · Zasláno: 19. 1. 2009, 18:06:38
když odstraním phpko zbyde mi cca todle:
div.floatImages {
width:650px;
margin-top:2px;
border-top:1px solid #53254f;}
div.floatImages_in {
margin:10px 0 10px 0;
_height:50px;
background: url(../images/bg_dot_floatimgs.gif) 0 0 repeat-y;}
div.floatImages_in div {
float:left;
width:216px;}
<div class="floatImages">
<div class="floatImages_in"></div>
<div class="cleaner"><hr /></div>
</div>
čeho chceeš přesně docílit? byla by ukázka? třeba div.floatImages_in div todle ničemu nenáleží. Nikde neni div uvnitř divu div.floatImages_in |
||
| Mufna Profil |
#3 · Zasláno: 19. 1. 2009, 18:13:35
SwimX
Nikde neni div uvnitř divu div.floatImages_in Je, v té funkci
function show_items() {
echo '<div>';
echo '<p><b>'.$row["submitter"].'</b></p>';
if (strlen($row["submitter_desc"])!=0) {
echo '<p>'.$row["submitter_desc"].'</p>';
}
foreach ($images as $image) {
if ($image!="" && file_exists($script_thumbs_dir.$image.'.jpg'))
echo '<p>'.wrt_img($script_thumbs_dir.$image.'.jpg').'</p>';
}
echo '<p>'.$row["description"].'</p>';
echo '</div>'."\n";
}
No, teď jsem si něco vyzkoušel, a vypadá to, že ten margin tam je. Takže možná je to spíš tak, že IE ho dělá větší, takže to budu muset ošetřit pro IE. Ale pořád mi zůstává problém, a to ten, že se nenatáhne background na celou výšku divu (pouze v FF), pokud mu nastavím min-height, tak je dlouhý jen dle této hodnoty.
div.floatImages_in {
margin:10px 0 10px 0;
min-height:50px;
_height:50px;
background: url(../images/bg_dot_floatimgs.gif) 0 0 repeat-y;}
|
||
| SwimX Profil |
#4 · Zasláno: 19. 1. 2009, 18:17:02
Mufna
„Je, v té funkci“ tak to omluva, nevšim sem si.. Takže máš x divů float" left a pod nimy div obsahující hr. Nevidím žádné css pro .cleaner. Zkus zrušit div a nechat jenom <hr style="clear: both;"> a přečíst si: http://www.pixy.cz/pixylophone/2003_12_archiv.html#1071056082 |
||
| Mufna Profil |
#5 · Zasláno: 19. 1. 2009, 18:21:08
SwimX
Nevidím žádné css pro .cleaner.
.cleaner { clear:both;
height: 0;
content: ' ';
overflow:hidden;}
.cleaner hr, .nodisplay {
display:none;}
<hr style="clear: both;"> Uvidíme, zkusím |
||
| Mufna Profil |
#6 · Zasláno: 19. 1. 2009, 18:33:33 · Upravil/a: Mufna
No, myslím, že to mám přesně tak, jak uvádí Pixy:
<div id="vnejsi-blok-s-pozadim-a-rameckem"> <div id="sloupec1-float-left">...</div> <div id="sloupec2-float-right">...</div> <hr class="cistic"> </div> Když vynechám div.floatImages (který v tomto případě nic neřeší - nekazí), tak mám: <div class="floatImages_in"></div> <div>prvni float blok</div> <div>druhy float blok</div> <div>treti float blok</div> <div class="cleaner"><hr /></div> </div> Když vynechám (ve smyslu neřeším teď) ten nešťastný cleaner, tak se mi stejně nezobrazuje background na plnou výšku rodičovského divu - resp. zobrazuje, ale jenom v IE. Tohle fakt nechápu. |
||
| Plaváček Profil |
#7 · Zasláno: 19. 1. 2009, 18:38:04 · Upravil/a: Plaváček
Mufna
Zkus nadřazenému bloku (tedy tomu, kde máš všechny plovoucí prvky) nastavit vlastnost overflow:hidden. Čili tohle by mohlo zabrat:
.floatImages_in {overflow:hidden}
Taky pomůže, když bloku .cleaner nebudeš nastavovat display:none, protože v tom případě vlastně v dokumentu neexistuje a nemůže plnit svou funkci. Lepší by asi bylo visibility:hidden. |
||
| Mufna Profil |
#8 · Zasláno: 19. 1. 2009, 18:43:52
Plaváček
pomůže, když bloku .cleaner nebudeš nastavovat display:none To není nastavený bloku, ale jen elementu hr. Funguje mi to dobře (v jiném kódu na ostatních stránkách webu nemám s cleanerem žádné problémy), jen v týhle konstrukci mi to: 1) dělá asi větší spodní margin v IE 2) nenatahuje se v FF background |
||
| Mufna Profil |
#9 · Zasláno: 19. 1. 2009, 18:46:33
Plaváček
tohle by mohlo zabrat: .floatImages_in {overflow:hidden} Vypadá to, že jo. Díky. |
||
|
Časová prodleva: 17 let
|
|||
0