美文网首页
CSS两列以及三列自适应布局方法整理

CSS两列以及三列自适应布局方法整理

作者: IvyAutumn | 来源:发表于2019-02-28 19:50 被阅读0次

参考:
https://www.cnblogs.com/depsi/p/5097013.html
https://blog.csdn.net/qq_40072782/article/details/82927573

一、两栏布局:左侧定宽,右侧自适应

方法一:利用绝对定位

右侧设置绝对定位,将其从文档流中删除,为其设置100%的宽度和left的值(为左侧定宽留出位置)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .sitebar{
            width: 200px;
            background-color: green;
        }
        .content{
            position: absolute;
            left: 200px;
            right: 0;
            top: 0;
            background-color: red;
        }
    </style>
</head>
<body>
    <div class="content">右侧主体自适应区块</div>
    <div class="sitebar">左侧定宽200px区块</div>
</body>
</html>

方法二:浮动法(和后面三列的思路一样)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .sitebar{
            float: left;
            width: 200px;
            background-color: green;
        }
        .content{
            background-color: red;
            margin-left: 200px;
        }
    </style>
</head>
<body>
    <div class="sitebar">左侧定宽200px区块</div>
    <div class="content">右侧主体自适应区块</div>
</body>
</html>

优点:代码简洁,便于理解
缺点:不利于页面优化,右侧主内容区后加载

方法三:margin负值法

该方法在网站布局中非常常见,也是面试常考点,优点是三栏相互关联,有一定的抗性。
要求:在middle外部再加一个div。此div需要设置float属性使其形成一个BFC,并设置宽度,并且这个宽度要和left、right块的margin负值进行配合。看代码吧

方法四:css3新属性flex方法

写一个<div>,在flex中类似于容器,
将left、right、middle全部包进去
并设div的display:flex。
middle块的样式中加上flex:1(或者auto)

三列布局

方法一:利用绝对定位:左右两列固定宽度,使用绝对定位

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>三列自适应布局 左右绝对定位absolute</title>
<style type="text/css">
    *{
        padding: 0;margin: 0;
    }
    .left{
        width: 200px;
        height: 200px;
        background: yellow;
        position: absolute; 
        top: 0;
        left: 0;   //注意这里
    }

    .right{
        width: 200px;
        height: 200px;
        background: blue;
        position: absolute;
        top: 0;
        right: 0;   //注意这里
        
    }
    .middle{
        height: 200px;
        background: red;
        text-align: center;
       
    }

 
</style>
</head>
<body>
<div class="middle">middle</div>
<div class="left">left</div>
<div class="right">right</div>

</body>
</html>

方法二:浮动法

浮动法的原理:
对左右块使用分别使用float:left和float:right,float使左右两个元素脱离文档流,中间元素在正常文档流中。
注意:
middle位置要求:middle块一定要放在left和right之后,因为它占据文档流位置,所以一定要放在最后

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>三列自适应布局 左右绝对定位absolute</title>
<style type="text/css">
    *{
        padding: 0;margin: 0;
    }
    .left{
        width: 200px;
        height: 200px;
        background: yellow;
        float: left;
    }

    .right{
        width: 200px;
        height: 200px;
        background: blue;
        float: right;   
    }
    .middle{
        height: 200px;
        background: red;
        text-align: center;
       
    }
</style>
</head>
<body>

<div class="left">left</div>
<div class="right">right</div>
<div class="middle">middle</div>

</body>
</html>

方法三:margin负值法

该方法在网站布局中非常常见,也是面试常考点,优点是三栏相互关联,有一定的抗性。
要求:在middle外部再加一个div。此div需要设置float属性使其形成一个BFC,并设置宽度,并且这个宽度要和left、right块的margin负值进行配合。看代码吧

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>document</title>
<style type="text/css">
    *{
        padding: 0;margin: 0;
    }

    .main{
        width: 100%;
        height: 200px;
        background: blue;
        float: left;  /*记得是包含middle外层的div设置浮动*/
    }

    .left{
        width: 200px;
        height: 200px;
        background: yellow;
        float: left;
        margin-left: -100%;  /*-100%是因为相对来说它偏移到下一行去了*/
    }

    .right{
        width: 300px;
        height: 200px;
        background: blue;
        float: left;
        margin-left: -300px;  /*这里要设置成right宽度的负值*/
        
    }
    .middle{
        height: 200px;
        background: red;
        text-align: center;
    }

</style>
</head>
<body>
<div class="main">
    <div class="middle">middle</div>
</div>
<div class="left">left</div>
<div class="right">right</div>
    
</body>
</html>

方法四:css3新属性flex方法

写一个<div>,在flex中类似于容器,
将left、right、middle全部包进去
并设div的display:flex。
middle块的样式中加上flex:1(或者auto)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>三列自适应布局 css3新属性flex方法</title>
<style type="text/css">
  #box{
    width: 100%;
    height: 200px;
    display: flex;
  }
  #left,#right{
    width: 200px;
    height: 200px;
    background: pink;
  }
  #middle{
    flex: auto;  /* flex属性是flex-grow(项目放大比例), flex-shrink(缩小比例) 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选*/
    background: skyblue;
  }

</style>
</head>
<body>
<!-- 写一个的div包含left、right、middle,设置为display:flex;并将middle设置flex:1; -->
<div id="box">
<div id="left">left</div>
<div id="middle">middle </div>
<div id="right">right</div>
</div>
</body>
</html>

相关文章

  • CSS两列以及三列自适应布局方法整理

    参考:https://www.cnblogs.com/depsi/p/5097013.htmlhttps://bl...

  • DIV+CSS页面基本布局总结

    前言 DIV+CSS布局是前端最为基础的知识,而现在网络上最为普遍的有一列,两列,三列,窗格式布局以及自适应布局等...

  • 2018-08-30日前端面试题

    点击查看源码 1、css实现两列布局 1.右侧固定宽度,左侧自适应屏幕宽度;2.左右两列等高布局;3.左右两列的高...

  • 2018-03-19 css 实现左列定宽,右列自适应宽度,等高

    上次面试提到了一个css布局:实现左列定宽,右列自适应宽度,等高布局上次没有答出来,只实现了左列定宽,右列自适应宽...

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

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

  • 布局

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

  • 前端常见布局方式

    常见的布局方式 常见的布局这么几种单列水平居中布局, 一列定宽一列自适应布局, 两列定宽一列自适应布局, 两侧定宽...

  • CSS布局

    一列布局 一列水平居中 一列垂直居中 两列布局 左定宽右自适应 左自适应右定宽 三列布局 左右定宽中间自适应 左右...

  • 布局

    两列自适应布局 两列自适应布局是指一列由内容撑开,另一列撑满剩余宽度的布局方式1.float+overflow:h...

  • Css布局练习

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

网友评论

      本文标题:CSS两列以及三列自适应布局方法整理

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