美文网首页前端面试基础必备
CSS三栏自适应布局、二栏自适应布局

CSS三栏自适应布局、二栏自适应布局

作者: puxiaotaoc | 来源:发表于2018-09-11 17:08 被阅读17次

三栏自适应布局:左右宽度300px,中间宽度自适应,整体高度自适应

1)绝对定位法

       左右两边使用absolute定位,绝对定位会使其脱离正常文档流,中间部分会自然流动到他们上面,因此需要使用margin属性,留出左右元素的宽度,这样就使得中间元素可以自适应屏幕宽度;
       该布局的优点:三个div顺序可以任意改变,不足是因为绝对定位,如果页面上还有其他内容,top的值需要小心处理,最好能够对css样式进行一个初始化,如果不对样式进行初始化,则两边和中间的值可能会对不齐;

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>test</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .left,.right{
      position: absolute;
      width: 300px;
      top:0;
    }
    .left{
      left:0;
      background: red;
    }
    .center{
      margin: 0 300px;
      background: pink;
    }
    .right{
      right: 0;
      background: blue;
    }
  </style>
</head>

<body>
  <div class="left">左边</div>
  <div class="center">中间</div>
  <div class="right">右边</div>
</body>

</html>
2)圣杯布局:

       原理是margin负值法,使用圣杯布局首先需要在center元素外部包含一个div,包含div需要设置float属性使其成为一个BFC,并且其宽度要和left块的margin负值进行配合;布局中间部分一定要放在前面,左右顺序不限制,对于left块的margin负值一定要等于wrap的宽度;

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>test</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .wrap{
      float: left;
      width: 100%;
    }
    .left,.right{
      float: left;
      width: 300px;
    }
    .left{
      margin-left: -100%;
      background: red;
    }
    .center{
      margin: 0 300px;
      background: pink;
    }
    .right{
      margin-left: -300px;
      background: blue;
    }
  </style>
</head>

<body>
  <div class="wrap">
    <div class="center">中间</div>
  </div>
  <div class="left">左边</div>
  <div class="right">右边</div>
</body>

</html>
3)自身浮动法:

       对左右使用float:left和float:right使左右两个元素脱离文档流,中间元素在正常文档流中,使用margin指定左右外边距对其进行一个定位,该布局的好处是受外界影响小,但是不足的是三个元素的顺序,center一定要放在最后,这是和绝对定位不一样的地方,center占据文档流位置,所以一定要放在最后,左右两个元素位置没有关系,当浏览器很小的时候,右边元素会被击到下一行;

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>test</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .left,.right{
      width: 300px;
    }
    .left{
      float: left;
      background: red;
    }
    .right{
      float: right;
      background: blue;
    }
    .center{
      margin: 0 300px;
      background: pink;
    }
  </style>
</head>

<body>
  <div class="left">左边</div>
  <div class="right">右边</div>
  <div class="center">中间</div>
</body>

</html>
5)flex法:

       在外层包裹一层div,设置为display:flex;中间设置flex:1;但是盒模型默认紧紧挨着,可以使用margin控制外边距,center一定要放到中间;

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>test</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .wrap {
      display: flex;
    }
    .left,.right {
      width: 300px;
      background: red;
    }
    .right {
      background: green;
    }
    .center {
      flex: 1;
      background: blue;
    }
  </style>
</head>

<body>
  <div class="wrap">
    <div class="left">左边</div>
    <div class="center">中间</div>
    <div class="right">右边</div>
  </div>
</body>

</html>
三栏布局

两栏自适应布局:

1)绝对定位法:
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>test</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .left {
      position: absolute;
      left: 0;
      width: 300px;
      background: red;
      top: 0;
    }
    .right {
      background: green;
      margin-left: 300px;
    }

  </style>
</head>

<body>
    <div class="left">左边</div>
    <div class="right">右边</div>
</body>

</html>
2)圣杯布局:
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>test</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .wrap {
      width: 100%;
      float: left;
    }
    .left {
      float: left;
      margin-left: -100%;
      width: 300px;
      background: red;
    }
    .right {
      background: green;
      margin-left: 300px;
    }

  </style>
</head>

<body>
  <div class="wrap">
    <div class="right">右边</div>
  </div>
    <div class="left">左边</div>
</body>

</html>
3)自身浮动法:
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>test</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .left {
      float: left;
      width: 300px;
      background: red;
    }
    .right {
      background: green;
      margin-left: 300px;
    }

  </style>
</head>

<body>
    <div class="left">左边</div>
    <div class="right">右边</div>
</body>

</html>
4)flex方法;
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>test</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .wrap {
      display: flex;
    }
    .left {
      width: 300px;
      background: red;
    }
    .right {
      flex: 1;
      background: green;
    }

  </style>
</head>

<body>
  <div class="wrap">
    <div class="left">左边</div>
    <div class="right">右边</div>
  </div>
</body>

</html>
两栏布局

相关文章

  • 2019-04-10响应式布局和自适应布局

    响应式布局和自适应布局详解 布局等于流动网格布局,而自适应布局等于使用固定分割点来进行布局。 自适应布局给了你更多...

  • 两栏&三栏&双飞翼&圣杯

    两栏自适应布局(左边固定,右边自适应) 利用CSS中的calc()方法来动态设定宽度 双float布局 缺点:要清...

  • 布局

    两栏自适应布局(左边固定,右边自适应) 利用CSS中的calc()方法来动态设定宽度 双float布局 缺点:要清...

  • 特殊布局方法

    关于圣杯布局和双飞翼布局:CSS布局之--淘宝双飞翼布局双飞翼布局介绍CSS控制自适应宽度两三栏布局圣杯布局的实现...

  • 为iPhone 6设计自适应布局

    为iPhone 6设计自适应布局 为iPhone 6设计自适应布局

  • 常用网页布局

    一、多列布局 (1) 宽度自适应布局 两栏布局 左侧固定右侧自适应 右侧固定左侧自适应 技术原理(左侧固定右侧自适...

  • 常见网页布局的介绍

    左侧固定,右侧自适应 右侧固定,左侧自适应 圣杯布局(左右固定,中间自适应) 中间固定 两侧自适应 等分布局 等分...

  • 历代网页布局方式

    1.表格布局 2.DIV+CSS布局 float:left向左边横向自适应 3.flex布局 row 行disp...

  • 我还是要说的布局

    两栏布局 左边固定右边自适应 使用float布局 使用position布局    三栏布局 左右两边固定中间自适应...

  • Css布局练习

    双列布局,某一列自适应宽度。 若我们想做下图所示的Css布局: Css:body{ width:500px; ma...

网友评论

    本文标题:CSS三栏自适应布局、二栏自适应布局

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