三栏布局

圣杯布局:

左、右栏固定。中间自适应,而且中间需要优先加载。

确定的架构:

<body>

    <header>头部</header>

   <div class="center">主区域</div> 

   <div class="left">左区域</div> 

   <div class="right">右区域</div> 

   <footer>底部</footer>

</body>

1.首先我们需要优先加载主区域,所以把主区域放最前面,我们需要把主区域、左区域、右区域设置到同一行所以

.center,.left,.right{

  float:left;

}

2.但是这样后会产生塌陷

给中间区域加上一个标签,包裹他们

<body>

    <header>头部</header>

    <div class="clearfix">

         <div class="center">主区域</div> 

        <div class="left">左区域</div> 

        <div class="right">右区域</div> 

    </div>

   <footer>底部</footer>

</body>

3.然后变成了这个样子

4.我们需要把左右的距离空出来

.wrapper{

            height:200px;

            background-color: darkgreen;

            padding:0 100px;

        }

5.我们需要让红色块(left)移到上面玫色块(center)

因为玫色(center)和红色(left)都加了浮动,所以使用margin-left:-100%,是相对于上一个浮动的盒子

.left{

           height:100px;

           width:100px;

           float:left;

           background-color: darkred;

           margin-left: -100%;

        }

6.让红色(left)移到左边

.left{

           height:100px;

           width:100px;

           float:left;

           background-color: darkred;

           margin-left: -100%;

           position:relative;

           left:-100px;

        }

7.让藕粉(right)移动到上面

.right{

            height: 100px;

            width:100px;

            float:left;

            background-color: darksalmon;

            margin-right: -100%;

        }

整体代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>圣杯</title>
    <style>
        .wrapper{
            height:200px;
            background-color: darkgreen;
            padding:0 100px;
        }
        .center{
            height:100px;
            width:100%;
            float:left;
            background-color: darkmagenta;
        }
        .left{
           height:100px;
           width:100px;
           float:left;
           background-color: darkred;
           margin-left: -100%;
           position: relative;
           left:-100px;
        }
        .right{
            height: 100px;
            width:100px;
            float:left;
            background-color: darksalmon;
            margin-right: -100%;
        }
    </style>
</head>
<body>
    <header>头部</header>
    <div class="wrapper">
        <div class="center"></div>
        <div class="left"></div>
        <div class="right"></div>
    </div>
    <footer>尾部</footer>
</body>
</html>

双飞翼布局:

1.双飞翼可以看成,中间一个鸟,左右是鸟的翅膀

 一开始的架构:

<body>

<header>头部</header>

    <div class="wrapper">

        <div class="center">

           <div class="inner">center</div>

        </div>

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

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

    </div>

    <footer>尾部</footer>

</body>

2.需要为左右两边留出翅膀的位置

.inner{

            margin:0 100px;

        }

3.让center、left、right都在一行上,都加左浮动

4.让left往上走

 .left{

            height:100px;

            width:100px;

            background-color: darkslateblue;

            float: left;

            margin-left: -100%;

        }

5.right往右上走

.right{

            height:100px;

            width:100px;

            background-color: darkturquoise;

            float:left;

            margin-left: -100px;

        }

总代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>双飞翼</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .wrapper{
            height:100px;
        }
        .center{
            height:100px;
            background-color: darkseagreen;
            width:100%;
            float:left;
        }
        .inner{
            margin:0 100px;
            background-color: forestgreen;
        }
        .left{
            height:100px;
            width:100px;
            background-color: darkslateblue;
            float: left;
            margin-left: -100%;
        }
        .right{
            height:100px;
            width:100px;
            background-color: darkturquoise;
            float:left;
            margin-left: -100px;
        }

    </style>
</head>
<body>
    <header>头部</header>
    <div class="wrapper">
        <div class="center">
           <div class="inner">center</div>
        </div>
           <div class="left">left</div>
           <div class="right">right</div>
    </div>
    <footer>尾部</footer>
</body>
</html>

float布局

思路:一个左浮,一个右浮,中间盒子再腾出两边位置;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Float</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .left{
           width:100px;
           background-color: forestgreen;
           float:left;
        }
        .right{
            width:100px;
            background-color: gold;
            float:right;
        }
        .center{
           
            background-color: dodgerblue;
            margin:0 100px;
        }
    </style>
</head>
<body>
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="center">center</div>
</body>
</html>

绝对定位

左右盒子都绝对定位,中间盒子腾出左右盒子的位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>绝对定位</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .left{
           width:100px;
           background-color: forestgreen;
           position:absolute;
           top:0;
           left:0;
        }
        .right{
            width:100px;
            background-color: gold;
            position:absolute;
            right:0;
            top:0;
        }
        .center{
           
            background-color: dodgerblue;
            margin:0 100px;
        }
    </style>
</head>
<body>
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="center">center</div>
</body>
</html>

flex布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex</title>
    <style>
       *{
           padding: 0;
           margin: 0;
       }
       .wrap{
           display: flex;
       }
       .center{
           height:100px;
           background-color: dodgerblue;
           flex:1;
       }
       .left{
           height:100px;
           width: 100px;
           background-color: floralwhite;
       }
       .right{
           height:100px;
           width:100px;
           background-color: gold;
       }
    </style>
</head>
<body>
    <div class="wrap">
      <div class="left">left</div>
      <div class="center">center</div>
      <div class="right">right</div>
    </div>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值