#jquery #css #twitter-bootstrap
#jquery #css #twitter-bootstrap
Вопрос:
Взгляните на этот JSfiddle.
Корневые меню расширяются при наведении курсора мыши, как и ожидалось. Но дочерние элементы этого не делают.
Если вы удалите <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css"/>
из <head>
-section , это действительно сработает.
Что вызывает этот конфликт и как его можно разрешить?
Ответ №1:
Замените ваши классы jQuery такими же, как показано ниже:
$(function(){
$('ul#menu li').hover(function(){
//$('#drop' , this).css('display','block');
$(this).children('ul').show();
}, function(){
$(this).children('ul').hide();
});
});
Ответ №2:
Здесь overflow
стиль создает проблему, поведение начальной загрузки по умолчанию — это когда вы нажимаете или наводите курсор мыши, которые применяются overflow: hidden
в элементе, но вы хотите добавить дочернее меню, поэтому вам нужно добавить CSS
ul#menu > li ul.drop {
overflow: visible !important;
}
!important
необходимо, потому что overflow
это условие добавляется через inline
ОБНОВЛЕННАЯ СКРИПКА: http://jsfiddle.net/7f38r41z /
$(function(){
$('ul#menu li').hover(function(){
//$('#drop' , this).css('display','block');
$(this).children('ul').slideDown(0);
}, function(){
$(this).children('ul').delay(0).slideUp(0);
});
});
ul#menu {
margin: 0;
padding: 0;
font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
font-weight: bold;
}
ul#menu > li {
list-style: none;
float: left;
margin: 0;
padding: 0;
position: relative;
z-index: 1;
}
ul#menu a {
text-decoration: none;
color: #222;
background: #ccc;
display: block;
padding: 10px;
}
ul#menu a:hover {
text-decoration: none;
color: #00f;
background: #ff8;
display: block;
padding: 10px;
}
ul#menu > li ul.drop {
margin: 0;
padding: 0;
width: 150px;
position: absolute;
display: none;
overflow: visible !important;
}
ul#menu > li ul.drop ul {
margin: 0;
padding: 0;
width: 150px;
position: absolute;
display: none;
left: 150px;
top: 0;
}
ul#menu > li ul li {
margin: 0;
padding: 0;
list-style: none;
position: relative;
}
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css"/>
</head>
<body>
<div class="row">
<div class="col-lg-12">
<ul id="menu">
<li><a href="#">Home</a>
<ul class="drop">
<li><a href="#">About us</a></li>
<li>
<a href="#">About us ></a>
<ul>
<li><a href="#">Sub Item 1</a></li>
<li>
<a href="#">Sub Item 2 ></a>
<ul>
<li><a href="#">Sub item 3</a></li>
<li><a href="#">Sub item 4</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="#">About</a>
<ul class="drop">
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<h3>
Page title
</h3>
<p>
Page contents
</p>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.4.0.min.js"></script>
</body>
</html>