饥人谷技术博客

负边距、三栏布局

2016-07-20  本文已影响199人  婷楼沐熙

一、负边距在让元素产生偏移时和position: relative有什么区别?

二、使用负 margin 形成三栏布局有什么条件?

三、圣杯布局的原理是怎样的? 简述实现圣杯布局的步骤。

<div class="wrapper">
    <div class="main"></div>
    <div class="left"></div>
    <div class="right"></div>
</div>
.main{
    width: 100%;
    background: blue;
    height: 300px;  
  }
.left{
    width: 200px;
    height: 300px;
    background: red;
  }
.right{
    width: 150px;
    height: 300px;
    background: orange;
  }
.main, .left, .right{
    float: left;
  }
.left{
    margin-left: -100%;
}
.right{
    margin-left: -150px;   /* 右边栏自身的宽度 */
  }
.wrapper{
        padding: 0 150px 0 200px;
    }
.left{
    position: relative;
    left: -200px;
  }
.right{
  position: relative;
  right: -150px;
  }

完整DEMO

四、双飞翼布局的原理? 实现步骤?

<div class="wrapper">
        <div class="middle">
        <div class="main">你好</div>
        </div>
        <div class="sub"></div>
        <div class="extra"></div>
    </div>

CSS部分:

.middle .main{
        margin-left: 200px;
        margin-right: 150px;
    }

完整DEMO

五、圣杯布局和双飞翼布局的比较。

对比而言,双飞翼虽然增加了一个标签,但是它的思路比较容易理解,也不需要利用定位。而且双飞翼布局在浏览器窗口足够小的时候不会出现排版错乱的情况,原因就是当侧边栏宽度大于中间区块宽度时,侧边栏上不去,会出现错乱。

六、把圣杯布局和双飞翼布局改成两栏布局

实现了三栏布局,两栏布局就比较简单了,把右边栏删掉就可以。

七、代码

  1. 用浮动、负边距实现如下效果 参考

    效果预览
  2. 使用圣杯布局实现如下三栏布局(两侧固定宽度200px,中间自适应)

    效果预览
  3. 使用圣杯布局的思路实现如下两栏布局

    效果预览
  4. 使用双飞翼布局实现如下三栏布局(两侧固定宽度200px,中间自适应)

    效果预览
  5. 使用双飞翼布局的思路实现如下两栏布局

    效果预览

所有代码Github地址

上一篇 下一篇

猜你喜欢

热点阅读