我的网站顶部有一个普通的Bootstrap 3固定导航栏,非常好。我前面遇到的问题是,当导航栏在较小的设备中可以访问时崩溃,下拉项目将离开为导航栏指定的区域。下面的图片解释得最好:
因此, Dugi 部分是一个下拉菜单项。单击时,其下面的项目(标记为红色)超出菜单的红色部分。导航栏是不是应该与他们一起下来并掩盖空间?
无论如何,我显然已经触及了导航栏的样式,我想这就是它出错的地方。这就是我所感动的:
.navbar-default {
background-color: @dry-red;
background-image: -moz-linear-gradient(top, @dry-red, @mid-red);
background-image: -ms-linear-gradient(top, @dry-red, @mid-red);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@dry-red), to(@mid-red));
background-image: -webkit-linear-gradient(top, @dry-red, @mid-red);
background-image: -o-linear-gradient(top, @dry-red, @mid-red);
background-image: linear-gradient(top, @dry-red, @mid-red);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@dry-red', endColorstr='@mid-red', GradientType=0);
border-color: @dark-red;
overflow: visible;
max-height: 51px;
@media (max-width: 768px){
max-height: none;
height: auto;
}
@media (max-width: 470px){
width: 100%;
position: fixed;
top: 0;
left: 0;
}
}
.navbar-default .navbar-nav>.open>a, .navbar-default .navbar-nav>.open>a:hover, .navbar-default .navbar-nav>.open>a:focus {
max-height: 51px;
@media (max-width: 768px){
max-height: none;
}
}
.navbar-default .navbar-brand {
color: @lighten;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
color: @lighten-hover;
}
.navbar-default .navbar-nav > li > a {
color: @lighten;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
color: @lighten-hover;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
color: @lighten;
background-color: @dark-red;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
color: @lighten-hover;
background-color: @dark-red;
}
.navbar-default .navbar-nav > .dropdown > a .caret {
border-top-color: @dark-red;
border-bottom-color: @dark-red;
}
.navbar-default .navbar-nav > .dropdown > a:hover .caret,
.navbar-default .navbar-nav > .dropdown > a:focus .caret {
border-top-color: @dark-red;
border-bottom-color: @dark-red;
}
.navbar-default .navbar-nav > .open > a .caret,
.navbar-default .navbar-nav > .open > a:hover .caret,
.navbar-default .navbar-nav > .open > a:focus .caret {
border-top-color: @dark-red;
border-bottom-color: @dark-red;
}
.navbar-default .navbar-toggle {
border-color: @dark-red;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: @dark-red;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: @lighten;
}
.nav > .dropdown, .dropdown-menu > li {
position: relative;
overflow: visible;
}
.navbar-collapse.in {
overflow-y: visible;
}
@media (max-width: 767px) {
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
color: @lighten;
}
.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
color: @lighten-hover;
}
}
.dropdown-menu:before {
position: absolute;
top: -7px;
right: 9px;
display: inline-block;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-left: 7px solid transparent;
border-bottom-color: rgba(0, 0, 0, 0.2);
content: '';
}
.dropdown-menu:after {
position: absolute;
top: -6px;
right: 9px;
display: inline-block;
border-right: 6px solid transparent;
border-bottom: 6px solid #ffffff;
border-left: 6px solid transparent;
content: '';
}
.nav-center {
position: absolute;
width: 91px;
height: 50px;
left: 50%;
margin-left: -45px;
z-index: 100;
}
.navbar-inner {
position: relative;
}
这是HTML:
<nav class="website-nav navbar navbar-default navbar-static-top" role="navigation">
<div class="navbar-inner">
<div class="nav-center">
<!-- <img src="{{ S_WEB_PATH }}images/brand.png" /> -->
<div class="nav-brand"></div>
</div>
</div>
<div class="alt-nav navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#collapse">
<span class="sr-only">Toogle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div><!-- Navigation header -->
<div class="collapse navbar-collapse" id="collapse">
<ul class="nav navbar-nav">
<li {{ INDEX_ACTIVE }}><a href="home"><span class="glyphicon glyphicon-cloud-upload"></span> Home</a></li>
<li {{ REMOTE_ACTIVE }}><a href="remote"><span class="glyphicon glyphicon-globe"></span> Remote</a></li>
<li {{ ZIP_ACTIVE }} class="visible-lg"><a href="zip"><span class="glyphicon glyphicon-folder-close"></span> ZIP</a></li>
<li {{ POPULAR_ACTIVE }}><a href="popular"><span class="glyphicon glyphicon-star"></span> Popular</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
{% if not S_LOGGED_IN %}
<li><a href="#register" data-toggle="modal"><span class="glyphicon glyphicon-registration-mark"></span> Register</a></li>
<li><a href="#login" data-toggle="modal"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
{% else %}
<li><a href="#"><span class="glyphicon glyphicon-envelope"></span> <span class="badge user-messages">0</span></a></li>
<li><a href="#"><span class="glyphicon glyphicon-bell"></span> <span class="badge user-notification">0</span></a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle valign-middle" data-toggle="dropdown"><span class="glyphicon glyphicon-camera"></span> My Images</a>
<ul class="dropdown-menu">
<li><a href="#">All images</a></li>
<li class="divider"></li>
<li><a href="#">Album 1</a></li>
<li><a href="#">Album 2</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
{% if S_SERVICE_USED == 'facebook' %}
<img src="https://graph.facebook.com/{{ S_USERNAME }}/picture" height="24px" class="img-circle avatar" alt="Avatar">
{% else %}
{% if S_USER_AVATAR != '' %}<img src="{{ S_AVATAR_PATH }}" id="my_avatar" height="24px" class="img-circle avatar" alt="Avatar">{% else %}<span class="glyphicon glyphicon-user"></span>{% endif %}
{% endif %}
<span class="{% if S_SERVICE_USED == 'facebook' or S_USER_AVATAR != '' %}valign-middle{% endif %}">{{ S_USERNAME }}</span>
</a>
<ul class="dropdown-menu">
<li><a href="{{ S_WEB_PATH }}user/{{ S_USERNAME }}"><span class="glyphicon glyphicon-user"></span> Me</a></li>
<li><a href="#settings" data-toggle="modal"><span class="glyphicon glyphicon-cog"></span> Settings</a></li>
{% if S_SERVICE_USED != 'facebook' and S_SERVICE_USED != 'twitter' %}<li><a href="#profile" data-toggle="modal"><span class="glyphicon glyphicon-edit"></span> Edit Profile</a></li>{% endif %}
<li><a href="{{ S_WEB_PATH }}user/do/logout"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li>
</ul>
</li>
{% endif %}
</ul>
</div>
</nav><!-- Navigation -->
除此之外的任何事情,我都没有触及过。我已尝试在.navbar-default
中添加此内容来修复此问题:
@media (max-width: 768px){
max-height: none;
height: auto;
}
这没有做任何事情。
任何帮助都会受到高度赞赏,因为看到这种情况并且不知道它来自何处,这真的令人恼火。这可能是Bootstrap的问题吗?我对此表示怀疑。
答案 0 :(得分:6)
导致滚动的.navbar-default
最大高度不是。这是.navbar-collapse
。
在不添加任何样式且仅使用Bootstrap的默认情况下,我可以看到滚动条,它是由此引起的:
.navbar-collapse {
max-height: 340px; /* *** THIS IS YOUR ISSUE *** */
padding-right: 15px;
padding-left: 15px;
overflow-x: visible;
border-top: 1px solid transparent;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
overflow-y: auto;
}
<强> A demo of the scrollbar showing. 强>
所以你可以通过覆盖你的风格来解决这个问题:
.navbar-collapse {
max-height: none;
}
<强> A demo with scrollbar gone. 强>
最后,关于你的头像在大屏幕上太大,如果你真的想使用你的媒体查询,你会这样做:
.navbar-default {
max-height: 51px;
}
.navbar-collapse {
max-height: none;
}
@media (max-width: 768px){
.navbar-default {
max-height: none;
}
}
<强> A demo of media query working. 强>
虽然老实说最后一个例子但我不确定你为什么不设置max-height on the avatar like this。
答案 1 :(得分:0)
而不是设置max-height:auto,只需取出max-height:51px;样式并保持高度:auto。容器应扩展以适合您的内容。