2012-11-22 6 views
1

메인 메뉴의 il 상대 위치와 내부에 ul을 절대 위치로 지정하여 요소 아래에 하위 메뉴가있는 메뉴를 만들려고합니다. 하위 메뉴가 ul에 대한 내용을 부모가 아닌 컨테이너로 취급하는 이유는 무엇입니까? li?컨테이너에 절대 요소를 배치하는 방법은 무엇입니까?

되는 HTML :

<nav> 
    <ul> 
     <li><a href="#">Menu Item 1</a></li> 
     <li><a href="#">Menu Item 2</a> 
      <ul> 
       <li><a href="#">Submenu Item 1</a></li> 
       <li><a href="#">Submenu Item 2</a></li> 
       <li><a href="#">Submenu Item 3</a></li> 
      </ul> 
     </li> 
     <li><a href="#">Menu Item 3</a></li> 
     <li><a href="#">Menu Item 4</a></li> 
     <li><a href="#">Menu Item 5</a></li> 
    </ul> 
</nav>​ 

는 CSS :

nav a { 
    float: left; 
    padding: 10px; 
    border: solid 1px #C0C0C0; 
    margin-left: -1px; 
} 

nav li { 
    position: relative; 
} 

nav li ul { 
    position: absolute; 
} 

http://jsfiddle.net/6pgHa/

답변

2

가 왼쪽 따라서 위치를 정의 떠내려 앵커 태그이기 때문에 그것은있을 수 있습니다, li 요소가 아닙니다.

nav a 선택기를 nav li으로 변경하면 수정됩니다. li 요소는 현재 코드에서 어떤 위치를 차지하지 않습니다.

1

나는 메뉴가 내가 생각하는 방법 당신이 원하는 일을 확인하기 위해 바이올린을 업데이트했습니다 단지 호기심 http://jsfiddle.net/6pgHa/3/

nav { 
width: 600px; 
margin: 50px auto 0; 
} 

nav > ul li { 
float: left; 
position: relative; 
} 

nav > ul li a { 
float: left; 
padding: 10px; 
border: solid 1px #C0C0C0; 
display:inline-block; 
} 


nav > ul li ul { 
position: absolute; 
top:50px; 
left:-9999px; 
} 

nav > ul li:hover ul { 
left:0; 
} 
+0

을 : 나는'왼쪽 사용할 때 그것을 왜 : -9999px;' 각 안의 'a'의 길이는 내용에 따라 다르지만 제거 할 때 부모의 크기에 따라 모두 다릅니 까? – ilyo

+0

무슨 뜻인지 확실하지 않습니다. 남은 것 : -9999px에서 수행하는 작업은 UL이 9999px만큼 왼쪽으로 이동하여 볼 수 없도록하는 것입니다. 그런 다음 마우스를 올리면 '왼쪽'속성이 '0'으로 변경되어 원래 위치로 되돌아갑니다. –

+0

알아. 숨기기 기술을 사용할 때 하위 메뉴 항목의 너비를 살펴본 다음 'left : -9999px;'를 제거하고 너비를 다시 살펴보십시오. – ilyo

관련 문제