2014-07-10 77 views
0

我使用Bootstrap 3來創建一個移動響應網站。 我的網頁上有兩個頂級菜單。頂部菜單有一個ul浮動到右側,下面的菜單有兩個組件:一個ul向左浮動並且搜索框向右浮動。 儘管float:right正在搜索框上工作,但它並沒有移動到極端的正確位置;而是從右側留下一些空間。我沒有在搜索框中應用任何右邊距。CSS浮動行爲神祕

但是,當我從頂層菜單的ul.settings-menu ul)中刪除浮動時,搜索框會移至最右端。這兩個菜單位於不同的div中。我不明白爲什麼會發生這種情況。有人能解釋爲什麼會發生這種情況並推薦解決方案?我的代碼如下:

<div class="settings-menu"> <!-- Top settings/registration panel --> 
    <ul> 
     <li><a>Register</a></li> 
     <li><a>LogIn</a></li> 
     <li><a>Wishlist(0)</a></li> 
     <li><a>My Account</a></li> 
    </ul> 
</div> 

<nav class="navbar"> 

    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#menu-collapse"> 
      <span class="sr-only">Toggle navigation</span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
     </button> 
    </div> 

    <div class="collapse navbar-collapse" id="menu-collapse"> 
     <ul class="nav navbar-nav"> 
     <li><a href="#">Home Page</a></li> 
     <li><a href="#">Shop by category</a></li> 
     <li><a href="#">Designers</a></li> 
     <li><a href="#">Blog</a></li> 
     <li><a href="#">Contact Us</a></li> 
     </ul> 

     <form class="navbar-form" role="search"> 
     <label for="id_search"></label> 
     <input type="text" id="id_search" class="form-control" name="search_item" placeholder="Search Store"> 
     <button type="submit" name="search_button" id="id_search_button" class="search-button"></button> 
     </form> 
    </div><!-- /.navbar-collapse --> 

</nav> 

CSS:

body { 
    font-family: arial; 
    font-size: 12px; 
    background: url("images/texture_2.jpg") 
} 

.settings-menu { 
    background-color: #E87772; 
    border-bottom: 4px solid #F1ADAA; 
    height: 36px; 
} 

.settings-menu ul { 
    float: right; 
    width: auto; 
    margin-right: 5%; 
} 

.settings-menu ul li{ 
    display: inline-block; 
    padding: 5px; 
    list-style: none; 
} 

.settings-menu ul li a{ 
    color: #fff; 
    font-size: 14px; 
} 

nav { 
    background-color: #fff; 
    width: 100%; 
} 

nav ul { 
    float: left; 
} 

.navbar-nav > li {  /*over-riding bootstrap's classes */ 
    display: inline-block; 
    padding: 7px; 
    margin-right: 7px; 
} 

.navbar-nav > li > a{ 
    font-size: 16px; 
    color: rgb(80,80,80); 
    padding: 0px; 
    padding-bottom: 7px; 
} 

.navbar-nav > li > a:hover{ 
    background-color: #fff; 
} 

.navbar-nav > li > a:after{ 
    background: none repeat scroll 0 0 #e87772; 
    bottom: 0; 
    content: " "; 
    height: 2px; 
    left: 50%; 
    position: absolute; 
    transition: all 0.25s ease-in-out 0s; 
    width: 0; 
} 

.navbar-nav > li > a:hover:after, .navbar-nav > li > a:focus:after { 
    left: 0; 
    width: 100%; 
}  

.navbar-form { 
    float: right; 
    display: inline-block; 
    margin-top: 0; 
    width: 285px; 
    height: 45px; 
} 

.navbar-form .search-button { 
    background: url("images/icon-search-button.png") no-repeat; 
    border-radius: 100%; 
    background-color: #E87772; 
    height: 38px; 
    width: 38px; 
    background-position: center; 
    border: none; 
    transition-property: height, width; 
    transition-duration: 50ms; 
    transition-timing-function: ease-in-out; 
} 


.navbar-form .search-button:hover { 
    height: 40px; 
    width: 40px;  
} 

.navbar-form .cart-button { 
    background: url("images/icon-cart-link.png") no-repeat; 
    border-radius: 100%; 
    background-color: #E87772; 
    height: 38px; 
    width: 38px; 
    background-position: center; 
    border: none; 
    transition-property: height, width; 
    transition-duration: 50ms; 
    transition-timing-function: ease-in-out; 
} 

.navbar-form .cart-button:hover { 
    height: 40px; 
    width: 40px;  
} 


#id_search {    /* for text-box */ 
    border-radius: 0px; 
    border-right: none; 
    border-left: none; 
    border-top: 1px solid #DDDDDD; 
    border-bottom: 1px solid #DDDDDD; 
    box-shadow: none; 
    margin-top: 5px; 
} 

#search-box { 
    float: right; 
} 

回答

0

.navbar-collapse.collapse有由bootstrape默認填充。嘗試在.navbar崩潰這個Demo

.navbar-collapse.collapse{ 
    padding-right :0 !important; 
} 
+0

右填充只有15px的,而我的表單標籤是遠遠超出了這一點,所以這不是一個填充問題。奇怪的是,關閉浮動從上面的div使表單標籤上的浮動行爲正確。我已經添加了完整的CSS代碼供您參考。 – maverick