如何在所有浏览器上删除两个并排元素之间的空格

时间:2014-01-18 15:32:51

标签: html css

我有这段代码:

<div class="headmenus">
    <ul>
    <li><a href="index.php">HOME</a></li>
    <li><a href="about.php">ABOUT US</a></li>
    <li><a href="search.php">COURSES</a></li>
    <li><a href="vacancies.php">VACANCIES</a></li>
    <li><a href="contact.php">CONTACT US</a></li>  
    <li></li>           
    </ul>
 </div>
 <div class="searchform2">
    <form action="search.php#goto1" method="get" id="headersearch">
       <input type="hidden" name="p" value="0" />
       <input type="text" name="keyword" id="headerkeyword" placeholder="Search any keyword" value="" />
       <input type="submit" value="SEARCH" class="but1" />
    </form>
 </div>

我希望并排放置的headmenus和searchform2能够触及所有浏览器,即我想在所有浏览器上删除headmenus和searchform2之间的空格。

这是CSS:

.searchform2 {
    float: right;
    display: inline;
    width:auto !important;
    border:2px solid #616566;
}
.searchform2 input {
    border:2px solid #616566;
    float: left;
/*  margin-right: 15px;
    padding: 4px;
    width: auto;
    height:26px;
*/}
.searchform2 .but1 {
    background: url("images/search.png") no-repeat scroll 8px 9px #89AB20;
    border: 0 none !important;
    color: #FFFFFF !important;
    float: right !important;

    display: inline;
    font-weight: bold;
    padding: 6px 12px 6px 23px !important;
    width: auto !important;
    font-family: Arial;
    font-size: 12px;
    height: 30px;
    margin-right: 0 !important;
    cursor:pointer;
}

这是headmenus css:

.headmenus {
    background: none repeat scroll 0 0 #0086B2;
    display: inline;
    float: left;
    margin: 0;
    width: 74.3%;
}
.headmenus ul {
    border-bottom: 1px solid #FFFFFF;
    border-top: 1px solid #FFFFFF;
    display: inline;
    float: left;
    font-family: 'texgyreadventorregular';
    font-size: 14px;
    margin: 0;
    padding: 0;
    width: 100%;
}
.headmenus ul li {
    border-right: 1px solid #FFFFFF;
    color: #FFFFFF;
    display: inline;
    float: left;
    list-style-type: none;
    padding: 0;
    text-align: center;
    width: 13.35%;
}

.headmenus ul li a {
    color: #FFFFFF;
    display: inline;
    float: left;
    font-family: 'texgyreadventorregular';
    font-size: 14px;
    list-style-type: none;
    text-align: center;
    width: 100%;
    padding:5px 0px;
}

.headmenus ul li:hover {
    background: #89ab20;
    cursor: pointer;
}
.headmenus ul li.active {
    background: #89ab20;
}
.headmenus ul li:last-child {
    border-right: 0 none;
    float: right;
    width: auto; !important
}

现在发生的是头部,当我玩它的宽度时,我可以确保它触及输入文本框但是当我切换浏览器时我需要重新编辑那个宽度属性

2 个答案:

答案 0 :(得分:1)

您应该移除border-right: 1px solid #FFFFFF;中的.headmenus ul li。然后按钮将彼此相邻而没有间隙。有关示例,请参阅this fiddle(元素为可见性为灰色)。

*{box-sizing: border-box; -moz-box-sizing: border-box;}负责在所有浏览器中将它们显示在一起。如果您对盒子大小属性感兴趣,请查看this article from Paul Irish

您需要确保.searchform2有一个width:25.6% !important;,以确保它填满所有空白区域。

答案 1 :(得分:0)

您不需要任何box-sizing。只需设置.searchform2 width: 25.7%,将border移至.searchform2 form并添加overflow: hidden,因为内部有浮动元素。

请参阅小提琴:http://jsfiddle.net/nNQF9/9/

我想解释一下:

元素的总宽度或高度= width/height + padding + margin + border-width

例如,如果设置为width: 50%而另外设置为border: 2px soid whatever,那么元素的总宽度为50% + 4px

如果我们希望宽度完全符合某个比例,我们需要边框,填充或边距,那么我们需要更多的投币器:

<div class="cointainer_left_75_percents">
   <div class="container_with_borders_paddings_margins">
      ...
   </div>
</div>
<div class="cointainer_right_25_percents">
   <div class="container_with_borders_paddings_margins">
      ...
   </div>
</div>

或者我们可以使用实验性属性box-sizing来改变边框,填充和边距对总宽度和高度的影响。