为了账号安全,请及时绑定邮箱和手机立即绑定

假设高度已知,三栏布局,中间自适应,左右两栏固定宽度300px,为什么我的右边的那栏总是在下边?

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>test</title>
    <style type="text/css">
    html,
    body {
        margin: 0;
        padding: 0;
    }
  .wrapper {
        overflow: hidden;
    }
    .left {
        float: left;

        width: 300px;
        background: pink;
    }
    .right {
        float: right;

        width: 300px;
        background: pink;
    }
    .center {
        margin:0 300px;
        
        background: gray;
    }
    </style>
</head>

<body>
    <div class="wrapper">
        <div class="left">zuo</div>
        <div class="center">左右两列固定,中间自适应</div>
        <div class="right">you</div>
    </div>
    <script type="text/javascript">
    </script>
</body>

</html>

http://img1.sycdn.imooc.com//5a7d922600013efe09680086.jpg

正在回答

4 回答

因为div.center是个块元素,当.div.right在设置浮动前位置在div.center后,且在它下面;float之后,从之前的位置开始脱离文档流,因此在下面。

0 回复 有任何疑惑可以回复我~
.center {
  /*margin:0 300px;*/
  text-align: center;
  background: gray;
  position: absolute;
  right: 300px;
  left: 300px;
}

将.center设为绝对定位,添加左右距离300px

原来的布局里左浮动脱离文档流,中间块会忽视左边占用的位置,所以和左边在一行,用margin撑开两边的间隔,但是中间还是块级元素,且没有脱离文档流,会占用一行,右边不会忽视中间块占用的位置,所以换行。


0 回复 有任何疑惑可以回复我~

不好用文字表述.你理解理解.因为<div class="left">zuo</div>和<div class="right">you</div>是浮动,相当于三个元素垂直排列.但是<div class="center">左右两列固定,中间自适应</div>是文本流,应该环绕在元素1那边.之所以出现你那样的情况是因为你的css的center有外边距导致的.取消margin:0 300px;外边距,你会发现3还是在下边,这是因为你是向右浮动.而文本流占据了1的所有的右侧,交换1和3位置就好了,是因为浮动并排排列,一个向左,一个向右,然后文本流环绕到中间.

0 回复 有任何疑惑可以回复我~
#1

风到这里就是粘 提问者

懂了,谢谢
2018-03-08 回复 有任何疑惑可以回复我~
#2

慕田峪1218906 回复 风到这里就是粘 提问者

记得采纳偶
2018-03-08 回复 有任何疑惑可以回复我~

 <div class="center">左右两列固定,中间自适应</div>

        <div class="right">you</div>

位置调换即可实现三栏布局,

0 回复 有任何疑惑可以回复我~
#1

风到这里就是粘 提问者

这是为什么呢?这种方法得改变HTML结构,怎么写css不改变HTML结构,应该怎么来实现?
2018-02-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

假设高度已知,三栏布局,中间自适应,左右两栏固定宽度300px,为什么我的右边的那栏总是在下边?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信