• 圣杯布局与双飞翼布局


    圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应。

    圣杯布局

    整体布局,main 为外部容器,容器内 middle,left,right 依次排列(注意排列顺序)。

    1. 设置外部容器.main {padding: 0 200px;}
    2. 左中右部分,均设置float: left;
    3. middle 部分.middle { 100%;}占满;
    4. 设置.left{margin-left: -100%;}使其占住 middle 的左侧;
    5. 此时 left 覆盖了 middle 的部分,再设置.left{position: relative;right: 200px; 200px;}
    6. right 部分设置.right{margin-right: -200px;}即可。
    .main {
        padding: 0 200px 0 200px;
        height: 300px;
    }
    
    .middle {
        float: left;
         100%;
        height: 300px;
        background: blue;
    }
    
    .left {
        position: relative;
        right: 200px;
        float: left;
         200px;
        height: 300px;
        background: red;
        margin-left: -100%;
    }
    
    .right {
        float: left;
         200px;
        height: 300px;
        background: yellow;
        margin-right: -200px;
    }
    
    <div class="main">
        <div class="middle">middle</div>
        <div class="left">left</div>
        <div class="right">right</div>
    </div>
    

    双飞翼布局

    如果把三栏布局比作一只大鸟,可以把 main 看成是鸟的身体,sub 和 extra 则是鸟的翅膀。
    这个布局的实现思路是,先把最重要的身体部分放好,然后再将翅膀移动到适当的地方。

    整体布局,main,sub,extra 依次排列。

    1. main,sub,extra 均设置float: left;
    2. main 设置宽度 100% 占满;
    3. 将 sub 拉至最左边,使用margin-left: -100%;,同理 extra 设置margin-right: -200px;
    4. main 的内部增加一层.main-inner{margin: 0 200px;}
    .main,
    .sub,
    .extra {
        float: left;
    }
    
    .main {
         100%;
        background: blue;
    }
    
    .main-inner {
        margin: 0 200px;
    }
    
    .sub {
        margin-left: -100%;
         200px;
        background: red;
    }
    
    .extra {
        margin-left: -200px;
         200px;
        background: yellow;
    }
    
    <div class="main">
        <div class="main-inner">
            main
        </div>
    </div>
    <div class="sub">sub</div>
    <div class="extra">extra</div>
    

    flex 实现类似布局

    .main {
        display: flex;
        flex-direction: row;
    }
    
    .middle {
        flex-grow: 1;
    }
    
    .left,
    .right {
        flex-grow: 0;
        flex-basis: 200px;
    }
    
    <div class="main">
        <div class="left">left</div>
        <div class="middle">middle</div>
        <div class="right">right</div>
    </div>
    
  • 相关阅读:
    Java并发专题 带返回结果的批量任务执行
    angualejs
    Java并发编程:Callable、Future和FutureTask
    mybatis
    InitialContext和lookup
    git 常用使用命令
    junit spring 测试
    redis windows
    为何PS出的RSS总和大于实际物理内存
    32位机器的LowMemory
  • 原文地址:https://www.cnblogs.com/xiaoyucoding/p/12550764.html
Copyright © 2020-2023  润新知