Avatar billede filipj Nybegynder
28. december 2006 - 12:51 Der er 10 kommentarer

Ændr bg-farve i 2 divs OnMouseOver

Hej.

Jeg er ved at lave en hjemmeside. Menuen har en rollover-effekt, således at baggrundsfarven (og tekst-farven) for hver "menuboks" ændrer farve når man kører musen over... så langt så godt.

Mit spørgsmål er, hvis jeg gerne vil have en lille firkant inde i hver menuboks, som skal ændre farve sammen med resten af menupunktet, hvordan gør jeg det?

Jeg har lagt en eksempel-side ud her: http://www.filipj.frac.dk... så kan i måske se hvad jeg mener, bedre...

Jeg har ikke så meget forstand (meget meget lidt hvis noget overhovedet) på Javascript.. jeg tror det er JS min onmouseover-effekt er lavet med.

I mit html-dokument står der koden:
onmouseout="this.style.backgroundColor='#fff'; this.style.color='#000'"
-- så tænker jeg på om man mon kan ændre det der "This.Style" til "Another.Style" eller noget :-), så man kan lave 2 af sammme action, hvor den ene bare påvirker en anden div? Hvis I forstår


Koden til min (X)HTML-fil som jeg har lagt ud på ovenstående side, ser således ud:

--------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <title>DK Profil - velkommen</title>
    <link rel="stylesheet" type="text/css" href="dkp_css_screen1.css">
    </head>
   
    <body>
   
<div align="center">

    <div id="container">


<!--topbanner-->
   
       
            <div id="topbanner">
            </div>
                   

<!--logo-->       
            <div id="logo">
            <img src="bill/logo1.gif">
            </div>
           


<!--menu-->           
            <div class="menu">
                <div class="menuboks"
                onmouseover="this.style.backgroundColor='#89c66c';this.style.color='#fff'"
                onmouseout="this.style.backgroundColor='#fff';this.style.color='#000'"
                onclick="location.href='info/index.html';
                            this.style.backgroundColor='#89c66c'"
                style="cursor:pointer;cursor:hand; top: 0px;">
                <div class="menufirkant"></div>
                <div class="menutekst1">Information</div>
                </div>
               
                <div class="menuboks"
                onmouseover="this.style.backgroundColor='#89c66c';this.style.color='#fff'"
                onmouseout="this.style.backgroundColor='#fff';this.style.color='#000'"
                onclick="location.href='info/index.html';
                            this.style.backgroundColor='#89c66c'"
                style="cursor:pointer;cursor:hand; top: 31px;">
                <div class="menufirkant"></div>
                <div class="menutekst1">Dom&aelig;ner</div>

                </div>
               
                <div class="menuboks"
                onmouseover="this.style.backgroundColor='#89c66c';this.style.color='#fff'"
                onmouseout="this.style.backgroundColor='#fff';this.style.color='#000'"
                onclick="location.href='info/index.html';
                            this.style.backgroundColor='#89c66c'"
                style="cursor:pointer;cursor:hand; top: 62px;">
                <div class="menufirkant"></div>
                <div class="menutekst1">Salgsbetingelser</div>
                </div>
               
                <div class="menuboks"
                onmouseover="this.style.backgroundColor='#89c66c';this.style.color='#fff'"
                onmouseout="this.style.backgroundColor='#fff';this.style.color='#000'"
                onclick="location.href='info/index.html';
                            this.style.backgroundColor='#89c66c'"
                style="cursor:pointer;cursor:hand; top: 93px;">
                <div class="menufirkant"></div>
                <div class="menutekst1">Kontakt</div>

                </div>
            </div>       
   

           


    </div>
   
<!--indholdsboks-->       

    <table class="indholdsboks1" cellspacing="0" cellpadding="0">

        <tr height="40">
        <td colspan="3"></td>
        </tr>


        <tr valign="top">

            <td width="40">
            </td>
                   
            <td width="700">
           
                <table width="700" cellspacing="0" cellpadding="0">
                    <tr valign="top">




                        <td width="270">
                        </td>


       
                        <td>
                       
                            <!--INDHOLD HERUNDER-->
                            <table width="300" class="indhold" cellpadding="0" cellspacing="0">
                                <tr valign="top">
                                    <td>
                                   
                                    Tekst her tekst her tekst her
                                    <br />

                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />

                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />

                                    <br />
                                    <br />
                                    <br />
                                    <br />
                                    <br />





                                                       
               
               
                                       
                                    </td>

                                </tr>
                            </table>
                            <!--INDHOLD SLUT-->
                           
                           
                        </td>


                       
                       

               
                                </tr>
                            </table>

                        </td>

                       
                    </tr>
                </table>       

            </td>
           
           
            <td width="40">
           
            </td>


        </tr>       
       
        <tr height="30">
            <td colspan="3"></td>
        </tr>

       
       
    </table>   
   
   
