美文网首页Web前端之路
浮动+负margin实现两栏布局

浮动+负margin实现两栏布局

作者: 不知所语 | 来源:发表于2017-11-28 16:11 被阅读37次

两栏布局:一侧固定宽度,一侧自适应(如果需要主要内容优先显示,这就限定了div的Dom顺序

<div class="content-wrap">
    <div class="main">main</div>
    <div class="left">left</div>
</div>
.main{
  width: 100%;
  height: 300px;
  background-color: red;
  float: left;
}

.left{
  height: 300px;
  width: 200px;
  background-color: pink;
  float: left;
  //margin-left: -100%;
}
浮动后
由于main div的宽度设置了100%,所以把left div挤到了下一行。正常情况下浮动的元素是会紧跟在元素后面的,除非宽度不够宽。因此我们可以理解为left还是在main的右侧显示,因此距离最左边的距离为100%的宽度,这样就更容易理解margin-left: -100%的作用,(不然很郁闷为什么本来在下面一行,结果设置了左外边距为负值div就跑上去了)使用margin-left为-100%使得div跑到最左边,两个div排列在一行。 设置负margin

但是会发现left覆盖在main的上面,遮盖住了底层的内容,给最外层的div添加padding-left,使main div向右移动,这样div的内容就处在一个正确的位置,我们发现left div也移动了,对它再进行定位。

.content-wrap{
  width: 800px;
  padding-left: 200px;
}
外层div设置padding
.left{
  height: 300px;
  width: 200px;
  background-color: pink;
  float: left;
  position: relative;
  left: -200px;
}
left div定位

这样两栏布局就实现了!

当然对于解决left div遮盖底层div内容的问题还有一种更简洁的方式,需要我们在html上做一些变动,如:

<div class="content-wrap">
    <div class="content"> 
        <div class="main">
              main 我是自适应宽度div,.......
        </div>
    </div>
    <div class="left">
          left 我是定宽div,left 我是定宽div,......
    </div>
</div>

我在main的外层包了一层class为content的div,

.content{
    padding-left: 200px;
}

这样就不需要对left 进行定位来解决问题了,代码少了好几行。

上面的两种解决内容遮盖的方式即是三栏布局中圣杯布局双飞翼布局的两种思想,达到了同样的目的,只是在后面部分的实现上利用的思想不同。

相关文章

  • 浮动+负margin实现两栏布局

    两栏布局:一侧固定宽度,一侧自适应(如果需要主要内容优先显示,这就限定了div的Dom顺序) 但是会发现left覆...

  • 双飞翼布局

    三栏布局(两栏布局):侧栏宽度固定,中间的主内容区域宽度自适应主要原理,对浮动元素设置 负margin = 自身宽...

  • 圣杯布局

    三栏布局(两栏布局):侧栏宽度固定,中间的主内容区域宽度自适应主要原理,对浮动元素设置 负margin = 自身宽...

  • CSS布局&居中&媒体查询

    1.CSS布局 实现一个两栏布局,右侧固定宽度200px,左侧自适应宽度 浮动元素 + 普通元素margin 实现...

  • css布局

    1.CSS布局 实现一个两栏布局,右侧固定宽度200px,左侧自适应宽度 浮动元素 + 普通元素margin 实现...

  • CSS经典布局

    CSS经典布局 本文主要对一些常见的CSS布局问题进行总结,涉及三栏布局、负margin、清除浮动、居中布局、Fl...

  • CSS布局

    两栏布局? left浮动,设置宽度,右边用margin-left留给left位置其自适应 三栏布局? 左div左浮...

  • CSS样式布局

    负边距与浮动布局 负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-...

  • 三栏布局方式两边固定中间自适应的4种方法

    1.浮动法:左栏左浮动,右栏右浮动,中间栏用margin,布局div是left、right、main即左右中或者右...

  • CSS布局

    1. 两栏布局 两栏布局的特征是侧栏固定宽度,主栏自适应宽度。 实现方法: float + margin: 也可以...

网友评论

    本文标题:浮动+负margin实现两栏布局

    本文链接:https://www.haomeiwen.com/subject/dxqebxtx.html