• css居中总结


    水平居中

    1. inline和inline-*元素水平居中:text-align:center

    2. block元素水平居中

    block定宽:margin-left: auto; margin-right; auto;

    block不定宽:

    a. 转为inline-block元素,使用text-align: center
    b. 使用display:table模拟table,同时设置左右margin:auto即可

    3. fit-content和margin auto居中(可实现容器宽度随内容增多而自动增大)

    .box{
      width: -moz-fit-content;
      width: -webkit-fit-content;
      width:fit-content;
      margin:0 auto;
    }

    4. 左右拉伸和margin auto居中(定宽度的absolute元素水平居中)

    .box{
      position:absolute;
      left:0;
      right:0;
      margin:0 auto;
       width: 300px;  
    }

    垂直居中

    1. 父元素高度不定

    (inline,inlie-*,block)垂直居中: 父元素上下内边距相等 padding-top = padding-bottom

    替换元素(img,input,textarea,object,video,audio,canvas等):object-position: center

    2. 父元素高度确定

    inline和inline-*竖直居中

    单行文本竖直居中: line-height与父元素高度相同

    多行文本等其他竖直居中: (模拟td)display:table-cell;vertical-align:middle;

    block竖直居中:

    a. block定高: position: absolute; top: 50%; margin-top: -height/2
    b. block不定高:

    <1. (模拟td)display:table-cell;vertical-align:middle;
    <2. (模拟table) 父容器display:table, 子容器display:table-cell

    .parent {display: table;}
    
    .child {
        display: table-cell;
        vertical-align: middle;
    }

    <3. transform方法:position: releative或者absolute; top: 50%; transform: translateY(-50%)

    3. 上下拉伸和margin auto居中(定高度的absolute元素垂直居中)

    .box{
      position:absolute;
      top:0;
      bottom:0;
      margin:auto 0;
       height: 300px;
    }

    4. 伪元素撑开对齐

    .parent{
      font-size:0;//消除inline-block水平空隙
    }
    .son,.parent:after{
      display:inline-block;
      vertical-align:middle;
      font-size:24px;//修正字体
    }
    .parent:after{
      content:'';
      height:100%;
    }

    5. writing-mode配合text-align或margin:0 auto实现垂直居中

    .verticle-mode {
        writing-mode: tb-lr;
        writing-mode: vertical-lr;
        -webkit-writing-mode: vertical-rl;
    }
    .horizontal-mode{
        writing-mode: lr-tb;
        writing-mode: horizontal-tb;
        -webkit-writing-mode: horizontal-rl;
    }
    <div class="item">
         <span class="item-left">1. </span>
         <span class="item-right">标题</span>
    </div>
    .item{
         height:60px;background-color:lightcoral;border-radius: 8px;padding:5px 10px;line-height: 30px;
         writing-mode: tb-lr;
         -webkit-writing-mode: vertical-lr;      
         writing-mode: vertical-lr;
         text-align: center;
    }
    .item *{
         writing-mode: lr-tb;
         writing-mode: horizontal-tb;     
    }

    6. relative垂直居中

    元素relative,top: 50%, margin-top: -height/2,或者 transform: translateY(-50%),可垂直居中,

    水平垂直居中

    1. absolute元素水平居中(缺点:元素中内容很长,会导致超出内容不可见)

    .center_middle{
      position:absolute;
      left:0;
      top:0;
      right:0;
      bottom:0;
      margin:auto;
       width: 800px;
       height: 600px;
    }

    2. flex

    flex正统

    .parent {
        display: flex;
        align-items: center;
        justify-content: center;
    }

    flex + margin:auto

    .parent {
        display: flex;
        margin: 0;
        >.child {
            margin: auto;
        }
    }    

  • 相关阅读:
    高精度入门(减法、加法、乘法)之 CODE[VS] 3115、3116、3117
    DP经典 之 CODE[VS] 1576 最长严格上升子序列 (O(n^2) 和 O(nlogn))
    CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)
    C++ string 与 int 等类型 的相互转换
    组合数学 + 大数乘法 + 大数除法 之 hdu 1261 字串数
    自然语言理解 之 统计词频
    Leetcode_10【正则表达式匹配】
    01——字符串反转
    Leetcode_09【回文数】
    Leetcode_07【整数反转】
  • 原文地址:https://www.cnblogs.com/mengff/p/4682127.html
Copyright © 2020-2023  润新知