2019-1-2

作者: RomanticAir | 来源:发表于2019-01-02 23:27 被阅读0次

学习圣杯和双飞翼布局

圣杯和双飞翼布局即是可以实现三栏中两端宽度固定,中间宽度自适应布局效果的两种方式的叫法。下面三个例子将以经典三栏布局作为我们的学习参考案例。

一、圣杯布局

浮动 + 外边距

结构如下:

<div class="wrapper">
  <div class="left">left</div>
  <div class="center">center</div>
  <div class="right">right</div>
</div>

样式如下:

.wrapper {
  overflow: hidden;
  padding: 0 100px;
}

.left {
  float: left;
  width: 100px;
  height: 300px;
  /*原本在距父级盒子左侧100px的位置,现将其拉到最左侧,刚好遮住left-padding区域*/
  margin-left: -100px;
  background: red;
}

.center {
  float: left;
  /*宽度为父盒子box-content的100%,从而达到自适应*/
  width: 100%;
  height: 300px;
  background: pink;
}

.right {
  float: left;
  width: 100px;
  height: 300px;
  /*紧贴center盒子,但由于它占据了100%,导致right盒子掉到了下方。现将其拉到距父级盒子右侧100px的位置,刚好遮住right-padding区域*/
  margin-right: -100px;
  background: blue;
}

定位法

结构同上

样式如下:

.wrapper {
  position: relative;
  /*水平方向具有流动性,宽度自动填充(width: auto)*/
  height: 300px;
}

.left {
  position: absolute;
  height: 300px;
  width: 100px;
  background: red;
}

.center {
  /*method 1 -- 同一方向对称属性设置后,盒子具有该方向上的流动特性,从而自动填充*/
  /*
  position: absolute;
  left: 100px;
  right: 100px;
  */
  height: 300px; 
  /*method 2 -- 未脱离文档流,本身具有流动特性,依靠外边距撑开 left right 的宽度即可*/
  margin: 0 100px;
  /*end*/
  background: pink;
}

.right {
  position: absolute;
  right: 0;
  /*method 2 -- 没加 top 时,垂直方向是层流动性的,自身会被 center 盒子挤下来*/
  top: 0;
  /*end*/
  width: 100px;
  height: 300px;
  background: blue;
}

二、双飞翼布局

浮动 + 外边距

结构如下:

<div class="wrapper">
  <div class="center">
    <div class="msg">center</div>
  </div>
  <div class="left">left</div>
  <div class="right">right</div>
</div>

样式如下:

.wrapper {
  overflow: hidden;
}

.wrapper > div {
  float: left;
  height: 300px;
}

.left {
  width: 100px;
  /*相对父级盒子的宽度计算*/
  margin-left: -100%;
  background: red;
}

.center {
  width: 100%;
  background: pink;
}

.right {
  width: 100px;
  /*本身被挤下去了,现拉回距父盒子右侧100px的位置*/
  margin-left: -100px;
  background: blue;
}

/*踹空,让 left right 盒子来填*/
.center .msg {
  margin: 0 100px;
}



End.
若有不足,还请高人指教。

相关文章

网友评论

      本文标题:2019-1-2

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