如何在Bootstrap 3中消除.dropdown与.dropdown-menu之间的边框?
实现Bootstrap下拉菜单与导航项的无缝融合效果(无分隔边框)
我来给你拆解一下怎么实现这种下拉菜单和导航项无缝衔接、没有分隔边框的效果,核心就是通过调整边框、背景和过渡动画,让hover状态下的导航项和下拉菜单完美融合:
关键CSS样式调整要点
- 先清除导航项默认的底部边框,避免和下拉菜单的边框冲突:
.navbar-default .navbar-nav>li>a { border-bottom: 0; }
- 给下拉导航项设置初始透明边框,hover时切换为实色边框并同步背景色:
这样做是为了让hover时导航项的左右边框和下拉菜单的左右边框对齐,同时把底部边框设为0,消除和下拉菜单上边框的分隔线
.dropdown { border-left: 1px solid transparent; border-right: 1px solid transparent; } .dropdown:hover { background: white; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 0; }
- 改造下拉菜单的样式,让它和导航项衔接:
去掉默认的阴影、圆角,设置和导航项一致的上边框,再添加平滑展开的过渡动画,初始状态隐藏,hover时展开
.dropdown .dropdown-menu { border-top: 1px solid #ccc; z-index: 1; transition: all 0.5s; max-height: 0; display: block; overflow: hidden; opacity: 0; box-shadow: none; border-radius: 0; } .dropdown:hover .dropdown-menu { max-height: 400px; opacity: 1; }
完整代码示例
HTML代码
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> <div class="container"> <div class="row"> <nav class="navbar navbar-default"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Brand</a> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> <li role="separator" class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> <li role="separator" class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </li> </ul> </div> </div> </nav> </div> </div>
CSS代码
.navbar-default .navbar-nav>li>a { border-bottom: 0; } .dropdown { border-left: 1px solid transparent; border-right: 1px solid transparent; } .dropdown:hover { background: white; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 0; } .dropdown .dropdown-menu { border-top: 1px solid #ccc; z-index: 1; transition: all 0.5s; max-height: 0; display: block; overflow: hidden; opacity: 0; box-shadow: none; border-radius: 0; } .dropdown:hover .dropdown-menu { max-height: 400px; opacity: 1; }
内容的提问来源于stack exchange,提问作者Mona Coder
相关产品推荐
相关产品推荐

