Avatar billede nickyc Nybegynder
22. februar 2007 - 10:37 Der er 14 kommentarer

Skift farve på td ved rollover

HEy alle...

Har en menu, det jeg gerne vil er at når man kører musen over på <td> skal den skifte baggrundsfarve, men fx, også når man har klikket på et link i menuen skal den få et class name der fx kunne hedde "current" - men ved ik lige helt hvordan og hvorledes?

Min menu

Function RtrnMenuLinks($Doc_ID){

    $i = 1;
    $sql = "SELECT * FROM dokumenter WHERE parent_page IS NULL AND active = '1' ORDER BY doc_id";
    $result = mysql_query($sql);
    echo '<table cellpadding="4" cellspacing="0" border="0">';
    echo '<tr>';
    while($row = mysql_fetch_assoc($result)) {
        echo "<td><A href='index.php?pageid=".$row['doc_id']."' onMouseover=\"dropdownmenu(this, event, menu".$i.", '200px')\" onMouseout=\"delayhidemenu()\">".$row['title']."</A></td>";

        $i++;
    }
    echo '</tr></table>';
}
Avatar billede anderseiler Nybegynder
22. februar 2007 - 12:05 #1
Det skal ikke laves i php. Det skal laves i JavaScript. Men kan da godt hjælpe alligevel :)

<?php

$rollovercolor = "#FF0000"; //RØD når musen kører over
$rollbackcolor = "#00FF00"; //GRØN når musen forsvinder igen.

?>

<td onMouseOver="this.style.backgroundColor='<?php print $rollovercolor; ?>; onMouseOut="this.style.backgroundColor='<?php print $rollbackcolor; ?>';" >


Hvordan du får den til at skifte class ved jeg ikke lige umiddelbart. Men med ovenstående skifter den i hvert fald baggrundsfarve når musen kører henholdsvis over og væk fra <td>'en :)


Mvh
Anders Eiler
www.anderseiler.dk :)
Avatar billede coderdk Praktikant
22. februar 2007 - 13:23 #2
Eksempel:

<style>
.norm {
    background-color: #ccc;
}
.hot {
    background-color: #fee;
}
</style>
<table width="100%">
    <tr>
        <td class="norm" onmouseover="this.className='hot'" onmouseout="this.className='norm'">
            Hejsa
        </td>
    </tr>
    <tr>
        <td class="norm" onmouseover="this.className='hot'" onmouseout="this.className='norm'">
            Hej igen
        </td>
    </tr>
</table>
Avatar billede mccookie Seniormester
22. februar 2007 - 14:40 #3
Hej du'

Prøv evt. at kigge her ;)

http://www.webdesign101.dk/www/cssmenu/index.php
Avatar billede coderdk Praktikant
22. februar 2007 - 14:54 #4
nickyc, Alternativt kan du sætte gøre det med A:

<style>
#tabel a {
    display: block;
    background-color: #ccc;
}
#tabel a:hover {
    background-color: #fee;
}
</style>
<table id="tabel" width="100%">
    <tr>
        <td>
            <a class="navn" href="blah">blah</a>
        </td>
    </tr>
    <tr>
        <td>
            <a class="navn" href="blah">blah</a>
        </td>
    </tr>
</table>
Avatar billede coderdk Praktikant
22. februar 2007 - 14:54 #5
class="navn" er ikke nødvendig - glemte at fjerne det :)
Avatar billede nickyc Nybegynder
22. februar 2007 - 22:38 #6
Ok, tak for svar, men får en lille syntakts fejl, kan sq ik lige se hvad der er galt?

echo "<td class='mennorm' onmouseover='this.className=\"menover\" onmouseout='this.className=\"mennorm\">
<A href='index.php?pageid=".$row['doc_id']."' onMouseover=\"dropdownmenu(this, event, menu".$i.", '200px')\" onMouseout=\"delayhidemenu()\">".$row['title']."</A></td>";
Avatar billede coderdk Praktikant
22. februar 2007 - 23:00 #7
Du manglede et par '

echo "<td class='mennorm' onmouseover='this.className=\"menover\"' onmouseout='this.className=\"mennorm\"'>
<A href='index.php?pageid=".$row['doc_id']."' onMouseover=\"dropdownmenu(this, event, menu".$i.", '200px')\" onMouseout=\"delayhidemenu()\">".$row['title']."</A></td>";
Avatar billede nickyc Nybegynder
26. februar 2007 - 20:07 #8
Ok, men det ser stadig ikke helt ud til at virke....

Se på www.musikkentiljeresbryllup.dk/index.php
--------------------------------------------------------
Mit css ser sådanne ud:

#menu .menover {
    color: #FFF;
    background-color: #911919;
}