</div>






    </body>
</html>
--------------------------------------------------------------------------









og min CSS-fil ser således ud:


--------------------------------------------------------------------------
body {
margin-left: 0px;
margin-right: 0px;
margin-top: 0px;
margin-bottom: 0px;
background-color:#111;
}


               
#container {
                border-width: 0px;
                width: 700px;
                height: 130px;
                position: relative;
                top: 10px;

                }
               
#topbanner {
                border-width: 0px;
                width: 100%;
                height: 100%;
                position: relative;
                top: 0px;
                background-color: #fff;

                }               

#logo {
            border: 0px;
            position: absolute;
            top: 60px;
            left: 45px;
            }


.menu {
            width: 180px;
            position: absolute;
            top: 165px;
            left: 45px;
            z-index: 1;
            }
               
           

.menuboks {
            height: 30px;
            width:100%;
            background-color: #fff;
            position: absolute;
            left: 0px;
                font-family: verdana, arial, helvetica, sans-serif;
                font-weight: bold;
                font-size: 12px;
                line-height: 12px;
                text-align: left;
                color: #111;
                border-bottom: 1px solid white;
            }   
           
           
.menutekst1 {
                position: relative;
                top: 8px;
                left: 30px;}

.menufirkant {
                background-color: #89c66c;
                width: 8px;
                height: 8px;
                position: absolute;
                top: 10px;
                left: 12px;           
                }

.indholdsboks1 {

                border-width: 0px;
                width: 700px;
                position: relative;
                top: 2px;
                background-color: #fff;
                margin-top: 10px;
                margin-left: 10px;               
                margin-right: 10px;
                margin-bottom: 14px;}

.subboks1 {

                border-width: 0px;
                height: 250px;
                background-color: #a3c5a3;
}


.indhold {

                border-width: 0px;
                border: solid 0px black;
}


.overskrift {
                color: #000;
                font-family: arial, helvetica, sans-serif;
                font-weight: bold;
                font-size: 16px;
                line-height: 23px;
                text-align: left;}

.mellemrubrik {
                color: #111;
                font-family: arial, helvetica, sans-serif;
                font-size: 12px;
                font-weight: bold;
                line-height: 18px;
                text-align: left;}

.manchet {
                color: #000;
                font-family: arial, helvetica, sans-serif;
                font-size: 12px;
                line-height: 17px;
                text-align: left;}

.broedtekst {
                color: #000;
                font-family: arial, helvetica, sans-serif;
                font-size: 12px;
                line-height: 17px;
                text-align: left;}

.broedtekst-lille {
                color: #222;
                font-family: arial, helvetica, sans-serif;
                font-size: 11px;
                line-height: 19px;
                text-align: left;}
--------------------------------------------------------------------------


Nogen der kan hjælpe?

Mvh Filip Jakobsen
Avatar billede filipj Nybegynder
28. december 2006 - 12:57 #1
Hov... I eksemplet ovenfor hvor jeg skrev:

"I mit html-dokument står der koden:
onmouseout="this.style.backgroundColor='#fff'; this.style.color='#000'"
-- så tænker jeg på om man mon kan ændre det der "This.Style" til "Another.Style" eller noget :-), så man kan lave 2 af sammme action, hvor den ene bare påvirker en anden div? Hvis I forstår"

der skulle egentlig have stået:

onmouseover="this.style.backgroundColor='#89c66c';this.style.color='#fff'"

-- Men det er jo begge dele jeg skal bruge... Altså, firkanten skal jo ændre farve tilbage til "normal" når man kører væk fra den igen...
Avatar billede olebole Juniormester
28. december 2006 - 13:54 #2
<ole>

function swap(oElm, bInOut) {
    var oCss = oElm.getElementsByTagName("div")[0].style;
    oCss.color = bInout ? "red" : "";
    oCss.background = bInout ? "yellow" : "";
    oCss = oElm.style;
    oCss.color = bInout ? "yellow" : "";
    oCss.background = bInout ? "green" : "";
}

<div ......... onmouseover="swap(this, true)" onmouseout="swap(this)">
    <div class="menufirkant"></div>
    .............
</div>

/mvh
</bole>
Avatar billede filipj Nybegynder
28. december 2006 - 15:05 #3
Hvad skal jeg gøre med:
-----------------------------
function swap(oElm, bInOut) {
    var oCss = oElm.getElementsByTagName("div")[0].style;
    oCss.color = bInout ? "red" : "";
    oCss.background = bInout ? "yellow" : "";
    oCss = oElm.style;
    oCss.color = bInout ? "yellow" : "";
    oCss.background = bInout ? "green" : "";
}
------------------------------

