2017-01-05 38 views
0

我试图实现一个CSS下拉菜单,基于这个w3schools example。它正在工作,但dropbtn类的左边距与简单导航链接(Home,News)的左边距不同。当你从一个列表项移动到另一个列表项时,实现下拉菜单的项目左边有一个黑色边框,我无法解释。CSS邻接兄弟分页下拉菜单保证金

当我尝试在使用li + li的项目之间实现分隔符时,此行为开始:before as shown here

default.html中

<!DOCTYPE HTML> 
<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="styles/style.css" /> 
</head> 
<body> 
    <ul> 
     <li><a href="#home">Home</a></li> 
     <li><a href="#news">News</a></li> 
     <li class="dropdown"> 
      <a href="javascript:void(0)" class="dropbtn">Dropdown</a> 
      <div class="dropdown-content"> 
       <a href="#">Link 1</a> 
       <a href="#">Link 2</a> 
       <a href="#">Link 3</a> 
      </div> 
     </li> 
    </ul> 
    <h3>Dropdown Menu inside a Navigation Bar</h3> 
    <p>Hover over the "Dropdown" link to see the dropdown menu.</p> 
</body> 
</html> 

的style.css

ul { 
    list-style-type: none; 
    margin: 0; 
    padding: 0; 
    overflow: hidden; 
    background-color: #333; 
} 

li { 
    float: left; 
} 

li+li:before { 
    color: white; 
    content: "|"; 
} 

li a, .dropbtn { 
    display: inline-block; 
    color: white; 
    text-align: center; 
    padding: 14px 16px; 
    text-decoration: none; 
} 

li a:hover, .dropdown:hover .dropbtn { 
    background-color: red; 
} 

li.dropdown { 
    display: inline-block; 
} 

.dropdown-content { 
    display: none; 
    position: absolute; 
    background-color: #f9f9f9; 
    min-width: 160px; 
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 
} 

.dropdown-content a { 
    color: black; 
    padding: 12px 16px; 
    text-decoration: none; 
    display: block; 
    text-align: left; 
} 

.dropdown-content a:hover {background-color: #f1f1f1} 

.dropdown:hover .dropdown-content { 
    display: block; 
} 
+0

它对我来说似乎很好...这条黑线究竟在哪里? –

+0

@SergChernata在悬停时,Home和News列表项目的背景从黑色变为红色。下拉列表项的背景也变为红色,但在左边空白处有一个小区域,可能是5px宽的黑色区域。经过考虑,我猜测|字符比看起来更宽,我可以用负边距来解决这个问题吗? –

回答

2

你可以的立场,即before元多一点正是:

li { 
    float: left; 
    position: relative; 
} 

li+li:before { 
    color: white; 
    content: "|"; 
    left: -1px; 
    top: 14px; 
    position: absolute; 
} 

https://jsfiddle.net/oao3yt8w/

+0

您的解决方案似乎已修复了保证金,但下拉菜单不再有效? –

+0

更新了小提琴。必须摆脱溢出:隐藏在你的UL上,并增加它的高度。 https://jsfiddle.net/oao3yt8w/1/ –