Avatar billede goulduck Nybegynder
23. maj 2003 - 11:28 Der er 27 kommentarer og
3 løsninger

Finde ny/rette slam-kode menu

Hej
Jeg er gået i gang med en hjemmeside, hvor jeg har en menu. Det er en fed menu, men jeg testede den selvfølgelig ikke af inden jeg smeltede menuen ind i min side. Det viser sig nemlig at den bruger noget CSS, som Microsoft har fundet på (behavior).

Derfor vil jeg høre om der er nogen som måske har forslag til hvordan jeg får menuen til at være valid HTML/CSS kode eller kender en menu som er lige som den jeg har fundet.

Jeg så helst at jeg ikke skulle lave for mange ændringer i min eksisternde kode, da der en masse som hænger sammen med menuen.

Den kan ses her (i en skrabet) udgave: http://anders.adsl.dk/menu/
Avatar billede Slettet bruger
23. maj 2003 - 11:39 #1
det er jo små fejl der er i den,
i css'en er det fordi du angiver color uden at angive en backgorund-color

i html
du mangler at afslutte nogle tables, + nogle links som den ikke kender ( dem går jeg ikke op i de links )
Avatar billede goulduck Nybegynder
23. maj 2003 - 11:48 #2
Ja, jeg har lige set at jeg har nogle fejl, men jeg tror ikke at det er dem som er skyld i at det ikke virker i fx mozilla 1.4b.

Jeg har fået valideret den siden hvor den skal være, hvor den kun brokker sig over behavior.
Avatar billede roenving Novice
23. maj 2003 - 12:25 #4
-- hvad står der i din link.htc-fil ?-)

-- er det ikke noget du bare kan skrive ind ...
Avatar billede goulduck Nybegynder
23. maj 2003 - 13:15 #5
Hov, den havde jeg helt glemt at uploade...
<PUBLIC:COMPONENT>
    <PUBLIC:ATTACH        EVENT="onmouseover"    FOR="element" ONEVENT="DoMouseOver()"    />
    <PUBLIC:ATTACH        EVENT="onmouseout"    FOR="element" ONEVENT="DoMouseOut()"    />
   
    <SCRIPT language="VBscript">
        Dim normalCursor
        Dim normalBorderTopColor
        Dim normalBorderBottomColor
        Dim normalBackgroundColor
       
        function DoMouseOver()
            normalCursor                    = style.cursor
            normalborderTopColor            = style.borderTopColor
            normalBorderBottomColor            = style.borderBottomColor
            normalBackgroundColor            = style.backgroundColor
           
            style.cursor                    = "hand"
            style.borderTopColor            = "#999999"
            style.borderBottomColor            = "#999999"
            style.backgroundColor            = "#D6BE9F"
        end function

        function DoMouseOut()
            style.cursor                    =  normalcursor
            style.borderTopColor            =  normalborderTopColor
            style.borderBottomColor            =  normalBorderBottomColor
            style.backgroundColor            =  normalBackgroundColor
        end function
    </SCRIPT>
</PUBLIC:COMPONENT>


Men menuen virkede aligevel...
Avatar billede goulduck Nybegynder
23. maj 2003 - 13:17 #6
Behøver jeg at sige at jeg ikke fatter så meget af den menu (jo, jeg kan læse hvad der sker, men jeg ved ikke helt hvorfor og jeg kan slet ikke skrive noget lignende selv)...... :-)
Avatar billede roenving Novice
23. maj 2003 - 13:28 #7
Efter de normale regler for css ville jeg 'oversætte det til:

.menuUnderPunkt {
    background-color: #F8F3EE;
    font-size: 7pt;
    font-weight: bold;
    height: 22px;
    padding-left: 14px;
    cursor: pointer;
}
.menuUnderPunkt:hover {
            border-top-color: #999999
            border-bottom-color: = #999999
    background-color: #D6BE9F;
    cursor: hand;
}

-- og det skal siges, at jeg ikke har set de der border-top- og bottom-color ting før, så jeg ved ikke hvordan de virker i almindelige styles ,-)
Avatar billede goulduck Nybegynder
23. maj 2003 - 13:47 #8
Så er koden helt chekked ... og det virker ... men bare ikke i Mozilla. Hvorfor?
Avatar billede goulduck Nybegynder
23. maj 2003 - 20:13 #9
Jeg har fået ryttet op i koden (kan ikke lige huske om jeg har fået opdateret overstående side, tror det ikke) - men jeg mangler stadig at få funktionaliteten til at virke....
Avatar billede roenving Novice
23. maj 2003 - 23:05 #10
Skal jeg så lægge et svar ?-)
Avatar billede olebole Juniormester
24. maj 2003 - 00:09 #11
<ole>

Der er tale om et helt almindeligt mouseover- and -out script ... lavet som en behavior. Mozilla understøtter faktisk også behaviors, men med en lidt anden syntaks.
Hvis du skriver dine menu-liner som denne:
  <td class="menuOverPunkt" onclick="ToggleNode(td_root_0)">
om til:
  <td class="menuOverPunkt"
    onmouseover="swapOver(this)"
    onmouseout="swapOut(this)"
    onclick="ToggleNode(td_root_0)">
kan du skrive et style-sheet og script, der ser sådan ud:

