将浮动左右浮动的元素移动到下一行

时间:2014-05-20 10:07:22

标签: html css twitter-bootstrap-3 css-position

我有一个复杂的标题,有许多元素随浮动左右移动。它们在桌面上运行良好。但是我希望实现一个响应视图,其中导航元素被移动到下一行。

这是一张展示的图片:

enter image description here

问题是如何将菜单元素(位于中间)推到下一行,而其他菜单元素保持其位置。

以下是全视图标题的极其基本的标记表示:http://jsfiddle.net/aAG2s/

 <header class="clearfix">
    <div class="pull-left">Button 1</div>
    <div class="pull-left">Logo</div>
    <div class="pull-left menu">Menu</div>

    <div class="pull-right">Button 2</div>  
</header>

编辑澄清:

我正在寻找一种不改变html标记顺序的方法。

6 个答案:

答案 0 :(得分:2)

使用媒体查询:Fiddle

     header {
     border: 1px solid black; 
     padding-bottom: 50px;}
.pull-left, .pull-right {
     border: 1px solid red; 
     padding: 5px; margin: 5px}
.menu {
     border: 1px solid blue;
     position: absolute;
     margin-top: 50px;
     right: 0;
     left: 0px;}
@media (min-width: 768px) {
    .menu {
         position: relative;
         margin: 5px;
         width: auto;
     }
     header {
          padding-bottom: 0px;
}
}

答案 1 :(得分:1)

喜欢这个吗?

http://jsfiddle.net/aAG2s/2/

CSS

header {border: 1px solid black}
.pull-left, .pull-right {border: 1px solid red; padding: 5px; margin: 5px}
.menu {border: 1px solid blue}
.pull-left{float:left;}.pull-right{float:right;}
@media screen and (max-width: 1024px){
    .menu{width:98%;}

}

HTML

<header class="clearfix">
        <div class="pull-left">Button 1</div>
        <div class="pull-left">Logo</div>


        <div class="pull-right">Button 2</div><div class="pull-left menu">Menu</div>
    </header>

答案 2 :(得分:1)

将菜单放在HTML的最后,然后清除它周围的浮动元素:

@media screen and (max-width:640px){
    .menu{
        clear: both;
    }
}

JSFIDDLE DEMO:http://jsfiddle.net/aAG2s/4/ 我添加了红色背景只是为了强调一点。

答案 3 :(得分:1)

也许使用jquery可以帮助......

http://jsfiddle.net/aAG2s/6/

p = $(".menu").detach();
$("#MainHeader").append(p);

答案 4 :(得分:1)

试试这个:http://jsfiddle.net/aamir/aAG2s/7/

header {
    border: 1px solid black;
    padding: 5px;
}
.pull-left, .pull-right {
    border: 1px solid red;
    padding: 5px;
    margin-right: 5px;
}
.pull-right {
    margin-right:0;
}
.menu {
    border: 1px solid blue
}
.pull-left {
    float:left;
}
.pull-right {
    float:right;
}
@media screen and (max-width: 600px) {
    .menu {
        width:100%;
        margin-top: 5px;
    }
    .pull-right {
        margin-top: -69px;
    }
}

答案 5 :(得分:0)

试试这个css

header {border: 1px solid black;position:relative;}
.pull-left, .pull-right {border: 1px solid red; padding: 5px; margin: 5px}
.menu {border: 1px solid blue;}

@media screen and (max-width:768px){
    header{min-height:100px;}
    .menu{        
        float:right !important;
        width:99%;
        position:absolute;
        top:50px;
        left:0;
    }
}