[css]Verticale menu - Stukken zichtbaar / onzichtbaar

Pagina: 1
Acties:

  • c00kie
  • Registratie: Juni 2005
  • Laatst online: 28-08 10:02
Hey

Ik zit met een probleempje in verband met een verticale menu.

Eigenlijk is het eenvoudig wat ik wil :), maar ik wil het volledig met css & ul/li doen, en dat lijkt een beetje moeilijk.

Wat wil ik precies doen?

Als ze op mijn site komen wil ik deze menu laten zien :
Afbeeldingslocatie: http://nele-tom.hs-service.be/temp/menu1.gif

als ze dan bijvoorbeeld op menu1 klikken, wil ik dat menu 1.1 tevoorschijn komt (en ook 1.2 & 1.3) zoals hieronder getoond :
Afbeeldingslocatie: http://nele-tom.hs-service.be/temp/menu2.gif

na de klik, moet dit dus gewoon zo blijven staan. Indien er dan bijvoorbeeld op menu 2 geklikt wordt, klapt menu 1 terug in, en krijgen we
Afbeeldingslocatie: http://nele-tom.hs-service.be/temp/menu3.gif

Ik geraak wel zo ver dat ik mijn menustructuur volledig in mijn html kan zetten. Mijn html ziet er als volgt uit :
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<html>
<head>
    <title>Test</title>
    <link rel="stylesheet" media="all" type="text/css" href="menu.css" />   
</head>
<body>

<div class="divNav">
    <ul class="nav">
        <li>menu 1</li>
            <ul>
                <li>menu 1.1</li>
                <li>menu 1.2</li>
                <li>menu 1.3</li>
            </ul>
        <li>menu 2</li>
            <ul>
                <li>menu 2.1</li>
                <li>menu 2.2</li>
                <li>menu 2.3</li>
            </ul>
        <li>menu 3</li>
    <ul>
</body>
</html>


En met onderstaande css, slaag ik er in om de submenu's onzichtbaar te maken... Maar hoe krijg ik ze nu opnieuw wel zichtbaar?

Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
.divNav {
    font-family: "Verdana", "Arial";
   font-size:  8pt;
   color: #3A373E;
    line-height: 200%;
   background-color: #DCDCDE
    margin: 0;
    padding: 0;
    width: 185px;
}

.nav {
    position: relative;
    top: 55px;
    width: 185px;
    list-style-type: none;
}
    
.nav ul {
    padding: 0;
    margin: 0;
    visibility: hidden;
    position: absolute;
}

.nav li {
    position:relative;
    background-color: #DCDCDE
}


.nav ul li{
    padding-left: 5px;
    margin-left: 5px;
}



Iemand een idee hoe je dit kunt oplossen?

Thanks,
c00kie

Build a bridge, get over it... Specs : yes !!! website over bouwen & verbouwen


  • Geert.H
  • Registratie: Maart 2001
  • Laatst online: 18-11 13:14
Zoals je het wilt kun je het niet alleen met CSS/html oplossen. Hiervoor zal je javascript moeten gebruiken. Ook kan je het doen door het te programmeren in php.

Het nadeel van de javascript is dat bij een refresh alles weer zal worden ingeklapt (alhoewel je dat waarschijnlijk ook wel weer kan opvangen). Dus daarom is wellicht een php/asp functie het beste.

Wat je doet is de ul die open moet klappen een id/class meegeven die ervoor zorgt dat die opengeklapt staat. Dit kan je dus doen door met php te checken welk menu moet worden opengeklapt, en die de class meegeven.

  • c00kie
  • Registratie: Juni 2005
  • Laatst online: 28-08 10:02
daar vreesde ik dus al voor. Heb nu wel een oplossing gevonden met javascript, maar ik ben daar voorlopig nog niet zo voor te vinden :).

Ik ga effe verder op zoek, maar toch in ieder geval al bedankt, dan weet ik dat ik niet meer verder moet zoeken, puur css.

Build a bridge, get over it... Specs : yes !!! website over bouwen & verbouwen


  • Muthas
  • Registratie: December 2005
  • Niet online

Muthas

O+

Geert.H schreef op zaterdag 31 mei 2008 @ 09:57:
Ook kan je het doen door het te programmeren in php.

Wat je doet is de ul die open moet klappen een id/class meegeven die ervoor zorgt dat die opengeklapt staat. Dit kan je dus doen door met php te checken welk menu moet worden opengeklapt, en die de class meegeven.
Eh, PHP is serverside. Daarmee krijg je dus niet voor elkaar dat wanneer je klikt op menu 2 terwijl menu 1 open is, menu 2 open gaat en menu 1 dicht gaat.

Zal inderdaad met JavaScript moeten, maar valt allemaal heel erg mee :) Kan je genoeg over vinden ook :)

  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 22:26