#menu .mennorm a {
    color: #000;
    background-color: #FFF;
}

#menu .menover a: {
    color: #FFF;
    background-color: #911919;
}

#menu a:hover {
    color: #911919;
}

#dropmenudiv{
    position:absolute;
    padding: 2px 0 0 0;
    border-bottom-width: 0;
    /*font: normal 10px Verdana;*/
    line-height:18px;
    z-index:100;
}

#dropmenudiv a{
    display: block;
    text-indent: 1px;
    border-bottom: 0px solid;
    padding: 1px 4px;
    text-decoration: none;
    border-bottom: 1px solid #FFF;
    text-align: left;
    color: #FFF;
    background-color: #911919;
}

#dropmenudiv a:hover{ /*hover background color*/
    background-color: #911919;
    color: #000;
}
Avatar billede coderdk Praktikant
26. februar 2007 - 20:15 #9
Må jeg foreslå at prøve noget andet?

.menuWrap a {
    color: #000;
    background-color: #FFF;
    display: block;
}
.menuWrap a:hover {
    color: #FFF;
    background-color: #911919;
}

Og din menu nu:

<div class="menuWrap">
    <table cellpadding="4" cellspacing="0" border="0"><tr>
        <td><A href='index.php?pageid=1' onMouseover="dropdownmenu(this, event, menu1, '200px')" onMouseout="delayhidemenu()">Forside</A></td>
        <td><A href='index.php?pageid=11' onMouseover="dropdownmenu(this, event, menu2, '200px')" onMouseout="delayhidemenu()">Bands</A></td>
        <td><A href='index.php?pageid=12' onMouseover="dropdownmenu(this, event, menu3, '200px')" onMouseout="delayhidemenu()">DJ</A></td>
        <td><A href='index.php?pageid=13' onMouseover="dropdownmenu(this, event, menu4, '200px')" onMouseout="delayhidemenu()">Pianister</A></td>
        <td><A href='index.php?pageid=14' onMouseover="dropdownmenu(this, event, menu5, '200px')" onMouseout="delayhidemenu()">Sangere</A></td>
        <td><A href='index.php?pageid=15' onMouseover="dropdownmenu(this, event, menu6, '200px')" onMouseout="delayhidemenu()">Underholdning</A></td>
        <td><A href='index.php?pageid=16' onMouseover="dropdownmenu(this, event, menu7, '200px')" onMouseout="delayhidemenu()">Hvorfor bruge os?</A></td>
        <td><A href='index.php?pageid=17' onMouseover="dropdownmenu(this, event, menu8, '200px')" onMouseout="delayhidemenu()">Anbefalinger</A></td>
        <td><A href='index.php?pageid=18' onMouseover="dropdownmenu(this, event, menu9, '200px')" onMouseout="delayhidemenu()">Om os</A></td>
        <td><A href='index.php?pageid=19' onMouseover="dropdownmenu(this, event, menu10, '200px')" onMouseout="delayhidemenu()">Gode links</A></td>
    </tr></table>
</div>
Avatar billede nickyc Nybegynder
26. februar 2007 - 20:20 #10
Det fungere på sin vis, men alligevel ikke, for vil have hele td'en for baggrundsfarven rød, og ikke kun bagved teksten.
Avatar billede coderdk Praktikant
26. februar 2007 - 20:42 #11
Hmm underligt, prøv at fjerne cellpadding på tabellen... Evt. smid padding i .menuWrap a
Avatar billede coderdk Praktikant
26. februar 2007 - 20:43 #12
Min pointe er, at det er lidt dumt at bruge javascript-tricks når det rent faktisk kan laves med ren css...
Avatar billede mccookie Seniormester
26. februar 2007 - 21:43 #13
Kommentar: nickyc
26/02-2007 20:07:10

Hvis du bruger IE er der noget med at den lige skal have et HACk, hvis du skal bruge Hover på andre elementer end A.

Se her:
Peter Nederhoff
:hover på ethvert element er Peter Nederhoffs begavede artikel om udviklingen af en MS behavior (.htc-fil), der gør det muligt at anvende :hover pseudo-klassen på et vilkårligt element i IE i stedet for kun på a-markøren.

Peter Nederhoffs eksempelmenu er ikke færdigudviklet. Som det fremgår af artiklen er der problemer med visningen i IE5.

Min version af denne menu finder du som eksempel 4. Jeg vil dog anbefale dig også at kigge på Nederhoffs demo. Hans ikoner er meget flottere end mine.

2004.05.15 gør jeg opmærksom på, at der på Peter Nederhoffs ovennævnte hjemmesider er publiceret et opdateret .htc-script. Det er ikke det, jeg har anvendt i mit eksempel.
Avatar billede mccookie Seniormester
26. februar 2007 - 21:44 #14
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