2014-03-07 2 views
1

저는 CSS가 처음인데 CSS 드롭 다운 메뉴를 만들려고했습니다.내 호버 배경이 컨테이너를 넘어서서 나타나는 이유

몇 시간 동안 CSS를 읽은 후, 하나를 만들었지 만, 부모 UL의 마지막 아이가 공중에 떠있을 때 피가 흘립니다. 여기

는 JSFiddle 링크입니다 : 내 놨 CSS에 대해 사과 JSFiddle Code

<mini-nav> 
<ul> 
    <li><a href="#">Services</a> 
     <ul> 
      <li>Service 1</li> 
      <li>Service 2</li> 
      <li>Service 3</li> 
      <li>Service 4</li> 
     </ul> 
    </li> 
    <li><a href="#">Security</a> 
     <ul> 
      <li>Security 1</li> 
      <li>Security 2</li> 
      <li>Security 3</li> 
     </ul> 
    </li> 
    <li><a href="#">Centres</a> 
     <ul> 
      <li>Centres 1</li> 
      <li>Centres 2</li> 
      <li>Centres 3</li> 
     </ul> 
    </li> 
</ul> 

mini-nav ul 
{ 
    width: 237px; 
    text-align: center; 
    display: inline; 
    margin: 0; 
    padding: 5px 0 5px 0px; 
    list-style-type: none; 
    -moz-border-radius: 5px; 
    -webkit-border-radius: 5px; 
    border-radius: 5px; 
    background: #58585A; 
    box-shadow: 3px 3px 5px #828282; 
} 
mini-nav ul li 
{ 
    font-size: 13px; 
    display: inline-block; 
    margin-right: -4px; 
    position: relative; 
    width: 78px; 
    padding: 5px 0 5px 0px; 
    border-right: 1px solid white; 
    cursor: pointer; 
    -webkit-transition: all 0.2s; 
    -moz-transition: all 0.2s; 
    -ms-transition: all 0.2s; 
    -o-transition: all 0.2s; 
    transition: all 0.2s; 
} 
mini-nav ul > li:last-child 
{ 
    border-right: none; 
} 
mini-nav ul li:hover 
{ 
    background: #E8E8E8; 
    color: black; 
    background-image: url(../mes-images/menu-topper.png); 
    background-position: top left; 
    background-repeat: repeat-x; 
    display: inline-block; 
} 

mini-nav ul li:hover:first-child 
{ 
    -moz-border-radius: 5px 0 0 0; 
    -webkit-border-radius: 5px 0 0 0; 
    border-radius: 5px 0 0 0; 
    -webkit-background-clip: padding-box; 
    -moz-background-clip: padding; 
    background-clip:   padding-box; 
} 
mini-nav ul li:hover:last-child 
{ 
    -moz-border-radius: 0 5px 0 0; 
    -webkit-border-radius: 0 5px 0 0; 
    border-radius: 0 5px 0 0; 
    -webkit-background-clip: padding-box; 
    -moz-background-clip: padding; 
    background-clip:   padding-box; 
} 

mini-nav ul li:hover a 
{ 
    color: black; 
} 

mini-nav ul li:hover ul 
{ 
    display: block; 
    opacity: 0.8; 
    visibility: visible; 
} 

mini-nav ul li a 
{ 
    color: White; text-decoration: none; 
} 

mini-nav ul li ul 
{ 
    text-align: left; 
    padding:0; 
    position: absolute; 
    top: 27px; 
    left: 0; 
    width: auto; 
    display: none; 
    visibility: hidden; 
    -webkit-transiton: opacity 0.2s; 
    -moz-transition: opacity 0.2s; 
    -ms-transition: opacity 0.2s; 
    -o-transition: opacity 0.2s; 
    -transition: opacity 0.2s; 
    -moz-border-radius: 0 0 5px 5px; 
    -webkit-border-radius: 0 0 5px 5px; 
    border-radius: 0 0 5px 5px; 
} 
mini-nav ul ul > li:last-child 
{ 
    border-bottom: none; 
} 
mini-nav ul li ul li:hover 
{ 
    background: #E8E8E8; 
    color: black; 
    width: 110px; 
} 
mini-nav ul li ul li 
{ 
    display: block; 
    color: #fff; 
    width: 110px; 
    border-bottom: solid 1px silver; 
    padding-left: 12px; 
    border-right: none; 
    margin-right: 0; 
} 
mini-nav ul li ul li:hover:last-child 
{ 
    -moz-border-radius: 0 0 5px 5px; 
    -webkit-border-radius: 0 0 5px 5px; 
    border-radius: 0 0 5px 5px; 
} 

!

+0

문제는 메인 메뉴의 범위를 벗어난가는 센터 하위 메뉴인가? – DickieBoy

+0

아니요 ...하지만 그걸 알아 차렸고 다음 코드를 추가하여 수정했습니다 : mini-nav ul li : last-child ul {left : -44px; } –

답변

2

,이 코드

mini-nav ul > li:last-child { border-right: none; } 

찾아 "여백 : 0"을 추가 이런 식으로 그래서 그것으로 마지막으로

mini-nav ul > li:last-child { border-right: none; margin:0; } 

이 당신이 원하는 무엇인가? 링크가 깨진 경우

DEMO

코드를 사용 :

/* Parent CSS */ 
mini-nav ul { 
    width: 237px; 
    text-align: center; 
    display: inline; 
    margin: 0; 
    padding: 5px 0 5px 0px; 
    list-style-type: none; 
    -moz-border-radius: 5px; 
    -webkit-border-radius: 5px; 
    border-radius: 5px; 
    background: #58585A; 
    box-shadow: 3px 3px 5px #828282; 
} 
mini-nav ul li { 
    font-size: 13px; 
    display: inline-block; 
    margin-right:-4px; 
    position: relative; 
    width: 78px; 
    padding: 5px 0 5px 0px; 
    border-right: 1px solid white; 
    cursor: pointer; 
    -webkit-transition: all 0.2s; 
    -moz-transition: all 0.2s; 
    -ms-transition: all 0.2s; 
    -o-transition: all 0.2s; 
    transition: all 0.2s; 
} 
mini-nav ul > li:last-child { border-right: none; margin:0; } 
mini-nav ul li:hover 
{ 
    background: #E8E8E8; 
    color: black; 
    background-image: url(../mes-images/menu-topper.png); 
    background-position: top left; 
    background-repeat: repeat-x; 
    display: inline-block; 
} 

mini-nav ul li:hover:first-child { 
    -moz-border-radius: 5px 0 0 0; 
    -webkit-border-radius: 5px 0 0 0; 
    border-radius: 5px 0 0 0; 
    -webkit-background-clip: padding-box; 
    -moz-background-clip: padding; 
    background-clip:   padding-box; 
} 
mini-nav ul li:hover:last-child { 
    -moz-border-radius: 0 5px 0 0; 
    -webkit-border-radius: 0 5px 0 0; 
    border-radius: 0 5px 0 0; 
    -webkit-background-clip: padding-box; 
    -moz-background-clip: padding; 
    background-clip:   padding-box; 
} 

mini-nav ul li:hover a { color: black; } 

mini-nav ul li:hover ul { 
    display: block; 
    opacity: 0.8; 
    visibility: visible; 
} 

mini-nav ul li a { color: White; text-decoration: none; } 

/* Child CSS */ 
mini-nav ul li ul { 
    text-align: left; 
    padding:0; 
    position: absolute; 
    top: 27px; 
    left: 0; 
    width: auto; 
    display: none; 
    visibility: hidden; 
    -webkit-transiton: opacity 0.2s; 
    -moz-transition: opacity 0.2s; 
    -ms-transition: opacity 0.2s; 
    -o-transition: opacity 0.2s; 
    -transition: opacity 0.2s; 
    -moz-border-radius: 0 0 5px 5px; 
    -webkit-border-radius: 0 0 5px 5px; 
    border-radius: 0 0 5px 5px; 
} 
mini-nav ul ul > li:last-child { border-bottom: none; } 
mini-nav ul li ul li:hover { 
    background: #E8E8E8; 
    color: black; 
    width: 110px; 
} 
mini-nav ul li ul li { 
    display: block; 
    color: #fff; 
    width: 110px; 
    border-bottom: solid 1px silver; 
    padding-left: 12px; 
    border-right: none; 
    margin-right: 0; 
} 
mini-nav ul li ul li:hover:last-child { 
    -moz-border-radius: 0 0 5px 5px; 
    -webkit-border-radius: 0 0 5px 5px; 
    border-radius: 0 0 5px 5px; 
} 
+0

이 대답이 맞았다 고 생각한다면 받아들이는 것을 주저하지 마십시오 :) –

+0

그건 완전히 고쳐졌습니다! 많은 감사합니다 –

+0

환영합니다. 다행 이군. –

0

.mini-nav ul li 당신은 그것을 잘 4 픽셀을 이동하고 그것을 밖으로 던지고했습니다

position:relative; 
margin-right:-4px; 

입니다 때문입니다. 당신의 CSS는에

관련 문제