zoukankan      html  css  js  c++  java
  • 左右固定,中间自适应布局

    1.使用自身浮动法:

    自身浮动法的原理就是对左右分别使用float:left和float:right,float使左右两个元素脱离文档流,中间元素正常在正常文档流中。对中间文档流使用margin指定左右外边距进行定位。
    该布局法的不足是三个元素的顺序,middle一定要放在最后,middle占据文档流位置,所以一定要放在最后,左右两个元素位置没有关系。当浏览器窗口很小的时候,右边元素会被挤到下一行

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <style>
     9     .containter{
    10         width:100%;
    11         height:200px;
    12     }
    13     
    14     .left{
    15         width:300px;
    16         height:100%;
    17         float: left;
    18         background: blue;
    19     }
    20 
    21     .center{
    22         height:100%;
    23         margin-left: 300px;
    24         margin-right: 300px;
    25         background: red;
    26     }
    27     .right{
    28         height:100%;
    29         width:300px;
    30         background: blue;
    31         float: right;
    32     }
    33 
    34 </style>
    35 <!--中间部分一定要放最后-->
    36 <div class="containter">
    37     <div class="left"></div>
    38     <div class="right"></div>
    39     <div class="center"></div>
    40 </div>
    41 </body>
    42 </html>

    2.使用绝对定位法:

    绝对定位法原理是将左右两边使用absolute定位,因为绝对定位使其脱离文档流,后面的middle会自然流动到他们上面,然后使用margin属性,留出左右元素的宽度,既可以使中间元素自适应屏幕宽度。
    该法布局的好处,三个div顺序可以任意改变。但是因为是绝对定位,如果页面上还有其他内容,top的值需要小心处理。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <style>
     9     .containter{
    10         position: relative;
    11         width:100%;
    12         height:500px;
    13     }
    14     .left{
    15         position: absolute;
    16         top:0;
    17         left: 0;
    18         width:300px;
    19         height:100%;
    20         float: left;
    21         background: blue;
    22     }
    23 
    24     .center{
    25         height:100%;
    26         margin-left: 300px;
    27         margin-right: 300px;
    28         background: red;
    29     }
    30     .right{
    31         position: absolute;
    32         top:0;
    33         right: 0;
    34         height:100%;
    35         width:300px;
    36         background: blue;
    37         float: right;
    38     }
    39 
    40 </style>
    41 
    42 <div class="containter">
    43     <div class="left"></div>
    44     <div class="center"></div>
    45     <div class="right"></div>
    46 </div>
    47 </body>
    48 </html>

    3.使用flex布局:

    设置一个父div,添加样式display:flex。中间div设置flex-grow:1,(等同代码中设置flex:1。flex是grow、shrink、basis的简写)但是盒模型默认紧紧挨着,可以使用margin控制外边距。middle一定在中间,否则需要order属性来调整。      

    通过项目属性flex-grow设置middle的放大比例,将空余的空间用middle来填充,使三个项目排满一整行;默认为0,也就是对剩余空间不做处理。通过项目属性flex-basis 设置left和right的固定宽度。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <style>
     7         .main{
     8             width:100%;
     9             height:500px;
    10             display: flex;
    11             flex-direction: row;
    12             justify-content: flex-start;
    13         }
    14 
    15         .left{
    16             flex:0 1 200px;
    17             height:500px;
    18             background-color: red;
    19         }
    20 
    21         .middle{
    22             flex:1;
    23             height:100%;
    24             background-color: yellow;
    25 
    26         }
    27 
    28         .right{
    29             flex:0 1 500px;
    30             height:500px;
    31             background-color: blue;
    32         }
    33     </style>
    34 </head>
    35 <body>
    36 <div class="main">
    37     <div class="left"></div>
    38     <div class="middle"></div>
    39     <div class="right"></div>
    40 </div>
    41 </body>
    42 </html>

    flex布局教程: 

    https://www.runoob.com/w3cnote/flex-grammar.html

  • 相关阅读:
    机器学习技法笔记:16 Finale
    机器学习技法笔记:15 Matrix Factorization
    机器学习技法笔记:14 Radial Basis Function Network
    机器学习技法笔记:13 Deep Learning
    机器学习技法笔记:Homework #7 Decision Tree&Random Forest相关习题
    [HTML] 条件注释判断浏览器
    [ligerUI] grid行编辑示例
    [ligerUI] grid封装调用方法
    [MVC.NET] Asp.Net MVC3 简单入门第一季
    [HTML5] 飞龙天惊-HTML5学习系列
  • 原文地址:https://www.cnblogs.com/yinhao-jack/p/11747871.html
Copyright © 2011-2022 走看看