百度前端技术学院是一个为大学生创办的免费的前端技术实践、分享、交流平台。由百度校园招聘组、百度校园品牌部、百度前端技术部以及多个百度的前端团队联合创办。学院组织了一批百度在职工程师,精心编写了数十个实践编码任务,将技术知识点系统有机地串联在各个充满趣味与挑战的任务中,同学们通过实际地编码练习来掌握知识,再辅以互相评价、学习笔记等方式,加深对于学习内容的理解。在过去的三年中,百度前端技术学院累积吸引了上万名同学参加,并且有数十名同学在学习后,顺利加入了百度,成为了百度的前端工程师。

怎样使元素居中显示(这是一篇中英文混搭的笔记_(:з」∠)_ )

作者杨苏蕊课程任务四:定位和居中问题2423次浏览112017-03-22 15:52

这篇笔记是根据小薇导师提供的参考资料完成的
附上原网址:https://css-tricks.com/centering-css-complete-guide/

1.水平居中

for inline, inline-block, inline-table, inline-flex……

(前提:该元素的父元素为块级元素)

element { 
    text-align: center; 
}

for block-level elements(前提:该元素的width值确定)

element { 
    margin: 0 auto;  
}

for 两个及以上的块级元素需要在一行中居中显示

parent element { 
    text-align: center; 
}
element { 
    display: inline-block; 
}

2 .垂直居中

(当该元素的父元素高度确定时)

for inline, inline-block, inline-table, inline-flex……

  • for 单行
    • 该元素的padding-top值=该元素的padding-bottom值
    • 该元素的line-height值=该元素的height值
  • for 多行
    • 该元素的padding-top值=该元素的padding-bottom值
    • display: table-cell(前提该元素的height值确定)
      parent element { display: table; }
      element { display: table-cell; vertical-align: middle; }
      
  • 使用flexbox(前提该元素的父元素height值确定

    parent element {  
      display: flex; 
      flex-direction: column; 
      justify-content: center;
    }
    
  • 在该元素的父元素前创建一个垂直校准元素

    parent element { position: relative; }
    parent element::before {
      content: " "; 
      height: 100%; 
      width: 1%; 
      display: inline-block; 
      vertical-align: middle; 
    }
    element { 
      display: inline-block; 
      vertical-align: middle; 
    }
    

for block-level element

该元素的height值确定

parent element { position: relative; }
element { 
    position: absolute; 
    top: 50%; 
    height: 100px; 
    margin-top: -50px; /* account for padding and border if not using box-sizing: border-box; */
}
  • 该元素的height值不确定

    parent element { 
      position: relative; 
    }
    element { 
      position: absolute;
      top: 50%; 
      transform: translateY(-50%); 
    }
    
  • 使用flexbox

    parent element {  
      display: flex; 
      flex-direction: column; 
      justify-content: center; 
    }
    

3 .水平垂直居中

该元素的width值、height值确定

  • 方法一
    parent element { 
      position: relative; 
    }
    element {
      width: 300px; 
      height: 100px; 
      padding: 20px;
      position: absolute; 
      top: 50%; 
      left: 50%; 
      margin: -70px 0 0 -170px;  /* account for padding and border if not using box-sizing: border-box; */
    }
    

    margin值的计算方法

    margin-top = -( height/2 + padding-top+ border-top-width )
    margin-right = 0
    margin-bottom = 0
    margin-left = -( width/2+ padding-left + border-left-width )

  • 方法二
    element {
      position: absolute; 
      top: 0; right: 0; 
      bottom: 0; 
      left: 0; 
      margin: auto;
    }
    

该元素的width值、height值不确定

parent element { 
    position: relative; 
}
element { 
    position: absolute; 
    top: 50%; 
    left: 50%;
    transform: translate(-50%, -50%); 
}

使用flexbox

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

如有不足之处,还望指正,笔芯(╭ ̄3 ̄)╭♡

0条评论