Avatar billede bumle90 Nybegynder
03. april 2005 - 02:59 Der er 11 kommentarer

Opbygning af css-klasse hieraki til menuer

Jeg skal lave menuer, og tænkte at jeg ville opbygge det hierakisk for at opnår lettere vedligeholdelse og kodebesparing.

Så jeg har prøvet at lave følgende:

<html>
<head>
<style>
.genericmenu{
float:left;
}
.genericmenu.mainmenu{
width:200px;
}
.genericmenu.submenu{
width:200px;
}


.genericmenu.mainmenu.selected{
background-color:green;
width:150px;
}
.genericmenu.mainmenu.Notselected{
background-color:red;
width:150px;
}

.genericmenu.submenu.selected{
background-color:blue;
width:150px;
}
.genericmenu.submenu.Notselected{
background-color:yellow;
width:150px;
}

</style>
</head>
<body>

<div class="genericmenu">
    <div class="mainmenu">
        <div class="selected">
            <a>Linktekst</a>
        </div>
        <div class="Notselected">
            <a>Linktekst</a>
        </div>
    </div>
</div>

<div class="genericmenu">
    <div class="submenu">
        <div class="selected">
            <a>Linktekst</a>
        </div>
        <div class="Notselected">
            <a>Linktekst</a>
        </div>
    </div>
</div>

</div>
</body>
</html>


Problemet er at der kun bliver vist 2 farver nemlig blå og gul.
Så det er som om de nedeserste klasser i i hierakiet bliver overskrevet.

Kan det overhovedet lade sig gøre at arbejde med CSS på denne måde eller har jeg misforstået det?
Mvh...
Avatar billede voirsous Nybegynder
03. april 2005 - 03:03 #1
Prøv at lade være med at bruge . i dinne class

sådan her
.genericmenuSubmenuSelected{
background-color:blue;
width:150px;
}
Avatar billede voirsous Nybegynder
03. april 2005 - 03:04 #2
hov er træt :) bare glem det jeg skrev
Avatar billede voirsous Nybegynder
03. april 2005 - 03:06 #3
Jeg må indrømme jeg aldrig har set den model du laver der før.
Du kan alternativt angive flere class="class1 class2"
Avatar billede bumle90 Nybegynder
03. april 2005 - 03:21 #4
Mmm men kan du se ideen  det jeg vil lave?
Avatar billede bumle90 Nybegynder
03. april 2005 - 03:28 #5
Jeg vil have en ydre klasse der har generiske definitioner for alle menuer på siden.
Herunder vil jeg have en specifik klasse der angiver specifikationer for den enkelte menu. Det kunne fx. være bredde og speciel farve.
Nederst vil jeg så have selected og not selected klasserne som angiver hvordan knapper/linksne skal se ud i de 2 tilstande.
Jeg vil gerne benytte floats, så derfor skal der altså være den ekstra menubox der hedder fx. mainmenu således at jeg kan sætte en bredde.

Forestil dig fx. jeg skal have en menu der er vandret og en anden der er lodret...Så skal jeg kun ændre i de 2 klasser
....Men ved som sagt ikke om det kan lade sig gøre
Avatar billede the_ghost Nybegynder
03. april 2005 - 07:07 #6
Du smide nogle af dem sammen:

<style type="text/css">
.genericmenu{
float:left;
}
.genericmenu.mainmenu, .genericmenu.submenu{
width:200px; }


.genericmenu.mainmenu.selected, .genericmenu.mainmenu.Notselected, .genericmenu.submenu.selected, .genericmenu.submenu.Notselected{
width:150px;
}

.genericmenu.mainmenu.selected{
background-color:green;
}

.genericmenu.mainmenu.Notselected{
background-color:red;
}

.genericmenu.submenu.selected{
background-color:blue;
}
.genericmenu.submenu.Notselected{
background-color:yellow;
}

</style>
Avatar billede bumle90 Nybegynder
03. april 2005 - 09:56 #7
Mmmm hvorfor ombryder den så ikke div-boksene hvis jeg sætter bredden ned?


<style type="text/css">
.genericmenu{
float:left;
}
.genericmenu.mainmenu, .genericmenu.submenu{
width:20px; }


.genericmenu.mainmenu.selected, .genericmenu.mainmenu.Notselected, .genericmenu.submenu.selected, .genericmenu.submenu.Notselected{
width:150px;
}

.genericmenu.mainmenu.selected{
background-color:green;
}

.genericmenu.mainmenu.Notselected{
background-color:red;
}

.genericmenu.submenu.selected{
background-color:blue;
}
.genericmenu.submenu.Notselected{
background-color:yellow;
}

</style>

Jeg ville da mene den burde se at der ikke er plads nok på denne linie til 2 kasser og så lægge dem på linier.
Jeg bruger jo float som definieret i topklassen (genericMenu)
Avatar billede bumle90 Nybegynder
03. april 2005 - 10:04 #8
NB, jeg har sat bredden ned på submenu i ovenstående billede
Avatar billede roenving Novice
03. april 2005 - 16:25 #9
Du invokerer jo ikke arv, når du undlader mellemrum !-)

.genericmenu .mainmenu .Notselected{
Avatar billede olebole Juniormester
03. april 2005 - 16:41 #10
<ole>

Nu har du godt nok fokus på CSS-delen i din kode, men jeg er bange for, du er ude i noget voldsomt skidt i JS-delen. Noget tyder nemlig på, du har gang i at skifte CSS-klasse på HTML-elementer via JavaScript - som er noget af det mest ineffektive, man overhovedet kan foretage sig i DHTML og derfor ikke kan frarådes nok.

I stedet bør du ændre de enkelte style-properties på elementerne. Det giver en langt bedre kode  ;o)

/mvh
</bole>
Avatar billede bumle90 Nybegynder
03. april 2005 - 16:54 #11
aha. Point taget. Jeg skifter ikke klasse via js. Forstået :)
Jeg er også gået over til at løse problemet på en anden måde.
Men der er jeg også rendt ind i problemer. Jeg har lavet et nyt indlæg. Smid svar :)
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