• 垂直居中总结


      

    单个块级元素垂直居中

    <div id="parent">

       <div id="son"></div>

    </div>

    #parent{

       display: table-cell;

       vertical-align: middle;

    }

    设置tabl-cell的元素,宽度和高度的值设置百分比无效,需要给它的父元素设置display: table; 才生效;table-cell不感知margin,在父元素上设置table-row等属性,也会使其不感知height;设置float或position会对默认布局造成破坏,可以考虑为之增加一个父div定义float等属性;内容溢出时会自动撑开父元素
    #parent{
        height: 150px;
        position: relative;  /*父相*/
    }
    #son{
        position: absolute;  /*子绝*/
        top: 50%;  /*父元素高度一半,这里等同于top:75px;*/
        transform: translateY(-50%);  /*自身高度一半,这里等同于margin-top:-25px;*/
        height: 50px;
    }
    
    /*优缺点
    - 优点:使用margin-top兼容性好;不管是块级还是行内元素都可以实现
    - 缺点:代码较多;脱离文档流;使用margin-top需要知道高度值;使用transform兼容性不好(ie9+)*/
    
    或
    
    /*原理:当top、bottom为0时,margin-top&bottom会无限延伸占满空间并且平分*/
    #parent{position: relative;}
    #son{
        position: absolute;
        margin: auto 0;
        top: 0;
        bottom: 0;
        height: 50px;
    }
    
    /*优缺点
    - 优点:简单;兼容性较好(ie8+)
    - 缺点:脱离文档流*/
    
    作者:sweet_KK
    链接:https://juejin.im/post/5aa252ac518825558001d5de
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

      水平垂直居中分各种元素不同方法;

    #parent{
        height: 150px;
        line-height: 150px;  /*行高的值与height相等*/
        text-align: center;
        font-size: 0;   /*消除幽灵空白节点的bug*/
    }
    #son{
        /*display: inline-block;*/  /*如果是块级元素需改为行内或行内块级才生效*/
        vertical-align: middle;
    }
    
    作者:sweet_KK
    链接:https://juejin.im/post/5aa252ac518825558001d5de
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

      定位

    #parent{
        position: relative;
    }
    #son{
        position: absolute;
        top: 50%;
        left: 50%;
        /*定宽高时等同于margin-left:负自身宽度一半;margin-top:负自身高度一半;*/
        transform: translate(-50%,-50%); 
    }
    
    作者:sweet_KK
    链接:https://juejin.im/post/5aa252ac518825558001d5de
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

      绝对居中

    #parent{
        position: relative;
    }
    #son{
        position: absolute;
        margin: auto;
         100px;
        height: 50px;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
    }
    • 优点:无需关注宽高;兼容性较好(ie8+)
    • 缺点:代码较多;脱离文档流

      

    布局相关:

    利用flex布局实现左侧固定右侧自适应的布局

    <body>
    <div id="parent">
        <div id="left">左列定宽</div>
        <div id="right">右列自适应</div>
    </div>
    </body>
    

      

    #parent{
         100%;
        height: 500px;
        display: flex;
    }
    #left {
         100px;
        background-color: #f00;
    }
    #right {
        flex: 1; /*均分了父元素剩余空间*/
        background-color: #0f0;
    }
    

      

    2绝对定位实现

    #parent{
        position: relative;  /*子绝父相*/
    }
    #left {
        position: absolute;
        top: 0;
        left: 0;
        background-color: #f00;
         100px;
        height: 500px;
    }
    #right {
        position: absolute;
        top: 0;
        left: 100px;  /*值大于等于#left的宽度*/
        right: 0;
        background-color: #0f0;
        height: 500px;
    }
    

      

    三列布局

    两列定宽一列自适应

    优先考虑flex布局

    <body>
    <div id="parent">
        <div id="left">左列定宽</div>
        <div id="center">中间定宽</div>
        <div id="right">右列自适应</div>
    </div>
    </body>
    

      

    #parent {
        height: 500px;
        display: flex;
    }
    #left {
        margin-right: 10px;  /*间距*/
         100px;
        background-color: #f00;
    }
    #center {
        margin-right: 10px;  /*间距*/
         200px;
        background-color: #eeff2b;
    }
    #right {
        flex: 1;  /*均分#parent剩余的部分达到自适应*/
        background-color: #0f0;
    }
    

      

    双飞翼布局:左右两侧定宽中间自适应

    <!--中间栏需要放在前面-->
    <div id="parent">
        <div id="center">
            <div id="center_inbox">中间自适应</div>
            <hr>  <!--方便观察原理-->
        </div>
        <div id="left">左列定宽</div>
        <div id="right">右列定宽</div>
    </div>
    

      

    #parent {
        height: 500px;
        display: flex;
    }
    #left {
         100px;
        background-color: #f00;
    }
    #center {
        flex: 1;  /*均分#parent剩余的部分*/
        background-color: #eeff2b;
    }
    #right {
         200px;
        background-color: #0f0;
    }
    

      

    #parent {
        position: relative; /*子绝父相*/
    }
    #left {
        position: absolute;
        top: 0;
        left: 0;
         100px;
        height: 500px;
        background-color: #f00;
    }
    #center {
        height: 500px;
        margin-left: 100px; /*大于等于#left的宽度,或者给#parent添加同样大小的padding-left*/
        margin-right: 200px;  /*大于等于#right的宽度,或者给#parent添加同样大小的padding-right*/
        background-color: #eeff2b;
    }
    #right {
        position: absolute;
        top: 0;
        right: 0;
         200px;
        height: 500px;
        background-color: #0f0;
    }
    

      

  • 相关阅读:
    java 装饰者模式与继承的区别
    Java学习笔记-多线程-创建线程的方式
    java IO流复制图片
    如何解决代码重复问题
    jdbc的基本应用
    java多线程
    java中的集合和数组
    Collections的应用
    Map集合的应用及其遍历方式
    qweb
  • 原文地址:https://www.cnblogs.com/qqfontofweb/p/8581257.html
Copyright © 2020-2023  润新知