<style type="text/css">
.menuOverPunkt {
    borderTop: 1px solid;
    borderBottom: 1px solid;
    backgroundColor: #ffff00;
    borderTopColor: #ff0000;
    borderBottomColor: #ff0000;
    cursor: default;
}
</style>
<script type="text/JavaScript">
var normalCursor,normalborderTopColor,normalBorderBottomColor,normalBackgroundColor;
function swapOver(elm) {
    normalCursor = style.cursor;
    normalborderTopColor = elm.style.borderTopColor;
    normalBorderBottomColor = elm.style.borderBottomColor;
    normalBackgroundColor = elm.style.backgroundColor;
    elm.style.cursor = "hand";
    elm.style.cursor = "pointer";
    elm.style.borderTopColor = "#999999";
    elm.style.borderBottomColor = "#999999";
    elm.style.backgroundColor = "#D6BE9F";
}
function swapOut(elm) {
    elm.style.cursor = normalCursor;
    elm.style.borderTopColor = normalborderTopColor;
    elm.style.borderBottomColor = normalBorderBottomColor;
    elm.style.backgroundColor = normalBackgroundColor;
}
</script>

Så sker der præcis det samme, som med din oprindelige behavior  :)

/mvh
</bole>
Avatar billede olebole Juniormester
24. maj 2003 - 00:11 #12
*SNOOOOOT* ... hvad tænker jeg dog på ...?!!??!!!
Style-sheet'et skal naturligvis se sådan ud:

<style type="text/css">
.menuOverPunkt {
    border-top: 1px solid;
    border-bottom: 1px solid;
    background-color: #ffff00;
    border-top-color: #ff0000;
    border-bottom-color: #ff0000;
    cursor: default;
}
</style>

... sorry  :)
Avatar billede goulduck Nybegynder
24. maj 2003 - 08:02 #13
roenving> Jeg skal lige teste ole's kode af - så får vi at se.

Ole> Det vil jeg teste i dag, når jeg kommer til mit projekt.
Avatar billede roenving Novice
24. maj 2003 - 09:40 #14
-- og ole så skylder vi vel spørgeren at fortælle forskellen ;O)
Avatar billede goulduck Nybegynder
24. maj 2003 - 09:52 #15
roenving> Jeg kan så sige at efter de modifikationer du forslog, så virker det stadig ikke i Mozilla.... jeg skal lige nu til at teste det af som ole har skrevet.
Avatar billede olebole Juniormester
24. maj 2003 - 09:53 #16
Hehe ... jeg må her gå udfra, 'vi' i dette tilfælde betyder OleBole  :D

Hvis du mener forskellen på din og min løsning, så er den væsenligste nok, at min virker  ;o)
Du bruger 'hover' på en <td> ... det kan man ikke.
/mvh
Avatar billede roenving Novice
24. maj 2003 - 09:59 #17
:-(
Avatar billede pelkjaer Nybegynder
24. maj 2003 - 10:00 #18
*rofl*
Avatar billede goulduck Nybegynder
24. maj 2003 - 10:12 #19
OleBole> Prøv at se min side - hvad har jeg gjort galt? Det virker ikke... :-(
Avatar billede goulduck Nybegynder
24. maj 2003 - 10:23 #20
Lad mig udspicificere det lidt: Det virker ikke i Mozilla. Men IE kan "selvfølgelig" godt. :-)
Avatar billede olebole Juniormester
24. maj 2003 - 10:23 #21
Én af os havde glemt et lille 'elm.' .... schhhhhhh ...  ;oD

function swapOver(elm) {
    normalCursor = elm.style.cursor;
... osv osv osv ...
Avatar billede olebole Juniormester
24. maj 2003 - 10:32 #22
Du skal endvidere skrive din funktion om til:

function ToggleNode(nodeObject) {
    var elm = document.getElementById(nodeObject);
    if(elm.style.display == "" || elm.style.display == "inline") {
        elm.style.display = "none";
    }
    else {
        elm.style.display = "inline";
    }
}

Og så skal du huske enkelte gåseøjne om dine argumenter i dine onclick-handlers. F.eks:
  onclick="ToggleNode('td_root_0')"

/mvh
Avatar billede goulduck Nybegynder
24. maj 2003 - 10:43 #23
Sejt, det virker nu!
Nu vil jeg så prøve at finde ud af hvordan det virker. :-)

Du skal have mange tak for din hjælp... det har du vist prøvet før det her.

Smider du et svar?
Avatar billede goulduck Nybegynder
24. maj 2003 - 10:44 #24
Og jeg skal lige debugge siden lidt - så Internet Explorer ikke laver siger at der er fejl i siden. ;-)
Avatar billede goulduck Nybegynder
24. maj 2003 - 10:48 #25
Og for at spamme lidt mere - så fandt jeg ud af det. Men det kan jeg også se at det var det du skrev i indlægget 10:23:16

Der viste jeg bare ikke lige helt hvad du ment. :-D
Avatar billede goulduck Nybegynder
13. juni 2003 - 17:29 #26
Olebole, smider du et svar eller skal jeg bare sende point til nogle andre?
Avatar billede olebole Juniormester
13. juni 2003 - 23:48 #27
... et lille svar  :)
Avatar billede goulduck Nybegynder
14. juni 2003 - 02:07 #28
Så ville du godt svare, når bare man spørger dig nok gange. :-)
Der falder lidt af til jer andre også ... lidt!
Avatar billede roenving Novice
14. juni 2003 - 02:09 #29
Jamen da -- takker og bukker mange gange ;~}
Avatar billede olebole Juniormester
14. juni 2003 - 02:39 #30
orv ... næste gang vil jeg prøve med 'et lillebitte svar'  ;oD
Et stort tak  :)
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