Avatar billede KHHP Juniormester
18. februar 2012 - 15:49 Der er 11 kommentarer og
1 løsning

Lave drop-down menu

Hej
Jeg har nu forsøgt at lave underpunkter i en menu i form af drop-down menuer.
http://dl.dropbox.com/u/41698524/menu.png
Jeg har søgt hjælp i indholdet af dette spørgsmål:
http://www.eksperten.dk/spm/955454
Men jeg kan ikke rigtigt få det til at virke. Hvis I kigger på det screenshot der er i øverste link, så kan man se at menuen kommer temmelig langt nede, og når jeg så prøver at komme ned og trykke på et undermenu-punkt, forsvinder det hele igen.
Jeg vil gerne have min menu til at fungere på nogenlunde samme måde som dreamweavers indbyggedee SpryMenu:
http://dl.dropbox.com/u/41698524/sprymenu.png
Problemet er bare at min side baserer på en færdig skabelon fra internettet, og derfor vil en SpryMenu ikke passe ind, med mindre jeg laver enorme ændringer i begge CSS-filer, og det er ikke lige CSS jeg er aller stærkest i.
Avatar billede DeeDawg Nybegynder
18. februar 2012 - 16:13 #1
Et billede er ikke nok, du. Vi skal bruge din kode, for at kunne hjælpe dig. :)
Avatar billede KHHP Juniormester
18. februar 2012 - 16:21 #2
Avatar billede NielsErikP Mester
19. februar 2012 - 01:47 #3
Hej..

Har ikke nærlæst din kode, men syntes der smides om sig flæng med position:absolute og position:relative !
Avatar billede DeeDawg Nybegynder
19. februar 2012 - 04:14 #4
Som NielsErikP også påpeger, ser det lidt ud som om du ikke helt ved hvad du har gang i - no offence. Kunne næsten blive fristet til at spørge om du benytter DreamWeaver, men så ville dette indlæg gå hen og blive useriøst, og det går jo ikke. ;)

Men dit problem består netop i at du kaster rundt med disse CSS-properties. Lad os tage nogle eksempler, fordi du jo også gerne skulle lære noget af det her. :)

#header {
        margin: 0px 0px 0px 0px;
        background-image:url(images/header.jpg);
        background-repeat:no-repeat;
        width:768px;
        height:262px;
}

Din definition af margin her, er unødvendig, da du allerede har sat margin til 0px, som standard. En ting du også glemmer andre steder, og det er såmen ikke fordi det er en alvorlig eller kritisk fejl, men du bør altid sigte efter en så lille fil som mulig.

#menu li{
        float:left;
        display:inline;
        padding: 0px 0px 0px 10px;
}

Øh, lol? Float og display: inline vil i dette tilfælde bruges til samme formål, derfor bør du kun benytte display: inline.

li ul {
    display: none;
        z-index: 999;
        padding: 0;
        position: absolute;
        top: 30px;
        padding-top: 5px;
}

En property kan kun defineres 1 gang per {blok}, og dette er derfor en direkte syntax fejl.

Derudover, har jeg da lige nogle tips til dig. Vidste du godt, at du kunne definere alle dine baggrunds-properties via 1 property?

#header{
    background: url('images/header.jpg') no-repeat;
}

Og at du kunne definere alle dine skifts-properties via 1 property?

#menu a{
    font: bolder 14px/normal Arial, Helvetica, sans-serif;
}




Nåh, men hvad dit problem angår, så tror jeg du kan starte med at rette dette

#menu li{
    padding: 0 0 0 10px;
    display: inline;
    position: relative;
}

#menu li ul{
    padding-top: 5px;
    display: none;
    position: absolute;
    top: 30px;
    z-index: 999;
}

#menu li:hover ul{
    display: block;
    background-color: #fff;
    opacity: 0.8;
}

Så må vi tage den derfra. Har været chauffør i nat, så efter en hektisk dag og efter 3 timers kørsel i træk, er jeg pænt træt. Har ikke orket at teste det selv, så dette er udelukkende ud fra min viden. Og nu skal jeg i seng. ;)
Avatar billede KHHP Juniormester
19. februar 2012 - 09:17 #5
Har nu rettet de ting du foreslog jeg skulle rette for at komme igang med løsningen af mit problem, og nu begynder det at ligne noget. Nu står mine undermenupunkter ikke oveni hinanden, men istedet i en fin lodret række. Nu står de dog bare udenfor sidens ramme.
Avatar billede KHHP Juniormester
19. februar 2012 - 14:00 #6
Eksperimenterede lige lidt rundt med det, og prøvede lidt forskelligt.
Jeg tilføjede nogle elementer til #menu li:hover ul
#menu li:hover ul{
    display: block;
    background-color: #000;
    opacity: 0.5;
    left: auto;
    top: auto;
}

og nu virker det som jeg gerne vil have det.
DeeDawg, tak for hjælpen, smider du lige svar.
Avatar billede DeeDawg Nybegynder
19. februar 2012 - 14:34 #7
Jamen, det var da godt. ;)
Avatar billede NielsErikP Mester
19. februar 2012 - 14:40 #8
Hej...
Er det mig den er gal med ?? Meeen, hvad mener du med :

left:auto;
top:auto;

Hvilken proberty sættes til at centrerer auto??

Mener du ikke :


text-align:center;

Avatar billede KHHP Juniormester
19. februar 2012 - 16:46 #9
Nej, fordi det var jo menuen der skulle placeres rigtigt, teksten behøver ikke at være centreret. Sådan som jeg har forstået det med left og top, så placerer den dem automatisk i forhold til det ovenstående menupunkt
Avatar billede DeeDawg Nybegynder
19. februar 2012 - 17:50 #10
Når du benytter display: inline, omdanner du faktisk dine elementer til tekst. Derfor vil disse elementer blive centreret af text-align: center.

@NielsErikP: Det vil dog ikke fungere her, da han benytter display: block på sit <ul> element. :)
Avatar billede DeeDawg Nybegynder
19. februar 2012 - 17:54 #11
Tror dog ikke på at left: auto og top: auto, vil centrere noget. Kan godt være det måske virker sådan, men ifølge de gældende standarder, kan det ikke lade sig gøre. :)
Avatar billede NielsErikP Mester
19. februar 2012 - 21:30 #12
@DeeDawg: Det er squ iorden... Så lærte jeg også lidt idag ved at deltage .. :-)
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