Zonder javascript zal je menu ook moeten werken, als je een beetje aardig wil zijn voor je bezoekers zonder javascript. Ik denk dat als je googled op suckerfish je behoorlijk ver komt met een functioneel css menu, alleen is het dan zo dat je menu openklapt en dichtklapt met behulp van hoovers.

Wil dat het met klicks werkt, zoals je aangeeft, kun je je menu enhancen met javascript, zodat het (sub)menu openblijft na een klick op de titel van het submenu.

[ Voor 8% gewijzigd door Kiphaas7 op 31-05-2008 10:30 ]


  • c00kie
  • Registratie: Juni 2005
  • Laatst online: 28-08 10:02
Kiphaas7 schreef op zaterdag 31 mei 2008 @ 10:26:
Zonder javascript zal je menu ook moeten werken, als je een beetje aardig wil zijn voor je bezoekers zonder javascript. Ik denk dat als je googled op suckerfish je behoorlijk ver komt met een functioneel css menu, alleen is het dan zo dat je menu openklapt en dichtklapt met behulp van hoovers.

Wil dat het met klicks werkt, zoals je aangeeft, kun je je menu enhancen met javascript, zodat het (sub)menu openblijft na een klick op de titel van het submenu.
dat heb ik dus ondertussen ook gevonden, maar het maakt het allemaal iets moeilijker omdat het eigenlijk een aanpassing van een bestaande site is...
Ik ga in ieder geval proberen kijken naar een php oplossen, op basis van de getoond pagina, niet het mooiste misschien, maar op dit moment gaat dat wel het snelste gedaan zijn. 't Is om nog een paar jaar te overbruggen, en de aanpassingen net iets makkelijker te maken in de toekomst!

Build a bridge, get over it... Specs : yes !!! website over bouwen & verbouwen


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-09 20:59
Kiphaas7 schreef op zaterdag 31 mei 2008 @ 10:26:
Zonder javascript zal je menu ook moeten werken, als je een beetje aardig wil zijn voor je bezoekers zonder javascript. Ik denk dat als je googled op suckerfish je behoorlijk ver komt met een functioneel css menu, alleen is het dan zo dat je menu openklapt en dichtklapt met behulp van hoovers.

Wil dat het met klicks werkt, zoals je aangeeft, kun je je menu enhancen met javascript, zodat het (sub)menu openblijft na een klick op de titel van het submenu.
Het menu toegankelijk maken voor gebruikers zonder javascript is redelijk eenvoudig in dit geval. Standaard klap je je menuboom gewoon uit. En met javascript zorg je ervoor dat hij na het inladen wordt ingeklpat (indien JS aanwezig is dus).

Afhankelijk van je doelgroep zou ik namelijk meer tijd besteden aan het toegankelijk maken van je websites (menu's ook uit te klappen met het toetsenbord via js bijvoorbeeld) dan een CSS alternatief bieden indien JS is uitgeschakeld.

If I can't fix it, it ain't broken.


  • Muthas
  • Registratie: December 2005
  • Niet online

Muthas

O+

Kiphaas7 schreef op zaterdag 31 mei 2008 @ 10:26:
Zonder javascript zal je menu ook moeten werken, als je een beetje aardig wil zijn voor je bezoekers zonder javascript. Ik denk dat als je googled op suckerfish je behoorlijk ver komt met een functioneel css menu, alleen is het dan zo dat je menu openklapt en dichtklapt met behulp van hoovers.

Wil dat het met klicks werkt, zoals je aangeeft, kun je je menu enhancen met javascript, zodat het (sub)menu openblijft na een klick op de titel van het submenu.
Suckerfish = hover = niet aanwezig in IE6 = JavaScript ;)

Verwijderd

Google heeft voorbeelden die allemaal werken onder IE6. Geen Javascript voor nodig. Misschien had er meer aandacht besteed kunnen worden aan de ongeldige HTML opmaak. Ik weet niet hoe ik het het best kan omschrijven.

HTML:
1
2
3
4
5
6
7
   <ul class="nav">
        <li>menu 1</li>
            <ul>
                <li>menu 1.1</li>
                <li>menu 1.2</li>
                <li>menu 1.3</li>
            </ul>

->
HTML:
1
2
3
4
5
6
7
8
   <ul class="nav">
        <li>menu 1
            <ul>
                <li>menu 1.1</li>
                <li>menu 1.2</li>
                <li>menu 1.3</li>
            </ul> 
        </li>

  • Muthas
  • Registratie: December 2005
  • Niet online

Muthas

O+

In IE6 kan zowel de klik als hover methode echt niet zonder JavaScript, IE6 (en lager) support alleen a:hover, meer niet.

  • c00kie
  • Registratie: Juni 2005
  • Laatst online: 28-08 10:02
