三栏布局

    科技2022-08-12  97

    圣杯布局:

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

    确定的架构:

    <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>

     

    Processed: 0.023, SQL: 8