[CSS] Suckerfish menu in gepositioneerde navigatie

Pagina: 1
Acties:

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Hey!

Ik ben bezig met een rewrite van een site om hem standards compliant te maken. Ik maak gebruik van Anne's fixed positioning voor het "framework" van de site en suckerfish dropdown voor het menu.

Nu is het probleem dat het suckerfish menu niet werkt in een absoluut gepositioneerde div. Wat werkt niet? De menus klappen wel uit, maar zodra de cursor buiten de (binnenste) <li> (maar wel nog binnen het submenu!) gaat klapt het menu weer in. Als het divje waar het menu in staat niet absoluut gepositioneerd is werkt dat wel! Ik wil het menu echter graag absoluut gepositioneerd omdat dat het lekkerst werkt (zonder floats) vind ik.
Ik heb het voor FireFox en Opera opgelost door de buitenste uls een positieve z-index te geven. IE (5.5 en 6) boeit dat helaas niet zo. Niet alleen werkt de hover niet zodra je buiten de li komt, het menutje lijkt achter het binnenste menu en op dezelfde hoogte als de content te staan. (zal wel hetzelfde probleem zijn)

De gestripde code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<style>
/* Layout */
    div#wrapper {              /* staat gecentreed in de pagina */
      margin: 0 auto;
      padding: 0;
      
      width: 750px;
      text-align: left;
    }
    
    div#nav {
      padding: 60px 0 0 0;
      
      position: relative;
      width: 170px;
    }
    
    div#content {
      width: 579px;
      
      position: relative;
      left: 170px;
      z-index: 0;   /* kan ook zonder, maakt geen verschil */
    }

    /* Relevante Suckerfish code */
    div#nav ul {
      margin: 0;
      padding: 0;
      
      list-style: none;
    }
    
    div#nav ul li {
      position: relative;
    }
    
    div#nav ul li ul {
      display: none;
      position: absolute;
      z-index: 10;
    }
    
    div#nav ul li:hover ul {
      display: block;
      position: absolute;
    }
</style>
<body>
<div id="wrapper">
    <div id="nav">

    <ul id="navlist">    <!-- HET menu -->
      <li><a href="#">WELKOM</a></li>
      
      <li>BLA
        <ul>             <!-- submenu -->
          <li><a href="#">sweet</a></li>
          <li><a href="#">kewl</a></li>
        </ul>
      </li>
    </ul>

    </div>
  
    <div id="content">Content</div>
  
  </div>
</body>


Hier de volledige testcase: CLICKIE

De oplossingsrichtingen lijken mij:
• Niet absoluut positioneren maar floaten (als dat maar goed gaat in IE 5.5)
• die z-index fixen (hoort te werken vanaf IE 4 toch?)

offtopic:
En ARGH wat een gezeik om lists goed te krijgen in IE quirks

[ Voor 12% gewijzigd door JayVee op 28-01-2005 16:33 ]

ASCII stupid question, get a stupid ANSI!


Verwijderd

Het float probleem bedoel je waarschijnlijk de peek-a-boo bug? Die kan je wel oplossen door position:relative in de floating divs en aan de container div toe te voegen.

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Hoe pak ik zo een float het beste aan?
Het menu links floaten wil niet omdat de content die rechts onder het menu staat dan onder het menu komt te staan.
Content rechts float werkt alleen als in de HTML de content voor de navigatie komt, dat vind ik niks.

En navigatie float: left en content float:right werkt wel maar vind ik ook geen nette oplossing.

ASCII stupid question, get a stupid ANSI!


Verwijderd

Je kan ook twee keer float left doen. Dan krijg je wel de linkermarge zoals je gewend bent.

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
kick!

Als ik ga float-en moet ik gaan hacken voor de IE float margin bug.
Niemand die een manier weet om die zuigervisjes in een absoluut geposiioneerd divje werkend te krijgen?

ASCII stupid question, get a stupid ANSI!


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Argh! De oplossing is om de z-index van div#content niet lager te zetten dan die van de menus (bijv. 0 vs 10 of 1 vs 10), maar een negatieve waarde! Blijkbaar wordt helemaal niet vergeleken!
Met div#content { z-index: -10 } gaat het goed, zelfs als de menus geen z-index krijgen!

ASCII stupid question, get a stupid ANSI!

Pagina: 1