Verwijderd schreef op zaterdag 31 mei 2008 @ 11:42:
Google heeft voorbeelden die allemaal werken onder IE6. Geen Javascript voor nodig. Misschien had er meer aandacht besteed kunnen worden aan de ongeldige HTML opmaak. Ik weet niet hoe ik het het best kan omschrijven.

HTML:
1
2
3
4
5
6
7
   <ul class="nav">
        <li>menu 1</li>
            <ul>
                <li>menu 1.1</li>
                <li>menu 1.2</li>
                <li>menu 1.3</li>
            </ul>

->
HTML:
1
2
3
4
5
6
7
8
   <ul class="nav">
        <li>menu 1
            <ul>
                <li>menu 1.1</li>
                <li>menu 1.2</li>
                <li>menu 1.3</li>
            </ul> 
        </li>
ow zekers. Merci, daar had ik ff over gekeken. 8)7

Build a bridge, get over it... Specs : yes !!! website over bouwen & verbouwen


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Muthas schreef op zaterdag 31 mei 2008 @ 12:09:
In IE6 kan zowel de klik als hover methode echt niet zonder JavaScript, IE6 (en lager) support alleen a:hover, meer niet.
Of je gebruikt IE7/IE8.

Professionele website nodig?


  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 22:26
Muthas schreef op zaterdag 31 mei 2008 @ 11:25:
[...]

Suckerfish = hover = niet aanwezig in IE6 = JavaScript ;)
Tsja, ik zelf zou het dan geen probleem vinden om javascript te gebruiken om ie6 compatible te maken. Moet je maar geen brakke browser gebruiken.

Maar dat is mijn mening, hangt natuurlijk totaal van je doelgroep en eisen af.
Het hele punt was dat ik zei dat het menu moest werken zonder javascript. Een javascript library toevoegen haalt dat punt een beetje onderuit. :P

[ Voor 29% gewijzigd door Kiphaas7 op 31-05-2008 16:55 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Kiphaas7 schreef op zaterdag 31 mei 2008 @ 16:54:
[...]

Het hele punt was dat ik zei dat het menu moest werken zonder javascript. Een javascript library toevoegen haalt dat punt een beetje onderuit. :P
Daar ben ik het niet mee eens - als iemand JS vrijwillig uitzet is ie een stomme idioot en moet ie er maar mee leven dat websites minder subliem functioneren. Een dropdown menu hoort volledig te werken op CSS, maar als iemand een ancient deprecated kutbrowser gebruikt is het wmb perfect toelaatbaar om middels een conditional comment een Javascript patch te gebruiken - dat is namelijk heel wat anders dan een Javascript menu toepassen wat ik idd onacceptabel acht.

Alleen gebruikers met IE6 en geen Javascript hebben dan pech, en sja da's net zo'n combinatie als mensen die IE4 op Win95 gebruiken - support houdt ergens op.

Professionele website nodig?


  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 22:26
curry684 schreef op zaterdag 31 mei 2008 @ 18:03:
[...]

Daar ben ik het niet mee eens - als iemand JS vrijwillig uitzet is ie een stomme idioot en moet ie er maar mee leven dat websites minder subliem functioneren. Een dropdown menu hoort volledig te werken op CSS, maar als iemand een ancient deprecated kutbrowser gebruikt is het wmb perfect toelaatbaar om middels een conditional comment een Javascript patch te gebruiken - dat is namelijk heel wat anders dan een Javascript menu toepassen wat ik idd onacceptabel acht.

Alleen gebruikers met IE6 en geen Javascript hebben dan pech, en sja da's net zo'n combinatie als mensen die IE4 op Win95 gebruiken - support houdt ergens op.
Zie het eerste gedeelte van mijn post die je quote, dan zie je dat ik het (in minder woorden) roerend met je eens ben.

Ik zei het alleen dat een functioneel puur uitklapbaar css menu, daarna verbeterd met javascript, dus niet mogelijk is op ie6, omdat je al javascript nodig hebt om het uberhaupt te laten functioneren. Ook zei ik dus dat ik dat persoonlijk acceptabel vind, maar als iemand die dit wil doen de pro-ie6-anti-javascript.com website runt, heeft hij/zij natuurlijk wel een probleem (doelgroep verhaal).

Ik denk dat iedereen hier precies hetzelfde zegt, maar dat we langs elkaar heen aan het praten zijn. :P

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Zoveel moeite is het nou ook weer niet om rekening met IE6 zonder JS te houden. Even serverside het actieve item een menuutje meegeven en klaar is kees-de-crossbrowser-supporter.

Bij een menu met meerdere niveau's wordt het wel wat lastiger, maar ook dat is m.i. te doen.

Kleine moeite om even x% meer gebruikers te bedienen.

TabCinema : NiftySplit

Pagina: 1