三列布局,左右宽度固定,中间宽度自适应变化---普通格式和双飞翼格式

Posted my_notebook

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三列布局,左右宽度固定,中间宽度自适应变化---普通格式和双飞翼格式相关的知识,希望对你有一定的参考价值。

两种做法。

做法一:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <style>
  *{
    margin: 0;
    padding: 0;
  }
  #left {
           width: 100px;
           float: left;
           background: green;
           height: 300px;  
   }  
   #right {
           width: 100px;
           float: right;
           background: red;
           height: 300px;
           
    }   
    #middle {
           margin-right: 110px;
           margin-left: 110px;
           height: 300px;
           background: #ccc;
     }
</style>
</head>
<body>
  <div id="left">
        </div>
        <div id="right">
        </div>
        <div id="middle">
    </div>
</body>
</html>

思路是:1、利用left/right两个元素实现左右浮动,浮动流不会影响middle元素的位置,但会遮盖文档流。

           2、 然后在middle元素中加入margin-right和margin-left属性,使中间的元素撑开占据空间,如果只设置了margin-right或者margin-left,中间的元素就不会充满中间的空间。

做法二:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <style>
  *{
    margin: 0;
    padding: 0;
  }
  #bd{
    padding: 0 230px 0 190px;/* 给100%宽度的main元素增加内边距,然后利用相对定位移动sub和extra元素 使main元素的内容正常显示 */
  }
  .sub{
    /*需要保证sub位于最左边*/
    float: left;
    width: 190px;
    height: 30px;
    background-color: red;
    margin-left: -100%;

    position: relative;
    left: -190px;
  }
  .main{
    float: left;
    width: 100%;
    height: 30px;
    background-color: blue;
    
  }
  .extra{
    float: left;
    width: 230px;
    
    height: 30px;
    background-color: green;
    margin-left: -230px;
    position: relative;
    right: -230px;
  }
  
  </style>
</head>
<body>
  <div id="page">
    <div id="bd">
      <div class="main">main这是主体</div>
      <div class="sub">sub这是左边</div>
      <div class="extra">extra这是右边</div>
    </div>
  
  </div -->

  
</body>
</html>

经典的双飞翼布局。由main、sub、extra组成,main是位于中间的,sub、extra位于左右。

在这里把main元素放在sub之前,是因为可以先解析main元素的内容,使阅读网页的人可以更快看到网页的主体内容。

思路:1、三个元素均进行左浮动,而且sub和extra有固定宽度,main则是100%宽度。此时,main和另外两个元素分为两层。

   2、利用负边距,比如sub的margin-left:-100%;可以使其浮动至上一行的最左边,也就是main所处行的左边。extra的margin-left:230px(大于或等于extra元素的宽度),元素浮动至上一行最右边。

   3、经过上面两步之后,sub和extra浮动元素会浮动到main元素所在行的左右,然后遮盖住main元素左右的部分内容,比如main元素中的文字此时是从最左边开始的,但是被sub元素遮住了。利用三个元素的父元素bd,设置padding,增加内边距,左右内边距刚好等于sub和extra的宽度。这时,整体的元素宽度就变短了,左右出现空白。而且main的左右还是被遮住的。

   4、最后一步,再对sub和extra进行相对定位,使两个元素相对原来的位置偏移到左右空白的地方。main中的文字也不会被遮盖了!

    

 

以上是关于三列布局,左右宽度固定,中间宽度自适应变化---普通格式和双飞翼格式的主要内容,如果未能解决你的问题,请参考以下文章

特殊的三列布局-左右两列宽度固定,中间自适应

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

三列布局_左右固定_中间自适应

抛砖引玉之宽度自适应布局

抛砖引玉之宽度自适应布局

常见的布局实现,如弹性布局,两列、三列布局