Avatar billede Slettet bruger
12. august 2004 - 15:19 Der er 66 kommentarer og
1 løsning

Menu med undermenuer

Hej,

Jeg har en lang box med nogle menupunkter og ved nogle af dem skal der være undermenuer.

Fx. ved menupunktet "links" skal undermenuen være "se links" og "tilføj links"
Undermenuen skal komme frem ved klik (eller evt. mouseover) og være under hovedmenupunktet og en smule til højre for det. Desuden har jeg en lille gif som L formet gif som skal indicere forbindelsen mellem underkassen og overkassen.
Selve menuteksterne er i plain text...

Hvis der er nogen der har en menu liggende (gerne med mulighed for databaseintegration men dette er mindre vigtigt)

På forhånd tak :)
Avatar billede roenving Novice
12. august 2004 - 15:34 #1
Avatar billede Slettet bruger
12. august 2004 - 17:10 #2
Er der mulighed for at style dem så de kommer til at se ud som 'kasser' ?
Avatar billede roenving Novice
12. august 2004 - 17:21 #3
Ja, du kan style dem på alle måder, f.eks. med en border og speciel baggrundsfarve ...
Avatar billede roenving Novice
12. august 2004 - 17:23 #4
.menu{display:none;padding-left:5px;border:3px inset brown;background:#966;}
Avatar billede Slettet bruger
12. august 2004 - 20:12 #5
ser ok ud roenving...

Kan du modificere det så hovedpunkterne kommer til at stå sådan her

- hovedpunkt 1 -    - hovedpunkt 2 -    - hovedpunkt 3 -   
  |_
    underpunkt 1.1
    underpunkt 1.2

?
Avatar billede roenving Novice
12. august 2004 - 20:21 #6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/528645">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.menupunkt{position:relative;font-family:tahoma,verdana,arial,sans-serif;cursor:pointer;color:#9d52be;background:#fff;font-weight:800;font-style:italics;font-size:10px;width:100px;}
.menu{display:none;padding-left:5px;position:absolute;top:15px;left:0;background:white;}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:red}
.menu a:active{color:red}
td{vertical-align:top;
</style>
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "../img/plus.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"../img/minus.gif":"../img/plus.gif";
}
</script>
</head>
<body>
<table style="width:300px;">
  <tr>
    <td>
      <div id="omenu1" class="menupunkt" onclick="showMenu(this);">
        <img id="omenu1pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
        Punkt 1
        <div id="menu1" class="menu" onclick="event.cancelBubble=true">
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
          <a href="#" onclick="return false;">Underpunkt 4</a>
        </div>
      </div>
    </td>
    <td>
<div id="omenu2" class="menupunkt" onclick="showMenu(this);">
<img id="omenu2pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 2
  <div id="menu2" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
    <td>
<div id="omenu3" class="menupunkt" onclick="showMenu(this);">
<img id="omenu3pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 3
  <div id="menu3" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
    <td>
<div id="omenu4" class="menupunkt" onclick="showMenu(this);">
<img id="omenu4pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 4
  <div id="menu4" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
    <td>
<div id="omenu5" class="menupunkt" onclick="showMenu(this);">
<img id="omenu5pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
Punkt 5
  <div id="menu5" class="menu" onclick="event.cancelBubble=true">
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
</div>
    </td>
  </tr>
</table>
Og en tekst nedenunder, som kan vise, hvordan resten opfører sig, når menuerne foldes ud !-)
</body>
</html>
Avatar billede Slettet bruger
12. august 2004 - 20:40 #7
Næsten i mål.

Nu mangler jeg bare at komme af med + / - tegnene og få dem erstattet med et L... Desuden skal boxen med undermenuen være positioneret så meget til højre for hovedmenuen at det kommer til at passe med L giffen - hvis du forstår?
Avatar billede Slettet bruger
15. august 2004 - 22:27 #8
Er du med roenving?
Avatar billede roenving Novice
15. august 2004 - 22:41 #9
Hvis du udkommenterer (eller bare fjerner !-) de to linjer med bla. 'pic' i scriptet og fjerner billederne i html-koden, kan du udvide stylen til menu-klassen:

.menu{display:none;padding:10px 10px 0 0;position:absolute;top:15px;left:0;background:url(mitLBillede.gif) 0px 0px no-repeat #fff;}

-- hvor jeg har regnet med, at dit billede er en 10*10 pixel gif, som skal skubbe til links !-)
Avatar billede roenving Novice
15. august 2004 - 22:43 #10
-- og multi-value properties i css har denne rækkefølge: top, højre, bund, venstre, så det skal selvfølgelig være:

padding:10px 0 0 10px;

Huskeregel: Ligesom et ur, starter i toppen og går højre om !-)
Avatar billede Slettet bruger
15. august 2004 - 23:10 #11
Begynder at ligne noget :)

Men ét problem dog:

.menu{display:none;padding:10px 0 0 20px;position:absolute;top:15px;left:0;background:url(L.png) 0px 0px no-repeat #fff;
      border-left-style: solid;
    border-left-width: 1px;
    border-left-color: #000000;
    border-right-style: solid;
    border-right-width: 1px;
    border-right-color: #000000;
    border-top-style: solid;
    border-top-width: 1px;
    border-top-color: #000000;
    border-bottom-style: solid;
    border-bottom-width: 1px;
    border-bottom-color: #000000;
}

mit L pic er inden i den box som fremkommer ved onclick - pointen er at den skal "ramme" den venstre border på boxen
Avatar billede Slettet bruger
15. august 2004 - 23:14 #12
eller rettere, L skal ramme det øverste venstre hjørne...
Avatar billede roenving Novice
15. august 2004 - 23:14 #13
Hvad er problemet ?-)

-- og _alle_ dine border-properties kan skrives helt sammen til:

border:1px solid black;
Avatar billede roenving Novice
15. august 2004 - 23:17 #14
Så skal du sætte et ekstra element inde i menu-boksene:

  <div id="menu5" class="menu" onclick="event.cancelBubble=true">
    <div>
      <a href="#" onclick="return false;">Underpunkt 1</a><br>
      <a href="#" onclick="return false;">Underpunkt 2</a><br>
      <a href="#" onclick="return false;">Underpunkt 3</a><br>
      <a href="#" onclick="return false;">Underpunkt 4</a>
    </div>
  </div>

-- og så:

.menu{display:none;padding:10px 0 0 20px;position:absolute;top:15px;left:0;background:url(L.png) 0px 0px no-repeat #fff;}
.menu div{border:1px solid black;}
Avatar billede Slettet bruger
15. august 2004 - 23:42 #15
Super - nu ligner det noget :) Hvad skal fjernes fra scriptet for at det med plus/minus billederne forsvinder?
Avatar billede roenving Novice
15. august 2004 - 23:45 #16
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
}
</script>

-- og så skal du selvfølgelig fjerne billerne fra html-koden ...
Avatar billede Slettet bruger
15. august 2004 - 23:53 #17
Så er den snart lige i øjet! 

Jeg mangler bare at få stylet den box som selve hovemenupunkterne ligger i (uden at det påvirker udseendet af noget af det andet)
Avatar billede roenving Novice
16. august 2004 - 00:06 #18
Det er denne i stylesheetet, du skal have fat i:

.menupunkt{position:relative;font-family:tahoma,verdana,arial,sans-serif;cursor:pointer;color:#9d52be;background:#fff;font-weight:800;font-style:italics;font-size:10px;width:100px;}


-- eventuelt skal du sætte et element rundt om teksten i hovedmenupunktet og style det ...
Avatar billede Slettet bruger
16. august 2004 - 11:34 #19
nu har jeg fået stylet dem som boxe, men de figurerer som særskilte boxe - jeg vil gerne ha' at det ser ud som én lang box hvor punkterne står ved siden af hinanden
Avatar billede roenving Novice
16. august 2004 - 11:35 #20
border-width:1px 0;
Avatar billede Slettet bruger
16. august 2004 - 11:48 #21
har jeg gjort med border-top:1px solid #C6C6C4; border-bottom:1px solid #C6C6C4; men der er stadig mellemrum mellem hvert af punkterne
Avatar billede roenving Novice
16. august 2004 - 11:49 #22
table{border-collapse:collapse}
td{border:0;}

evt. skal du give tabellen et id og så bruge det !-)
Avatar billede Slettet bruger
16. august 2004 - 11:58 #23
hmm, jeg tror vi taler forbi hinanden. Problemet er at hver af cellerne med et hovedmenupunkt ikke ligger klods op og ned af den foregående. Hvis jeg minimerer vinduet kommer de tættere på hinanden, men tanken er, at det skal være én lang box hvor punkterne så er i :)
Avatar billede roenving Novice
16. august 2004 - 12:00 #24
Men de ligger inde i nogle tabel-celler, og hvis du kollapser disse cellers border og sætter den til 0 vil div'erne komme til at ligge klods op af hinanden !-)
Avatar billede Slettet bruger
16. august 2004 - 12:02 #25
Hmm nope - det hjælper ikke..

Poster lige koden

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/528645">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body{background-color:white;}

.menupunkt{position:relative;font-family:verdana,arial,sans-serif;cursor:pointer;color:#000000;background:#EFEFE5;font-style:italics;font-size:9px;width:100px; border-top:1px solid #C6C6C4; border-bottom:1px solid #C6C6C4;}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:black;text-decoration:underline;}
.menu a:active{color:red}

.menu{display:none;padding:10px 0 0 14px;position:absolute;top:15px;left:0;background:url(L.png) 0px 0px no-repeat #FFFFFF;}
.menu div{padding: 2px 4px 2px 4px; border:1px solid #C6C6C4; background-color: #EFEFE5;}
table{border-collapse:collapse}

td{vertical-align:top;border:0;}
</style>
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
}
</script>

</head>
<body>
<table cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td>
      <div id="omenu1" class="menupunkt" onclick="showMenu(this);">
        - hjem -
        <div id="menu1" class="menu" onclick="event.cancelBubble=true">
  <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
        </div>
      </div>
    </td>
    <td>
<div id="omenu2" class="menupunkt" onclick="showMenu(this);">
- aktuelt -
  <div id="menu2" class="menu" onclick="event.cancelBubble=true">
  <div>
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
  </div>
    </td>
    <td>
</div>
<div id="omenu3" class="menupunkt" onclick="showMenu(this);">
Punkt 3
  <div id="menu3" class="menu" onclick="event.cancelBubble=true">
  <div>
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
  </div>
    </td>
    <td>
</div>
<div id="omenu4" class="menupunkt" onclick="showMenu(this);">
Punkt 4
  <div id="menu4" class="menu" onclick="event.cancelBubble=true">
  <div>
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
  </div>
    </td>
    <td>
</div>

<div id="omenu5" class="menupunkt" onclick="showMenu(this);">
Punkt 5
  <div id="menu5" class="menu" onclick="event.cancelBubble=true">
  <div>
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
  </div>
</div>
    </td>
  </tr>
</table>
<!-- Og en tekst nedenunder, som kan vise, hvordan resten opfører sig, når menuerne foldes ud !-) -->
</body>
</html>
Avatar billede roenving Novice
16. august 2004 - 12:05 #26
.menupunkt{position:relative;font-family:verdana,arial,sans-serif;cursor:pointer;color:#000000;background:#EFEFE5;font-style:italics;font-size:9px;width:100%; border-top:1px solid #C6C6C4; border-bottom:1px solid #C6C6C4;}

100% bredde på div'erne, eller også skal du ikke sætte 100% bredde på tabellen !-)
Avatar billede Slettet bruger
16. august 2004 - 12:12 #27
det hjalp, bortset fra at jeg så gerne vil ha' dem til at stå lidt tættere, de er meget langt fra hinanden
Avatar billede roenving Novice
16. august 2004 - 12:16 #28
En tabels celler vil strække sig over den plads, som er til rådighed, derfor bemærkningen om tabellens bredde ...

Et alternativ kan være ikke at sætte dem i hver sin celle, men sætte alle i den samme celle, og så sætte float:left; på .menupunkt !-)
Avatar billede Slettet bruger
16. august 2004 - 12:34 #29
hvis jeg sætter dem alle i én celle så kommer de under hinanden
Avatar billede roenving Novice
16. august 2004 - 12:35 #30
Har du sat float:left; ?-)
Avatar billede Slettet bruger
16. august 2004 - 12:43 #31
yessir
Avatar billede Slettet bruger
16. august 2004 - 12:46 #32
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/528645">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body{background-color:white;}

.menupunkt{position:relative;font-family:verdana,arial,sans-serif;cursor:pointer;color:#000000;background:#EFEFE5;font-style:italics;font-size:9px;width:100%; border-top:1px solid #C6C6C4; border-bottom:1px solid #C6C6C4;float:left}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:black;text-decoration:underline;}
.menu a:active{color:red}

.menu{display:none;padding:40px 0 0 14px;position:absolute;top:15px;left:0;background:url(grafik/L.png) 0px 0px no-repeat;}
.menu div{padding: 2px 4px 2px 4px; border:1px solid #C6C6C4; background-color: #EFEFE5;}

td{vertical-align:top;}
</style>
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
}
</script>

</head>
<body>
<table cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td>
      <div id="omenu1" class="menupunkt" onclick="showMenu(this);">
        - hjem -
        <div id="menu1" class="menu" onclick="event.cancelBubble=true">
  <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
        </div>
      </div>

<div id="omenu2" class="menupunkt" onclick="showMenu(this);">
- aktuelt -
  <div id="menu2" class="menu" onclick="event.cancelBubble=true">
  <div>
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
  </div>
</div>


<div id="omenu3" class="menupunkt" onclick="showMenu(this);">
Punkt 3
  <div id="menu3" class="menu" onclick="event.cancelBubble=true">
  <div>
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
  </div>
</div>

<div id="omenu4" class="menupunkt" onclick="showMenu(this);">
Punkt 4
  <div id="menu4" class="menu" onclick="event.cancelBubble=true">
  <div>
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
  </div>
</div>

<div id="omenu5" class="menupunkt" onclick="showMenu(this);">
Punkt 5
  <div id="menu5" class="menu" onclick="event.cancelBubble=true">
  <div>
    <a href="#" onclick="return false;">Underpunkt 1</a><br>
    <a href="#" onclick="return false;">Underpunkt 2</a><br>
    <a href="#" onclick="return false;">Underpunkt 3</a><br>
    <a href="#" onclick="return false;">Underpunkt 4</a>
  </div>
  </div>
</div>
    </td>
  </tr>
</table>
<!-- Og en tekst nedenunder, som kan vise, hvordan resten opfører sig, når menuerne foldes ud !-) -->
</body>
</html>
Avatar billede roenving Novice
16. august 2004 - 12:53 #33
-- du mangler at lukke en div i første blok ...
Avatar billede Slettet bruger
16. august 2004 - 12:55 #34
sandt :)

men det står nu stadig under hinanden
Avatar billede roenving Novice
16. august 2004 - 13:08 #35
Det gør de ikke hos mig ...

-- der er forøvrigt slet ikke brug for tabellen mere, så den kan med fordel erstattes af en div, men det har nu ikke nogen betydning andet end for kodens længde !-)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/528645">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body{background-color:white;}

.menupunkt{position:relative;font-family:verdana,arial,sans-serif;cursor:pointer;color:#000000;
background:#EFEFE5;font-style:italics;font-size:9px;width:100px; border-top:1px solid #C6C6C4;
border-bottom:1px solid #C6C6C4;float:left;}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:black;text-decoration:underline;}
.menu a:active{color:red}

.menu{display:none;padding:10px 0 0 14px;position:absolute;top:15px;left:0;background:url(L.png) 0px 0px no-repeat #FFFFFF;}
.menu div{padding: 2px 4px 2px 4px; border:1px solid #C6C6C4; background-color: #EFEFE5;}
table{border-collapse:collapse}

td{vertical-align:top;border:0;}
</style>
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
}
</script>

</head>
<body>
  <div>
    <div id="omenu1" class="menupunkt" onclick="showMenu(this);">
      - hjem -
      <div id="menu1" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
        </div>
      </div>
    </div>
    <div id="omenu2" class="menupunkt" onclick="showMenu(this);">
      - aktuelt -
      <div id="menu2" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
          <a href="#" onclick="return false;">Underpunkt 4</a>
        </div>
      </div>
    </div>
    <div id="omenu3" class="menupunkt" onclick="showMenu(this);">
      Punkt 3
      <div id="menu3" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
          <a href="#" onclick="return false;">Underpunkt 4</a>
        </div>
      </div>
    </div>
    <div id="omenu4" class="menupunkt" onclick="showMenu(this);">
      Punkt 4
      <div id="menu4" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
          <a href="#" onclick="return false;">Underpunkt 4</a>
        </div>
      </div>
    </div>
    <div id="omenu5" class="menupunkt" onclick="showMenu(this);">
      Punkt 5
      <div id="menu5" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
          <a href="#" onclick="return false;">Underpunkt 4</a>
        </div>
      </div>
    </div>
  </div> 
 
  <!-- Og en tekst nedenunder, som kan vise, hvordan resten opfører sig, når menuerne foldes ud !-) -->
</body>
</html>
Avatar billede Slettet bruger
16. august 2004 - 13:46 #36
Tusind tak for hjælpen!

Lige et par spørgsmål til:

- hvis jeg nu får brug for et niveau mere i menuen, er det så muligt med det nuværende script?

- hvad gør jeg hvis linkteksterne er for lange og teksten bliver ombrudt - det ville være smartere hvis boxene tilpassede sig teksternes længde
Avatar billede roenving Novice
16. august 2004 - 13:54 #37
Umiddelbart nej, men der er jo masser af den slags, så det skulle ikke være svært at finde, f.eks. coolmenus, som bruges her på sitet ...

-- lige nu har boksene en længde, den kan du fjerne !-)

-- og så kan du f.eks. sætte padding:0 20px; på .menupunkt ...

-- du skal så være opmærksom på, at undermenuerne også bliver påvirket, da de jo er defineret inde i menupunkterne !-)

-- els velbekomme '-)
Avatar billede Slettet bruger
16. august 2004 - 14:02 #38
og ét til, jeg har fundet ud af at det måske ER ret hensigtsmæssigt med en grafisk indikation men når jeg prøver at bruge det, får jeg fejlen

document.getElementById(...) er null eller ikke et objekt
Avatar billede Slettet bruger
16. august 2004 - 14:02 #39
som er linjen document.getElementById('o'+divs[i].id+'pic').src = "grafik/ned.gif";
Avatar billede roenving Novice
16. august 2004 - 14:03 #40
Hvordan gør du ?-)
Avatar billede roenving Novice
16. august 2004 - 14:04 #41
Når du gør sådan?-)

    <div id="omenu5" class="menupunkt" onclick="showMenu(this);">
      <img id="omenu5pic" src="../img/plus.gif" height="10" width="10" alt="Fold ud/ind">
      Punkt 5
      <div id="menu5" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
          <a href="#" onclick="return false;">Underpunkt 4</a>
        </div>
      </div>
    </div>
Avatar billede Slettet bruger
16. august 2004 - 14:08 #42
når jeg gør sådan her

  <div>
    <div id="omenu1" class="menupunkt" onclick="showMenu(this);">
    &nbsp;&nbsp;<img id="omenu1pic" src="grafik/pil.gif" alt="Fold ud/ind">
    &nbsp;&nbsp;hjem&nbsp;&nbsp;&nbsp;
      <div id="menu1" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
        </div>
      </div>
    </div>

og scriptet ser således ud

<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "grafik/ned.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"grafik/ned.gif":"grafik/pil.gif";
}
</script>
Avatar billede roenving Novice
16. august 2004 - 14:13 #43
Har du en alle steder ?-)
Avatar billede Slettet bruger
16. august 2004 - 14:18 #44
nej
Avatar billede roenving Novice
16. august 2004 - 14:24 #45
Så sæt en alle steder, men brug enten visibility:hidden; eller display:none; de steder, hvor den ikke skal vises ...

-- eller lav en betingelse i scriptet:

<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      pic = document.getElementById('o'+divs[i].id+'pic');
      if(pic)pic.src = "grafik/ned.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  pic = document.getElementById(d.id+'pic');
  if(pic)pic.src = (st.display=='block')?"grafik/ned.gif":"grafik/pil.gif";
}
</script>

-- absolut utestet !-)
Avatar billede Slettet bruger
16. august 2004 - 14:40 #46
det hjalp at sætte én alle stederne :)

Fandt lige to ting til:

- hvis jeg vil sætte en border attribut på den box som selve menuerne ligger i, så kommer de på alle boxene og jeg vil kun ha' dem på den yderste venstre kant og på den yderste højre kant. Kunne man lave en <div> udenom og så give den en klasse med de specs? Synes ikke jeg kan få det til at virke...

- jeg vil gerne ha' boxen med menupunkterne til at fylde det hele i bredden
Avatar billede roenving Novice
16. august 2004 - 14:44 #47
<body>
  <div style="border:1px solid #C6C6C4;border-width:0 1px;">

-- eller border-left og border-right ...
Avatar billede roenving Novice
16. august 2004 - 14:45 #48
-- og du kan jo sætte baggrund og border i alle retninger på den omkransende div ...
Avatar billede Slettet bruger
16. august 2004 - 14:51 #49
jeg har

.header{background-color: #EAEA0C; padding: 8px 0 0 15px; border-top:1px solid #C6C6C4; border-left:1px solid #C6C6C4; border-right:1px solid #C6C6C4;}


<body>
  <div class="header">
    <a href="default.asp"><img src="grafik/top.gif" /></a>
  </div>
  <div>
    <div id="omenu1" class="menupunkt" onclick="showMenu(this);">
    &nbsp;&nbsp;<img id="omenu1pic" src="grafik/pil.gif" alt="Fold ud/ind">
    &nbsp;&nbsp;hjem&nbsp;&nbsp;&nbsp;
      <div id="menu1" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
        </div>
      </div>
    </div>

etc.

dvs. at den øverste box med logo har borders og den box med menuen skal have den samme border, men jeg kan ikke få det til at virke. Tænkte på at lave en <div class="ramme"> for der skal sådan set en ramme uden om det hele...
Avatar billede roenving Novice
16. august 2004 - 14:56 #50
.header{background-color: #EAEA0C; padding: 8px 0 0 15px; border:1px solid #C6C6C4;border-bottom-width:0px;}
.ramme{border:1px solid #C6C6C4;background:#EFEFE5;}


<body>
  <div class="header">
    <a href="default.asp"><img src="grafik/top.gif" /></a>
  </div>
  <div class="ramme">
Avatar billede Slettet bruger
16. august 2004 - 15:03 #51
virker ikke - der kommer bare en tykkere kant mellem top-boxen og menuboxen
Avatar billede roenving Novice
16. august 2004 - 15:07 #52
Den skal åbenbart have det begge steder:

.ramme{border:1px solid #C6C6C4;border-top-width:0px;background:#EFEFE5;}
Avatar billede Slettet bruger
16. august 2004 - 15:57 #53
der kommer stadig ingen venstre og højreramme på selve den box hvor menuen er.

Hvad med længden som jeg gerne vil ha' til at fylde det hele ligesom .header div'en (hvis jeg snart kan tillade mig at stille flere spørgsmål?)
Avatar billede Slettet bruger
16. august 2004 - 16:09 #54
en anden ting, kan undermenuerne være uafhængige af deres hovedmenupunkt i den forstand, at deres længde (forudsat at der ikke er defineret width på undermenuerne)ikke er begrænset af hvor langt et ord selve hovemenupunktet er?
Avatar billede roenving Novice
16. august 2004 - 16:17 #55
Du kan sagtens sætte en selvstændig længde på undermenuerne ...
Avatar billede roenving Novice
16. august 2004 - 16:17 #56
-- og tak for point ;~}
Avatar billede Slettet bruger
16. august 2004 - 16:30 #57
jeg vil ikke ha' en fixeret længde på alle undermenuer - de skal snarere tilpasse sig efter hvor lange undermenupunkter der er
Avatar billede roenving Novice
16. august 2004 - 16:49 #58
Jeg kan ikke lige nu gennemskue en måde hvorpå man kunne det ...
Avatar billede Slettet bruger
20. september 2004 - 19:18 #59
Smider du et svar roenving?
Avatar billede roenving Novice
21. september 2004 - 03:07 #60
?-)

-- jeg har jo fået point for en måned siden !-)
Avatar billede Slettet bruger
07. oktober 2004 - 23:40 #61
det har du jo også :)

