美文网首页
页面布局:两列布局

页面布局:两列布局

作者: 牛誌遠 | 来源:发表于2016-09-16 18:51 被阅读0次

定宽与自适应

浮动 float + margin

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.left {
  float: left;
  width: 100px;
}
.right {
  margin-left: 120px;
}

简单的布局方法,左侧设置浮动,右侧设置margin-left(避免环绕左侧)的布局方法

  • 优点:容易理解,易于编写
  • 缺点:兼容性问题(IE6有三像素Bug)

浮动 float + margin + (fix)

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right-fix">
    <div class="right">
      <p>right</p>
      <p>right</p>
    </div>
  </div>
</div>
<!--css-->
.left {
  float: left;
  width: 100px;
  position: relative; //提高层级
}
.right-fix {
  float: right;
  width: 100%;
  margin-left: -100px;
}
.right {
  margin-left: 120px;
}

通过在 html 文件的 right 上套上一层 right-fix,然后对 right-fix 设置浮动可以解决 IE6 的兼容性问题,然后提高 left 的层级设置定位属性为 relative

  • 优点:结构和样式更加复杂,不利于理解
  • 缺点:兼容性好

浮动 float + overflow

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.left {
  float: left;
  width: 100px;
  margin-right: 20px;
}
.right{
  overflow: hidden;
}

通过设置overflow触发 BFC(Block Formatting Context块级格式化文本 )模式,内容与外界隔离,不受浮动影响(不会环绕浮动元素)

  • 优点:设置简单
  • 缺点:兼容性问题(IE6 不支持)

table

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.parent {
  display: table;
  width: 100%; 
}
.left,.right {
  display: table-cell; //不能设置 margin
  table-layout: fixed; //优点 1.加速table渲染。2.实现了布局优先
}
.left {
  width:100px;
  padding-right: 20px;
}

table特点,每列的宽度之和一定是等于表格宽度的,所以设置leftright会自动填满剩下的宽度

  • 缺点:代码较多

flex

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.parent {
  display: flex;
}
.left {
  width: 100px;
  margin-right: 20px;
}
.right {
  flex: 1;
}

flex: 1 => flex: 1,1,0增长因子,收缩因子都是1,基础宽度为0(剩余宽度都分配给了right)

  • 缺点:兼容性问题,性能问题(做一些小范围的布局)

不定宽与自适应

浮动 float + margin 与 浮动 float + margin + (fix)

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.left {
  float: left;
  width: 100px;
}
.right {
  margin-left: 120px;
}

不能完成不定宽自适应,width: 100px;margin-left: 120px;是强耦合的属性

浮动 float + overflow

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.left {
  float: left;
  margin-right: 20px;
}
.right{
  overflow: hidden;
}
.left p {
  width: 200px;
}

可以实现不定宽自适应布局(IE6 有兼容性问题)

table

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.parent {
  display: table;
  width: 100%; 
}
.left,.right {
  display: table-cell;
  /*table-layout: fixed;*/
}
.left {
  /*width: 100px;*/
  width: 0.1%;
  padding-right: 20px;
}
.left p {
  width: 200px;
}

可以实现不定宽自适应布局,如果根据内容适应宽度,应去掉table-layout: fixed,同时更改left宽度width:0.1%(设置 0.1% 有兼容性的考虑,1px 在 IE8 中有问题),再设置单元格内容(不兼容IE6)

flex

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.parent {
  display: flex;
}
.left {
  width: 200px;
  margin-right: 20px;
}
.right {
  flex: 1;
}

可以实现不定宽自适应布局(低版本浏览器有兼容性问题)

相关文章

  • 页面布局:两列布局

    定宽与自适应 浮动 float + margin 简单的布局方法,左侧设置浮动,右侧设置margin-left(避...

  • CSS3开发常用核心技能

    基础网页布局 布局分类 一列布局 两列布局 三列布局 多列布局 一列布局: 二列布局: 三列布局: ⚠️ midd...

  • 页面架构——多列布局_两列布局

    两列布局 一列定宽,一列自适应 使用float+margin 缺点:IE6不兼容 会出现bug改正: 使用floa...

  • 页面布局之两列等高布局

    两列等高布局的方法有很多种。 html结构如下: 方法一:利用负边距实现 方法二:使用display:table-...

  • css常见布局(二)

    采用flex实现两列,三列等多列的布局 一、两列布局 二、三列布局

  • 入门11

    布局示意图 代码 第一列第5个布局 第二列第1个布局 第三列第1个布局 页面范例 - 风景列表 小卡片

  • CSS面试考点之两栏布局和三栏布局

    1、两栏布局 两栏布局实现效果就是将页面分割成左右宽度不等的两列,宽度较小的列设置为固定宽度,剩余宽度由另一列撑满...

  • 页面布局之两列自适应布局

    两列自适应布局方式其实就是宽度属性以百分比的形式计算,但该宽度并不是盒模型的总宽度,而是盒模型的内容区域的宽度 注...

  • 前端开发-常见CSS布局

    常见的两列布局 float浮动布局 flex布局 常见的三列布局 float浮动布局 position定位 fle...

  • html 和css

    页面布局 css 盒模型 BFC 1、 页面布局 假设高度已知,请写出三列布局,其中左右的各为300px,中间自适...

网友评论

      本文标题:页面布局:两列布局

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