/ Forside / Teknologi / Udvikling / HTML / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
HTML
#NavnPoint
molokyle 11184
Klaudi 5506
bentjuul 3377
severino 2040
smorch 1950
strarup 1525
natmaden 1396
scootergr.. 1320
e.c 1150
10  miritdk 1110
CSS, problemer med et rekursitvt udtryk
Fra : Kasper Johansen


Dato : 27-06-05 16:45

Hej gruppe.

Jeg har forsøgt mig at lave en dropdown-menu fra en guide via.
www.alistapart.com (jeg har dog kun taget udgangspunkt i det arbejde de har
lavet, jeg har ikke lavet min ved hjælp af en liste).

Den virkede også rigtig godt, indtil jeg forsøgte (via. PHP) at lave en
dynamisk opsat rekursiv menu.


Ved korrekt opsætning af CSS (good-game IE, die MS) har jeg lavet min CSS
således:

..menu_top td div{
display: block;
}

Dette får min underliggende DIV-boks til at vise sig, men også samtlige
andre DIV-bokse underliggende denne (lige meget om de ligger under andre
elementer) bliver også vist, hvilket bestemt ikke er meningen. Når et
underliggende element har andre underliggende elementer vil disse elementer
således også blive vist.

Hvordan kan jeg fortælle mit CSS at det kun er det bestemte underliggende
element der skal vises (altså kun de DIV-bokse der ligger under classen, og
ikke under classens andre elementers DIV-bokse).


I kan se mit problem her:

http://notater.lir.dk/kasperogthomas (under menuen "Test1"), hvor den åbner
alle submenus (virker kun i FF indtil videre, da jeg som udgangspunkt
udvikler i FF og retter til i IE).


Alle tips, tricks og hjælp modtages med kyshånd.

--
Mvh Kasper Johansen



 
 
Peter Westh (27-06-2005)
Kommentar
Fra : Peter Westh


Dato : 27-06-05 19:02

"Kasper Johansen" <kasper@johansen.tdcadsl.dk> skrev i en meddelelse
news:42c01ede$0$27359$ba624c82@nntp02.dk.telia.net...
> Hvordan kan jeg fortælle mit CSS at det kun er det bestemte underliggende
> element der skal vises (altså kun de DIV-bokse der ligger under classen,
> og ikke under classens andre elementers DIV-bokse).
>
>
> I kan se mit problem her:
>
> http://notater.lir.dk/kasperogthomas (under menuen "Test1"), hvor den
> åbner alle submenus (virker kun i FF indtil videre, da jeg som
> udgangspunkt udvikler i FF og retter til i IE).
>
>
> Alle tips, tricks og hjælp modtages med kyshånd.

Så vidt jeg kan gennemskue bliver du nødt til at lave det som en liste; kin
sådan kan du få det rette, entydigt hierarkiske forhold mellem elementerne.

MVH

Peter



Kasper Johansen (27-06-2005)
Kommentar
Fra : Kasper Johansen


Dato : 27-06-05 19:55

"Peter Westh" <pwesth@fjern.hum.ku.dk> skrev i en meddelelse
news:42c03f2d$0$182$edfadb0f@dread11.news.tele.dk...
> Så vidt jeg kan gennemskue bliver du nødt til at lave det som en liste;
> kin sådan kan du få det rette, entydigt hierarkiske forhold mellem
> elementerne.

Du mener altså at grunden til at mit CSS-"udtryk" virker rekursivt på alle
underelementer at den definerede type, er fordi jeg har bygget min menu op
ved hjælp af tables, hvorimod lister ikke har denne rekursive virkning på
alle underelementer?


Jeg takker for svaret og prøver at lave noget ud fra det :)

--
Mvh Kasper Johansen



Peter Westh (27-06-2005)
Kommentar
Fra : Peter Westh


Dato : 27-06-05 21:35

"Kasper Johansen" <kasper@johansen.tdcadsl.dk> skrev i en meddelelse
news:42c04b8d$0$10692$ba624c82@nntp06.dk.telia.net...
> Du mener altså at grunden til at mit CSS-"udtryk" virker rekursivt på alle
> underelementer at den definerede type, er fordi jeg har bygget min menu op
> ved hjælp af tables, hvorimod lister ikke har denne rekursive virkning på
> alle underelementer?

Ja, mit gæt er at browseren ikke kan hitte rede i, hvad der er
underelementer til hvad. Hvordan præcis hhv FF og IE tolker tabeller ved jeg
dog ikke.

/P



Jens Gyldenkærne Cla~ (27-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-06-05 20:42

Kasper Johansen skrev:

> .menu_top td div{
> display: block;
> }

Ovenstående fanger div elementer liggende i en tabelcelle (td) et
eller andet sted under noget med klassen .menu_top.

> Dette får min underliggende DIV-boks til at vise sig, men også
> samtlige andre DIV-bokse underliggende denne

Det er altså helt korrekt opførsel.

> Hvordan kan jeg fortælle mit CSS at det kun er det bestemte
> underliggende element der skal vises (altså kun de DIV-bokse
> der ligger under classen, og ikke under classens andre
> elementers DIV-bokse).

I princippet kan du klare det med child-selektoren:

..menu_top td > div{ /* A */ }

..menu_top > td div{ /* B */ }

..menu_top > td > div{ /* C */ }

A fanger div-elementer der ligger direkte under en tabelcelle, hvor
tabelcellen baere skal ligge inde i "noget" med klassen menu_top.

B fanger div-elementer der ligger inde i td-elementer der ligger
direkte under et (tr)-element med klassen .menu_top.

C fanger div-elementer der ligger direkte under en tabelcelle der
igen ligger direkte under et tr-element med klassen menu_top.

Jeg gætter på at det er A du har brug for... *men* desværre forstår
IE ikke en hujende fis af child-selektoren. Derfor er ovenstående
kode ikke meget værd hvis IE også skal være med.

Du kan enten bruge en klasse til at skelne mellem den yderste og de
inderste div-elementer i tabelcellen, eller du kan bruge endnu en
descendant-selektor (som IE forstår) til at skelne:

..menu_top td div{ /* Her rammer vi alle div'er i tabellen /* }

..menu_top td div div{
   /* Her rammer vi først et niveau længere inde */
}

..menu_top td * div{
/* Denne her fanger også div'er der er lagt ind i andre elementer
(under tabelcellen) - fx <td><form...><div> */
}

> http://notater.lir.dk/kasperogthomas (under menuen "Test1"),

NB: Du har et par mindre valideringsfejl på siden. Det er en god
ide at få dem rettet.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408930
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste