2017-01-05 3 views
0

Я пытаюсь реализовать раскрывающееся меню CSS на основе этого example из w3schools. Он работает, но левое поле вокруг класса dropbtn не совпадает с левым полем для простых навигационных ссылок (Home, News). Когда вы переходите от одного элемента списка к другому, элемент, реализующий раскрывающееся меню, имеет черную рамку слева, которую я не могу объяснить.CSS смежный смежный разброс выпадающего меню margin

Это поведение началось, когда я попытался реализовать разделитель между элементами, используя li + li: before, как показано на рисунке 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 При наведении фона элементов списка «Главная» и «Новости» меняются от черного к красному. Фон элементов списка выпадающих объектов также изменяется на красный, но на левом поле есть небольшая область, возможно, ширина 5 пикселей, которая остается черной. Продумав это, я угадываю | характер шире, чем кажется, могу ли я исправить это с отрицательным отрывом? –

ответ

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/ –

Смежные вопросы