css---两栏三栏布局

huanqna      2022-02-10     191

关键词:

  本文主要总结了两栏布局(两列自适应、一列固定一列自适应)、三栏布局(两边固定中间自适应)的一些方法,以便遗忘时能方便查询。

一、两栏布局

1、两列自适应

  两列自适应是特别简单的布局方式,其要点在于把列宽用百分百来表示,然后可以使用 float 或 display:inline-block 等方法来让两列处于同一行。不多说,直接上代码:

  方法一:使用 float

<style>
  .outer{
    background:green;
    padding-bottom:20px;
  }
  .left{
    float:left;
    width:20%;
    height:100px;
    background:red;
  }
  .right{
    float:right;
    width:77%;      //使两列之间有一个间距
    height:100px;
    background:pink;
  }
</style>
 
<body>
  <div class="outer">
    <div class="left">列一</div>
    <div class="right">列二</div>
  </div>

技术分享图片

 

  优点:简单

  缺点:两列都脱离了文档流,两列后面的内容或父盒子无法被撑起(上图中的绿色是父盒子),故需要清除浮动。

 

  方法二:使用 display:inline-block

<style>
  .outer{
    background:green;
    padding-bottom:20px;
  }
  .left{
    display:inline-block;
    width:20%;
    height:100px;
    background:red;
  }
  .right{
    display:inline-block;
    width:60%;          //设置小方便观察
    height:120px;
    background:pink;
  }
</style>

<body>
  <div class="outer">
    <div class="left">列一</div>    //这儿换行了,"列一" 和 "列二" 之间因换行形成了一个间隙
    <div class="right">列二</div>
  </div>
</body>    

 技术分享图片

  优点:不用考虑盒子脱离文档流的问题,父盒子总能被高的盒子撑起

  缺点:需要考虑盒子的间距。

   1:设置为 inline-block 的盒子因为上面注释处的换行而在浏览器渲染时形成了一个间隙(上图蓝色箭头处),故需要解决这个间隙问题。

   2:如果要 “列一” 和 “列二” 之间有一个间距,则需要考虑 “列二” 宽度和间距大小的关系,可以与 margin 相结合来解决这个问题。

  其他方法:

  position:absolute ------ 问题与设置 float 类似。

 

2、一列固定一列自适应

  这个布局方式也很简单,其实与上面的布局方式是相通的,方法特别多,但都是灵活的运用这几个属性。所以这儿示例以 margin、BFC来实现的布局方式。

  方法一:margin

<style>
  .outer{
    margin-left:220px;    //可以考虑margin-right:-220px;但需要和float联合使用
  }
  .left{
    float:left;
    width:200px;
    height:100px;
    background:red;
  }
  .right{
    height:120px;
    background:pink;
  }
</style>

<body>
  <div class="left">列一</div>
  <div class="outer">
    <div class="right">列二</div>
  </div>
</body>     

技术分享图片

 

  缺点:无论是设置margin-left,还是设置margin-right,“列一” 和 “列二” 至少有一个是脱离文档流了的。

 

  方法二:BFC

<style>
  .left{
    float:left;
    margin-right:20px;
    width:200px;
    height:100px;
    background:red;
  }
  .right{
    overflow:hidden;        //触发BFC
    height:120px;
    background:pink;
  }
</style>

<body>
  <div class="left">列一</div>
  <div class="right">列二</div>
</body>

技术分享图片

 

  BFC清除浮动的原理可以点这儿。简单的说,就是触发 BFC 后盒子不会与 float 区域重叠,这个方法简单好用,是我目前比较喜欢的方法。

 

二、三栏布局

1、两边固定中间自适应

  方法一:margin

<style>
  .outer{
    width:100%;
    float:left;
  }
  .center{
    height:100px;
    margin:0 60px;
    background:pink;
  }
  .left,
  .right{
    float:left;
    width:50px;
    height:100px;
    background:red;
  }
  .left{
    margin-left: -100%;
  }
  .right{
    margin-left: -50px;
  }
</style>

<body>
  <div class="outer">
    <div class="center">列二</div>
  </div>
  <div class="left">列一</div>
  <div class="right">列三</div>
</body>

 技术分享图片

  缺点:方法比较麻烦,需要嵌套额外的盒子,需要清除浮动

  要点:注意三者在 HTML 中的顺序。

 

   方法二:position

<style>
  body{
    margin:0;
  }
  .center{
    height:100px;
    margin:0 60px;
    background:pink;
  }
  .left,
  .right{
    position:absolute;
    top:0;
    width:50px;
    height:100px;
    background:red;
  }
  .left{
    left:0;
  }
  .right{
    right:0;
  }
</style>

<body>
  <div class="left">列一</div>
  <div class="center">列二</div>
  <div class="right">列三</div>
</body>

 技术分享图片

  思路:中间盒子的 margin 配合两边盒子的绝对定位。

 

  方法三:BFC

<style>
  .center{
    overflow:hidden;
    height:120px;
    background:pink;
  }
  .left,
  .right{
    width:50px;
    height:100px;
    background:red;
    margin:0 10px;
  }
  .left{
    float:left;
  }
  .right{
    float:right;
  }