skal det ind i min css under .menufirkant-div'en...?

Forresten, jeg ved ikke om jeg nævnte -- eller om det betyder noget--  men: Den lille firkant skal skifte til en anden farve en både tekst og baggrundsfarve i den store menuboks... Men det gør den måske også med ovenstående (?) -- som sagt er jeg ik så meget inde i JavaScript, så kan ikke lige "tyde" det ud fra koden på nuværende tidspunkt...
Avatar billede filipj Nybegynder
28. december 2006 - 15:06 #4
(og tak for hjælpen indtil videre ;-) ...)
Avatar billede olebole Juniormester
28. december 2006 - 15:22 #5
I din head skriver du:

<script type="text/JavaScript">
function swap(oElm, bInOut) {
    var oCss = oElm.getElementsByTagName("div")[0].style;
    oCss.color = bInout ? "red" : "";
    oCss.background = bInout ? "yellow" : "";
    oCss = oElm.style;
    oCss.color = bInout ? "yellow" : "";
    oCss.background = bInout ? "green" : "";
}
</script>

- og i body'en:

<div class="menu">
                <div onmouseover="swap(this, true)" onmouseout="swap(this)" class="menuboks" style="cursor:hand;cursor:pointer;top:0;">
                <div class="menufirkant"></div>
                <div class="menutekst1">Information</div>
                </div>

... osv - osv ...
</div>
Avatar billede filipj Nybegynder
28. december 2006 - 22:24 #6
Tak.. Nu virker det, der skulle dog lige småjusteringer til, rettes 2 ting:

- I første linje i HEAD-koden står InOut ("InOut") med kapital-O, og i resten af koden står det med lowercase-o ("Inout"), så jeg ændrede det til lille O i første linje.. det virkede ellers ikke, så vidt jeg husker.
- I koden til DIV'EN I BODY manglede der vist en slut-parantes (i "onmouseout")..

rettede dem, og så virker det :-)

De to stykker kode ser altså således ud:

----------------------------------------------------------
function swap(oElm, bInout)
{
    var oCss = oElm.getElementsByTagName("div")[0].style;
    oCss.color = bInout ? "red" : "";
    oCss.background = bInout ? "#d7f9c7" : "";
    oCss = oElm.style;
    oCss.color = bInout ? "white" : "";
    oCss.background = bInout ? "#89c66c" : "";
}
----------------------------------------------------------

og koden til Div'en ser således ud:
----------------------------------------------------------
        <div
        onmouseover="swap(this, true)"
        onmouseout="swap(this)"
        class="menuboks"
        style="cursor:hand;cursor:pointer;top:0;">
          <div class="menufirkant"></div>
          <div class="menutekst1">Test</div>
        </div>
----------------------------------------------------------

har også lagt første kode-stump ud i en ekstern .js-fil, og sat dette ind i min head i stedet:

    <script src="menu_mouseover.js" type="text/javascript"></script>

--- så man ikke skal ændre på farverne i alle html-filerne, men kun i én fil, hvis de skal ændres...

Jeg siger mange tak for hjælpen -- send bare et svar
Avatar billede filipj Nybegynder
28. december 2006 - 22:36 #7
Nej... hov. det virker ikke nu, når jeg har flere div's, ligger de sig alle sammen oveni hinanden, og ignorerer tilsyneladende <<<style="top: [X antal]px">>> ...

Ved du om det kan løses på en let måde, eller skal jeg bare lave 4 styles, én til hver menupunkt, og indstille placeringen i min css-fil...? Hvis du har forstand på det..?
Avatar billede filipj Nybegynder
28. december 2006 - 22:37 #8
(eller, løsningen med at lave 4 styles i min css er måske også ret nem... måske medmindre jeg pludselig vil ændre farverne på alle div-boksene?)...
Avatar billede filipj Nybegynder
28. december 2006 - 23:15 #9
(eller hvis j skal ændre str. på menuboksene eller menufirkanten...hmm...  eller noget lignende...

Ved ik om jeg skal på denne side, men måske hvis jeg bruger princippet en anden gang, ville det være rart om det hele kunne ændres uden at skulle ændre det flere steder... hvis du forstår?)

Jeg har lavet 4 styles i min css nu, det fungerer fint ;-)

Du har allerede tjent pointene... Men hvis der var en vej udenom de 4 styles, som er forholdsvis ligetil, ville det da måske være smart :-) ...?
Avatar billede filipj Nybegynder
28. december 2006 - 23:18 #10
(Altså hvis du har en måde hvor du ku sige "jamen, så skifter du lige de her 4½ linje ud" eller noget i den stil :)...-agtig)
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