zoukankan      html  css  js  c++  java
  • 两栏布局、三栏布局、水平垂直居中(良心整理,欢迎交流)

    两栏布局:

    1、float+margin

    .block_left{
                float: left;
                width: 200px;  //左边定宽
                background-color: blue;
    }
    .block_right{           //右边自适应
                background-color: red;
                margin-left:200px;
    }        

    2、定位

    .content{
                position: relative;
                width: 100%;
            }     
    .block_left{
                position: absolute;
                width: 200px;
                background-color: blue;
    }
    .block_right{
                position: absolute;
                left: 200px;
                right: 0;
                background-color: red;   
    }

    3、弹性布局

    *{
                margin: 0;
                padding: 0;
            /*这是设置默认的内外边距。因为浏览器标签自带的属性是不统一的,设置为0。为了兼容所有的浏览器!*/
    }
    .flex-container{
                width: 100%;
                height: 300px;
                display: flex;
    }
    .block_left{
                background-color: blue;
                width: 20%;      //这个可以对其进行控制,左右占比
                flex:1 0 auto;   //设置其可扩展,不可压缩,且大小自适应
    }
    .block_right{
                background-color: red;
                width: 80%;
                flex:1 0 auto;
    }

    三栏布局:

    1、float:left和float:right

    优点:简单    缺点:中间部分最后加载,用户体验感不好

    <style>
    .left{ background-color: red; float: left; 100px; } .right{ background-color: red; 100px; float: right;
    } .content{ background-color: green; margin-right: 100px; margin-left: 95px; }
    </style> <body> <!-- 必须要把类为content的div元素放在浮动元素之后,因为浮动元素不可以高于任何在源文档(html代码)之前的块元素或浮动元素,所以如果按照左中右的顺序摆放的话会出现以下情况-->

    <div id="container"></div> <div class="left">1</div> <div class="right">3</div> <div class="content">2</div> </body>

    2、BFC:即:在第一种方法的基础上,给content部分加上overflow:hidden来使其形成BFC,利用BFC不会与浮动元素重叠的规则

    3、圣杯布局

    <style>
            *{
                padding: 0;
                margin: 0;
            }
            #container{
                /* 让左右两栏占据container左右两边的填充 */
                padding-left:100px;
                padding-right: 100px; 
                background-color: blue;
            }
            .left{
                background-color: red;
                float: left;
                position:relative;
                width: 100px;
                height: 100px;
                /* 这个100%是content部分相当于container的,就是指左列要越过中间列的宽度,跑到它前面去 */
                /* 浮动元素的margin值是相当于上一个相邻的浮动元素来计算的 */
                margin-left:-100%;   
                left:-100px;
            }
            .right{
                background-color: red;
                width: 100px;
                height: 100px;
                float: left;
                position:relative;
                /* 此处的margin-left是相对于其相邻元素left的 */
                margin-left: -100px;
                right: -100px;
            }
            .content{
                float: left;
                background-color:yellow;
                width:100%;
                height: 100px;
            }
        </style>
    </head>
    <body>
        <!-- content部分先渲染 -->
    <div id="container">
        <div class="content">2aaasadsfdff</div>
        <div class="left">1</div>
        <div class="right">3</div>
    </div>  

    4、双飞翼布局

    步骤几乎与圣杯布局一致,只是在中间部分多加了一层,通过对其设置margin值来消除遮挡

    5、弹性布局

    #container{
          display:flex;
    }
    .left{
          background-color: red;
           100px;
          height: 100px;
          flex:0 1 auto;
          order:-1;  //渲染是首先渲染content部分,但是布局是要将left模块放到左边,order默认为0,所以设置其为-1,就可以位置领先于其它元素
    }
    .right{ background-color: red; 100px; height: 100px; flex:0 1 auto; } .content{ background-color:yellow; flex:1 0 auto; height: 100px; }
    </style> <body> <!-- content部分先渲染 --> <div id="container"> <div class="content">2aaasadsfdff</div> <div class="left">1</div> <div class="right">3</div> </div>

    6、绝对定位:很简单,通过对三块区域设置绝对定位,然后通过left/right值来进行定位,就可以实现三栏布局

    .left{
          background-color: red;
          width: 100px;
          height: 100px;
          position:absolute;
          left:0;
    } .right{ background-color: red; width: 100px; height: 100px; position: absolute; right: 0; } .content{ background-color:yellow; position: absolute; height: 100px; left:100px; right: 100px; }

    水平垂直居中:

    一、文字水平垂直居中

    1、单行文字:

    text-align:center/*水平居中*/

    line-height20px/*行距设为与div高度一致*/
    将行距设为和div一致,即使得每段文字都具有和div一样的高度,即:让文字利用整个div空间,有点像margin:auto
    2、多行文字
    text-align:center;
    display:table-cell;vertical-align:middle;

     还可以用弹性布局 : display:flex;justify-content:center;align-item:center

    二、块状水平垂直居中:

    方法1:对块元素绝对定位,然后将其位置通过margin-left和margin-top负值各拉回自身的一半

    方法2:利用margin:auto

    方法3:通过弹性盒(一定要保证父级元素有高度)

  • 相关阅读:
    S2-052 RCE漏洞 初步分析
    Struts S2-048 RCE漏洞分析
    CSP-S2019游记
    委托学习笔记1:委托的基本使用
    jQuery无刷新上传学习心得
    Nuget-自定义模板的创建与使用
    DotNetCore笔记-nginx代理访问swagger
    SQLServer中Partition By 函数的使用
    IE11 Windows7下F12 DOC资源管理器不能用Exception in window.onload: Error: An error has ocurredJSPlugin.3005
    Angular-ui-router入门
  • 原文地址:https://www.cnblogs.com/GinaHan/p/11628504.html
Copyright © 2011-2022 走看看