Avatar billede -zonic- Nybegynder
31. oktober 2007 - 09:12 Der er 7 kommentarer og
1 løsning

fejl i z-index?

Hej, jeg har stirret mig blind på fejlen her, hvorfor min div ikke lægger sig i forgrunden for alt her.. skulle mene at alle mine z-index er 0 ned undtagelse af den div der skal fremhæves (1000)
www.skovbakken-badminton.dk/kalender.php
nogen der kan se fejlen?

kode:

<table align="center" width="100%" id="cal" border="0" cellspacing="1" cellpadding="0">
            <tr>
                <td class='mnav'><a title="Forrige måned" href="<?= $_SERVER['PHP_SELF'] . '?y=' . $lastmy . '&amp;m=' . $lastm ?>">&laquo;</a></td>
                <td class="hdr" colspan="6"><?= $mname . ' - ' . $thisy ?></td>
                <td class='mnav'><a title="Næste måned" href="<?= $_SERVER['PHP_SELF'] . '?y=' . $nextmy . '&amp;m=' . $nextm ?>">&raquo;</a></td>
            </tr>
            <tr>
                <th style="width: 50px">Uge</th>
                <th>Man</th>
                <th>Tir</th>
                <th>Ons</th>
                <th>Tor</th>
                <th>Fre</th>
                <th style="width: 75px">Lør</th>
                <th style="width: 75px">Søn</th>
            </tr>
<?php

    foreach ( $days as $wk => $dayar )
    {
        echo "<tr style=\"z-index:0;\">\n<td class=\"wkn\" style=\"z-index:0;\">$wk</td>\n";
        for ( $d = 0; $d < 7; $d++ )
        {
            $c = '';
            if ( $d == 5 )
            {
                $c .= ' satd';
            }
            elseif ( $d == 6 )
            {
                $c .= ' sund';
            }
            $tm = $thism;
            $ty = $thisy;
            if ( ( $wk == $startw && $dayar[$d] > 10 ) ||
                ( $wk == $endw && $dayar[$d] < 10 ) )
            {
                $c .= ' notnow';
                if ( $dayar[$d] > 10 )
                {
                    $tm = $lastm;
                }
                else
                {
                    $tm = $nextm;
                }
                if ( $thism == 1 && $dayar[$d] > 10 )
                {
                    $ty = $thisy - 1;
                }
                else if ( $thism == 12 && $dayar[$d] < 10 )
                {
                    $ty = $thisy + 1;
                }
            }
            $tstamp = mktime( 0, 0, 0, $tm, $dayar[$d], $ty );
            if ( $c != '' )
            {
                $c = ' class="' . $c . '"';
            }
            $td = sprintf( '%02d', $dayar[$d] );
            $typ = ( $d > 4 ? 'dwecnt' : 'dcnt' );
            $cb = '';
            printf( "<td$c valign='top' style=\"height:30px; z-index:0;\">\n<div class='%s' style=\"position:relative; z-index:0;\">\n<div class='date2' style=\"z-index:0;\">%d%s</div>\n", $typ, $td, $cb );
               
                include("includes/conn.php");
                $tal=1;
                $result = mysql_query("select * FROM kalender WHERE start_aar = $ty && start_mdr = $tm && start_dato = $td order by start_tid");
                while ($row = mysql_fetch_array($result)) {
                $start = strtotime($row['start_tid']);
                $start = date("H:i", $start);
                $stop = strtotime($row['slut_tid']);
                $stop = date("H:i", $stop);
                echo '<a id="boxnr' . $tal . $td . 'i" class="cal" onmouseover="showhide(' . "'" . 'boxnr' . $tal . $td . "'" . ');" onmouseout="showhide(' . "'" . 'boxnr' . $tal . $td . "'" . ');">' . '<img class="calicon" src="gfx/cal/st.png" alt="" border="0" style="z-index:0;" />' . $start . "-" . $stop . '</a>';
                echo '<div id="boxnr' . $tal . $td . 'c" style="border:1px solid #000000; position:absolute; visibility:hidden; display:none; z-index:0; height:100px; width:200px; background-color:#ffffff;">hej<br /></div>';
                ++$tal;
                }
               
            echo '</div></td>';
           
        }
        echo "</tr>\n";
    }
   
?>
        </table>
Avatar billede -zonic- Nybegynder
31. oktober 2007 - 09:24 #1
hov... der var lige en fejl i koden fra lidt test... den nederste z-index er 99.
Avatar billede Slettet bruger
31. oktober 2007 - 09:37 #2
er der ikke noget med at z-index kun gaelder for elementer som direkte har faaet sat position egenskaben
Avatar billede kinderaeg Nybegynder
31. oktober 2007 - 09:52 #3
Nej, det er fordi z-index gælder for elementer på samme niveau, problemet er, at når du sætter dine celler i tabellen til niveau 0 alle sammen, bliver de alle tegnet i samme lag, og dermed bliver de senest tegnede lagt oven på de først tegnede. Du skal altså give dine tabel-celler forskellige index i faldende orden, for at få det til at spille.
Avatar billede kinderaeg Nybegynder
31. oktober 2007 - 10:03 #4
http://www.aplus.co.yu/lab/z-pos/
Her er en god artikel om z-index, også i forhold til hvad der virker i de forskellige browsere.
Avatar billede -zonic- Nybegynder
31. oktober 2007 - 10:14 #5
okay.. kan du vise det med et lille eksempel i min kode?
Avatar billede kinderaeg Nybegynder
31. oktober 2007 - 10:38 #6
$zid = 9999;
foreach ( $days as $wk => $dayar ) {
...
  printf("<td$c valign='top' style=\"height:30px; z-index:".$zid--.";\">\n<div class='%s' style=\"position:relative; z-index:".$zid--.";\">\n<div class='date2' style=\"z-index:0;\">%d%s</div>\n", $typ, $td, $cb );
...
}
Det skulle gerne kunne gøres noget ala ovenstående, kan sikkert gøre mere behændigt, men det kan du jo altid rode lidt med, det er bare for at vise princippet ;)
Avatar billede -zonic- Nybegynder
31. oktober 2007 - 10:56 #7
du er jo genial :)

smid et svar! og mange tak for hjælpen!
Avatar billede kinderaeg Nybegynder
31. oktober 2007 - 11:12 #8
Ja det ved jeg nu ikke, men jeg har tidligere selv bøvlet en del med tilsvarende problemer ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester