Avatar billede Slettet bruger
21. oktober 2008 - 13:48 Der er 5 kommentarer og
1 løsning

text align i CSS-Menu

Jeg har en menu af typen der folder sig ud når man klikker på hovedpunkterne (CSS/JS). Mit problem er at undermenupunkterne skal alignes til venstre og ligge lige under hovedpunkterne men i feks Firefox og Safari ligger de alt for langt til højre modsat i IE7 hvor de ligger som de skal. Mangler jeg en parameter i mit stylesheet eller..?
Håber på lidt hjælp :-)

HTML-kode :
<ul id="menu">
  <li>link 1
    <ol>
<li><a title="#" href="#">Link 1.1</a></li>
<li><a title="#" href="#">Link 1.2</a></li>
<li><a title="#" href="#">Link 1.3</a></li>
</ol>
  </li>
  <li>link 2
    <ol>
<li><a title="#" href="#">Link 2.1</a></li>
<li><a title="#" href="#">Link 2.2</a></li>
<li><a title="#" href="#">Link 2.3</a></li>
</ol>
  </li>
  <li>link 3
    <ol>
<li><a title="#" href="#">Link 3.1</a></li>
<li><a title="#" href="#">Link 3.2</a></li>
<li><a title="#" href="#">Link 3.3</a></li>
</ol>
  </li>
</ul>

CSS :
ul#menu {
  width: 200px;
  list-style-type: none;
  margin: 0;
  padding: 0;
  font-weight:bold;
}
ul#menu ol {
  display: none;
  text-align: left;
  list-style-type: none;
  margin: 0;
  margin-left:5px;
  font-weight:normal;
}
ul#menu li,
  ul#menu a {
  font-family: verdana, sans-serif;
  font-size: 11px;
  color: #666666;
}
ul#menu li {
  line-height: 20px;
}
ul#menu a {
  text-decoration: none;
  outline: none;
}
ul#menu a:hover {
  color: #666666;
}
ul#menu a.active {
  color: #666666;
}

JS :
if(!window.Node){
  var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
}

function checkNode(node, filter){
  return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
}

function getChildren(node, filter){
  var result = new Array();
  var children = node.childNodes;
  for(var i = 0; i < children.length; i++){
    if(checkNode(children[i], filter)) result[result.length] = children[i];
  }
  return result;
}

function getChildrenByElement(node){
  return getChildren(node, "ELEMENT_NODE");
}

function getFirstChild(node, filter){
  var child;
  var children = node.childNodes;
  for(var i = 0; i < children.length; i++){
    child = children[i];
    if(checkNode(child, filter)) return child;
  }
  return null;
}

function getFirstChildByText(node){
  return getFirstChild(node, "TEXT_NODE");
}

function getNextSibling(node, filter){
  for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling){
    if(checkNode(sibling, filter)) return sibling;
  }
  return null;
}
function getNextSiblingByElement(node){
        return getNextSibling(node, "ELEMENT_NODE");
}

// Menu Functions & Properties

var activeMenu = null;

function showMenu() {
  if(activeMenu){
    activeMenu.className = "";
    getNextSiblingByElement(activeMenu).style.display = "none";
  }
  if(this == activeMenu){
    activeMenu = null;
  } else {
    this.className = "active";
    getNextSiblingByElement(this).style.display = "block";
    activeMenu = this;
  }
  return false;
}

function initMenu(){
  var menus, menu, text, a, i;
  menus = getChildrenByElement(document.getElementById("menu"));
  for(i = 0; i < menus.length; i++){
    menu = menus[i];
    text = getFirstChildByText(menu);
    a = document.createElement("a");
    menu.replaceChild(a, text);
    a.appendChild(text);
    a.href = "#";
    a.onclick = showMenu;
    a.onfocus = function(){this.blur()};
  }
}

if(document.createElement) window.onload = initMenu;
Avatar billede ssv Nybegynder
21. oktober 2008 - 14:00 #1
Jeg tror det vil være lidt nemmere at se det "in action" - har du et link?
Avatar billede Slettet bruger
21. oktober 2008 - 14:18 #2
Avatar billede zips Juniormester
21. oktober 2008 - 15:32 #3
Sæt padding: 0; på din ul#menu ol så falder den ind på plads :)
Avatar billede Slettet bruger
21. oktober 2008 - 22:07 #4
Det gjorde den sgu også, der skal sgu nogle gange så lidt til. Du er nu officielt min helt :-) Smid et svar og få velfortjente point hvis det har interesse...
Avatar billede zips Juniormester
21. oktober 2008 - 22:13 #5
Her er et svar :)
Avatar billede zips Juniormester
21. oktober 2008 - 22:33 #6
Tak for point :)
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