kan godt være jeg snart vender tilbage med den her menu, fik det aldrig rigtigt til at spille :(
Avatar billede Slettet bruger
10. oktober 2004 - 15:19 #62
Jeg har denne kode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simpel menu</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="roenving,http://www.eksperten.dk/spm/528645">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body{background-color:white;}

.menupunkt{padding: 3px 3px 3px 3px; position:relative;font-family:verdana,arial,sans-serif;cursor:pointer;color:#000000;
background:#EFEFE5;font-style:italics;font-size:10px;border-top:1px solid #C6C6C4;
border-bottom:1px solid #C6C6C4;float:left;}
.menu a{text-decoration:none;}
.menu a:link{color:black;}
.menu a:visited{color:black;}
.menu a:hover{color:black;text-decoration:underline;}
.menu a:active{color:red}

.menu{display:none;padding:15px 0 0 10px;position:absolute;top:18px;left:8px;background:url(grafik/L.png) 0px 0px no-repeat;}
.menu div{padding: 2px 10px 2px 10px; border:1px solid #C6C6C4; background-color: #EFEFE5; line-height:150%;}



.header{background-color: #EAEA0C; padding: 8px 0 0 15px; border:1px solid #C6C6C4;border-bottom-width:0px;}

.ramme{border:1px solid #C6C6C4;border-top-width:0px;background:#EFEFE5;}

.indhold {text-align:left;}

h1{font-family:verdana, arial; font-size: 14px;}

img{border:0}

</style>
<script language="javascript" type="text/javascript">
function showMenu(d){
  var id = d.id.substring(5);
  divs = document.getElementsByTagName('DIV');
  for(i=0;divs.length>i;i++){
    if(divs[i].id.indexOf('menu')==0&&divs[i].id!='menu'+id){
      divs[i].style.display='none';
      document.getElementById('o'+divs[i].id+'pic').src = "grafik/pil.gif";
    }
  }
  st = document.getElementById('menu'+id).style;
  st.display = (st.display!='block')?'block':'none';
  document.getElementById(d.id+'pic').src = (st.display=='block')?"grafik/ned.gif":"grafik/pil.gif";
}
</script>

</head>
<body>
  <div class="header">
    <a href="default.asp"><img src="grafik/top2.gif" /></a>
  </div>
<div class="ramme">
  <div>
    <div id="omenu1" class="menupunkt" onclick="showMenu(this);">
    &nbsp;&nbsp;<img id="omenu1pic" src="grafik/pil.gif" alt="Fold ud/ind">
    &nbsp;&nbsp;hjem&nbsp;&nbsp;&nbsp;
      <div id="menu1" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">sitemap</a><br>
        </div>
      </div>
    </div>
    <div id="omenu2" class="menupunkt" onclick="showMenu(this);">
    &nbsp;&nbsp;<img id="omenu2pic" src="grafik/pil.gif" alt="Fold ud/ind">
      &nbsp;&nbsp;organisation&nbsp;&nbsp;&nbsp;
      <div id="menu2" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">om foreningen</a>
          <a href="#" onclick="return false;">bestyrelsen</a>
        </div>
      </div>
    </div>
    <div id="omenu3" class="menupunkt" onclick="showMenu(this);">
    &nbsp;&nbsp;<img id="omenu3pic" src="grafik/pil.gif" alt="Fold ud/ind">
      &nbsp;&nbsp;medlemsservice&nbsp;&nbsp;&nbsp;
      <div id="menu3" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">indmeldelse</a><br>
          <a href="#" onclick="return false;">medlemslisten</a><br>
          <a href="#" onclick="return false;">nyhedsbrevet</a><br>
        </div>
      </div>
    </div>
    <div id="omenu4" class="menupunkt" onclick="showMenu(this);">
    &nbsp;&nbsp;<img id="omenu4pic" src="grafik/pil.gif" alt="Fold ud/ind">
      &nbsp;&nbsp;tidsskrift&nbsp;&nbsp;&nbsp;
      <div id="menu4" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">seneste</a><br>
          <a href="#" onclick="return false;">abonnement</a><br>
          <a href="#" onclick="return false;">årgange</a><br>
          <a href="#" onclick="return false;">redaktion</a>
          <a href="#" onclick="return false;">kontakt</a>
        </div>
      </div>
    </div>
    <div id="omenu5" class="menupunkt" onclick="showMenu(this);">
    &nbsp;&nbsp;<img id="omenu5pic" src="grafik/pil.gif" alt="Fold ud/ind">
      &nbsp;&nbsp;forlag&nbsp;&nbsp;&nbsp;
      <div id="menu5" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
          <a href="#" onclick="return false;">Underpunkt 4</a>
        </div>
      </div>
    </div>
    <div id="omenu6" class="menupunkt" onclick="showMenu(this);">
    &nbsp;&nbsp;<img id="omenu6pic" src="grafik/pil.gif" alt="Fold ud/ind">
      &nbsp;&nbsp;arkiv&nbsp;&nbsp;&nbsp;
      <div id="menu6" class="menu" onclick="event.cancelBubble=true">
        <div>
          <a href="#" onclick="return false;">Underpunkt 1</a><br>
          <a href="#" onclick="return false;">Underpunkt 2</a><br>
          <a href="#" onclick="return false;">Underpunkt 3</a><br>
          <a href="#" onclick="return false;">Underpunkt 4</a>
        </div>
      </div>
    </div>
  </div> 
</div>
  </div>
</body>
</html>

1)
er det muligt at lave det om, så det fungerer som tabeller i stedet for divs (ved godt det er dårlig stil), men jeg kan bedre håndtere det på den måde

2)
hvis jeg nu vil lave en fast bredde på undermenupunkterne, hvordan gør jeg så det?

på forhånd tak :)
Avatar billede roenving Novice
10. oktober 2004 - 16:04 #63
1) man kan godt lave det om til tabeller, men så skal du bare skrive 4-8 tags for hvert menupunkt mere ...

2) nemmest ved at sætte display:block;width:120px; på .menu a{} og så fjerne <br>-tags i punkterne !-)
Avatar billede Slettet bruger
10. oktober 2004 - 16:21 #64
1) ok, undlader det

2) fedt nok, det virker :)

hvad med browservenligheden i scriptet (kan jeg forvente at det opfører sig ordenligt i Mozilla, Opera etc.)
Avatar billede roenving Novice
10. oktober 2004 - 16:27 #65
Der skulle kun være problemer med decideret gamle browsere, for der er brugt standard DOM-metoder, så det er vist fra Mozilla0, Netscape 6, Opera ca. 3 og IE 5, det er fuldt understøttet !-)
Avatar billede Slettet bruger
10. oktober 2004 - 17:40 #66
Super :)

Hvordan gør jeg, hvis jeg vil fjerne tekstombrydningen i undermenupunkterne`? Altså, undermenupunkterne skal komme efter hinanden horisontalt og ikke vertikalt...
Avatar billede roenving Novice
10. oktober 2004 - 17:42 #67
Sætter float:left; på !-)
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