</style>

<body>
  <div class="left">列一</div>
  <div class="right">列三</div>
  <div class="center">列二</div>
</body>

技术分享图片

  要点:注意 “列一”、“列二”、“列三” 在 HTML 中的顺序。

 

  (欢迎大家多多补充~)

css总结——常见的两栏三栏布局

一、两栏布局—左栏固定宽度,右栏宽度自适应    1、左浮动+margin      <divclass=“left”></div>      <divclass=&ldqu 查看详情

html+css的两栏三栏布局以及垂直居中的实现方式

1.两栏布局(左固定,右适应)先写出初始样式和结构。<divclass="container"><divclass="left">Loremipsumdolorsitamet</div><divclass="right">Loremipsumdolorsitamet</div></div>div{height:200px;co 查看详情

两栏三栏自适应布局

<!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <title>Document</title> <styletype="text/css"> html,body{width:100%;height:100%;overflow:hidden;} 查看详情

谁能详细说说wordpress主题的一栏两栏三栏是表达啥有啥区别有没典型例子?

...的就是首页只能展示一列标题或者标题+文章部分内容,两栏有的是放不同分类,有的还有别的功能模块,三栏以此类推。你可以在后台的外观-主题中各搜索一种主体,然后预览一下你就明白了。本回答被提问者采纳 查看详情

《web前端笔记30》css三栏布局、左右两栏宽度固定,中间自适应

参考技术A三栏布局一般指的是页面中一共有三栏,左右两栏宽度固定,中间自适应的布局,三栏布局的具体实现:利用浮动和负边距来实现。父级元素设置左右的padding,三列均设置向左浮动,中间一列放在最前面,宽度设置为... 查看详情

css三栏布局的四种方法

总括: 不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文... 查看详情

转载:css实现三栏布局的四种方法示例

...http://www.jb51.net/css/529846.html前言其实不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会... 查看详情

三栏布局两栏布局

参考技术A实现三栏等高布局,且两边的侧栏宽度固定,中间一栏占用剩余的空间。1.flex:containerdisplay:flex;.left,.rightwidth:200px;.mainflex-grow:1;两列布局1.flex.container  display:flex;  height:100px;  .container.left  ... 查看详情

三栏布局

参考技术A三栏布局,左右两栏宽度固定,中间栏宽度自适应。假设我们有以下HTML结构:基本样式如下:本文将介绍几种实现三栏布局的方式。这里会有一点不一样,我们需要调整一下类为.right标签的位置。 查看详情

两栏布局必掌握实现方式(超简单)

...藏,外盒子清除浮动看效果:做常用的,也是必须掌握的两栏布局就完成了。解释效果实现原理:left左浮动,常规流main就会直接显示上去,默认占满宽度。而main添加overflow(不是默认值visible就行)会触发bfc(一个独立渲染区域... 查看详情

css基础多栏布局

...础布局,主要展现在移动端,pc端同样适用。分为一栏、两栏、三栏、四栏。这里使用了两种方式实现。首先设置基础样式:/*==================commoncssstart================*/ul{list-style:none;background:#f0f1f1;padding:30px15px;}li{background:#fff;text-alig... 查看详情

css基础多栏布局

...础布局,主要展现在移动端,pc端同样适用。分为一栏、两栏、三栏、四栏。这里使用了两种方式实现。首先设置基础样式:/*==================commoncssstart================*/ul{list-style:none;background:#f0f1f1;padding:30px15px;}li{background:#fff;text-alig... 查看详情

网页布局layout

网页常见的布局有一般一栏、两栏、三栏现在从一栏说起:css:<styletype="text/css">.container{background:#87cbe5;height:700px;width:500px;/*margin:0pxauto;*/margin-left:auto;margin-right:auto;}</style>大家都知道一框架居中margin:0 查看详情

css3布局-圣杯布局

...position:relative并给两侧的div添加right和left属性,以便左右两栏div移动后不内容不覆盖中间div。圣杯布局的特点(两端固定中间自适应),也就是说两端的内容不会因为浏览器宽度的改变使其内容改变<!DOC 查看详情

从三栏自适应宽度布局到css布局的讨论

如何实现一个三栏自适应布局,左右各100px,中间随着浏览器宽度自适应?     第一个想到的是使用table布局,设置table的宽度为100%,三个td,第1个和第3个固定宽度为100px,那么中间那个就会自适应了,下面是... 查看详情

css三栏布局:左右固定宽中间自适应

圣杯布局直接上代码:html:<divclass="container><divclass="middle"></div><divclass="left"></div><divclass="right"></div></div>css:.middle,.left,.right{float:left;po 查看详情

使用 CSS 网格的两栏报纸布局

】使用CSS网格的两栏报纸布局【英文标题】:Two-ColumnNewspaperLayoutwithCSSGrid【发布时间】:2021-03-1901:15:06【问题描述】:我有CSS网格来生成两列布局。但问题是它不是每列中的顶部对齐内容。例如,在第二列中,最后一个元素应该... 查看详情

css高度已知,左右定宽,中间自适应三栏布局

css高度已知,左右定宽,中间自适应三栏布局:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA 查看详情