HTML/CSS布局

久未见 提交于 2019-12-02 16:22:14

一、三列布局

  三列布局要求:1.两边固定,中间自适应

         2.当中列要完整显示

         3.当中列要优先加载

1.圣杯布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
     <style>
         *{
             margin: 0;
             padding: 0;
         }
         #content{
             padding: 0 200px;
             overflow: hidden;
         }

         body{
             min-width: 600px;
         }
         #header,#footer{
             height: 20px;
             text-align: center;
             border: 1px solid;
             background: gray;
         }
         /*伪等高布局*/
         #content .middle,#content .left,#content .right{
             padding-bottom: 10000px;
             margin-bottom: -10000px;
         }
         #content .middle{
             float: left;
             background-color: pink;
             width: 100%;             
         }
         #content .left{
             width: 200px; 
             background-color: yellow;
             margin-left: -100%;
             float: left;
             position: relative;
             left: -200px;
         }
         #content .right{
             width: 200px;
             background-color: yellow;
             margin-left: -200px;
             float: left;
             position: relative;
             right: -200px;
         }

         .clearfix::after,.clearfix::before{
             content: "";
             display: table;
             clear: both;
         }
     </style>
</head>
<body>
    <div id="header">Header</div>
    <div id="content" class="clearfix">
        <div class="middle">Middle</div>
        <div class="left">Left</div>
        <div class="right">Right</div>
    </div>
    <div id="footer">Footer</div>
</body>
</html>

2.双飞翼布局

两组实现布局方法的对比

        1.都是把主列放在文档流最前面,主列优先加载
        2.都是让三列浮动,通过负外边距形成三列布局
        3.不同之处在于如何处理中间主列的位置,圣杯布局是利用父容器的左,右内边距+两个从列相对定位;双飞翼布局是把主列嵌套再一个新的父级块中利用主列的左右外边距进行布局调整。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #header,#footer{
            border: 1px solid;
            background-color: gray;
            text-align: center;
        }
        body{
            min-width: 600px;
        }
        /* 伪等高布局 */
        #content{
            overflow: hidden;
        }
        #content .middle,#content .left,#content .right{
            padding-bottom: 10000px;
            margin-bottom: -10000px;
            float: left;
        }
        #content .middle{
            background-color: pink;
            width: 100%;
        }
        #content .m_inner{
            padding:0 200px; 
        }
        #content .left,#content .right{
            background-color: deeppink;
            width: 200px;
            text-align: center;
        }
        #content .left{
            margin-left: -100%;
        }
        #content .right{
            margin-left: -200px;
        }   
    </style>
</head>
<body>
    <div id="header">Header</div>
    <div id="content">
        <div class="middle">
            <div class="m_inner">
                middle 
            </div>
        </div>
        <div class="left">Left</div>
        <div class="right">Right</div>
    </div>
    <div id="footer">footer</div>
</body>
</html>

二.双列布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            min-width: 600px;
        }
        div{
            height: 200px;
        }
        #left{
            width: 200px;
            background-color: pink;
            float: left;
        }
        #right{
            overflow: hidden;
            background-color: deeppink;
        }
    </style>
</head>
<body>
    <div id="left">Left</div>
    <div id="right">Right</div>
</body>
</html>

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!