CSS水平垂直居中方法总结

部分HTML代码如下:

<div class="wrap block">
     <div class="block-center">块儿居中</div>
</div>         

<div class="wrap inline">
    <span class="inline-center">内联居中</span>
</div> 

一、absolute

  • 拔河效应(元素宽高需设定)

    .block{
        position: relative;
    }  
    
    .block-center{
        position: absolute;
        margin: auto; /*这句要写,否则无效果*/
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
    } 
  • 利用margin(元素宽高需设定)

    .block{
        position: relative;
    }
    
    .block-center{
        position: absolute;
        top: 50%;
        margin-top: -10px; /*元素高度一半*/
        left: 50%;
        margin-left: -50px; /*元素宽度一半*/
    } 
  • 利用CSS3 translate

    .block{
        position: relative;
    }
    
    .block-center{
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);
    }

二、table

  • table-cell
  1. inline 元素

    <div class="table-cell">
        <span>我是文字</span>
    </div>
    .table-cell{ /*注意:table-cell不感知margin, 在父元素上设置table-row等属性,也会使其不感知height*/
        display: table-cell;
        vertical-align: middle;
        text-align: center;
    }
  2. block 元素

    <div class="table-cell">
        <div class="block">我是块元素</div>
    </div>
    .table-cell{
        display: table-cell;
        vertical-align: middle;
        text-align: center;
    }
    .table-cell .block{
        display: block;
        height: 20px;
        width: 20px;
        margin-left: calc(50% - 10px); /*calc()函数内部的 - 和 + 运算符两侧各加一个空白符,否则会产生解析错误*/
    }

三、块元素自带方法

  • 利用 line-height(子元素是linline / inline-block)

    .inline{
        text-align: center;
        height: 80px;
        line-height: 80px; /*行高等于元素高度,line-height不可设置为100%,其百分比值是相对于父元素字体大小计算的*/
    }
  • 利用 CSS calc() 函数(子元素是 block)

    .block{
        width: 200px;
        height: 200px;
    }
    
    .block-center{
        width: 50px;
        height: 50px;
        margin: calc(50% - 25px); /*由于margin的百分比值是相对于父元素的宽高进行计算的,故此方法只适用于宽高相等的父容器*/
    }

四、flex

  1. 块元素和浮动元素

    .block{
        display: flex;
        min-height: 50vh;
    }
    .block-center{
        margin: auto;
    }  
  2. 行内元素(给外层父元素添加即可)

    .inline{
        display: flex;
        min-height: 50vh;
        align-items: center;
        justify-content: center;
    }

五、grid

<div class="wrap grid">
    <div class="block">grid</div>
</div>
.grid{
    display: grid;
    width: 200px;
    height: 150px;
}

.grid .block{
    width: 50px;
    height: 50px;
    align-self: center;
    justify-self: center;
}

对于 grid 的介绍和学习,推荐一篇blog:grid栅格布局

相关推荐:

本篇博客基于几种常用的垂直居中方法进行了总结,不全的地方欢迎大家评论补充。

  

原文地址:https://www.cnblogs.com/Kuro-P/p/8479476.html

时间: 2024-12-27 15:11:37

CSS水平垂直居中方法总结的相关文章

《转》CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)

转自大地Dudy的CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳) 本文主要是对主流居中方法进行了归纳,有些地方甚至就是把别人的代码直接复制过来的,没有什么自己的东西,除了大漠以及张鑫旭的方法外,还有来自司徒正美.怿飞博客的几个方法 以下方法,由于测试环境的原因,IE系列只测试了IE9和IE6,以下所说的IE的支持性只是相对于IE9和IE6来说的: 一.元素的水平垂直居中: 第一种方法: <!doctype html> <html lang="en&

CSS水平垂直居中的几种方法

直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; border: 1px solid #465468; } img{ position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } HTML代码: <div> <img src="mm.jpg&quo

CSS水平垂直居中的几种方法2

直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; border: 1px solid #465468; } img{ position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } HTML代码: <div> <img src="mm.jpg&quo

介绍一种css水平垂直居中的方法(非常好用!)

这次介绍一下一个水平垂直居中的css方法,这个方法可以说是百试百灵,废话不多说,直接附上代码: html,body{ width:100%; height:100%; } 你需要居中的元素{ position: fixed;(absolute)      left:50%;      top:50%;      -webkit-transform: translate(-50%,-50%); } 他的父元素{ position: relative; width:100%; height:100%

CSS元素水平垂直居中方法总结(方法主要来自大漠以及张鑫旭博客)

以下方法,由于测试环境的原因,IE系列只测试了IE9和IE6,以下所说IE的支持性只是相对于IE9和IE6来说的: 一.元素的水平垂直居中: 第一种方法:<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"&g

CSS元素(文本、图片)水平垂直居中方法

1.text-align:center; 2.margin:0 auto; 3.display:inline-block; + text-align:center; 4.position:relative; + float:left; 5.line-height 6.上下左右padding 7.position:absolute; + margin:auto; 8.position:absolute; + 负margin 9.position:absolute; + calc() 10.tabl

CSS水平垂直居中常见方法总结(转)

行内元素: 父级元素是块级元素:父元素设置text-align:center 1.元素水平居中 margin: 0 auto;谁居中,谁设置 居中不好使的原因: 1.元素没有设置宽度,没有宽度怎么居中嘛! 2.设置了宽度依然不好使,你设置的是行内元素吧 实例1: <div class="box"> <div class="content"> 哇!居中了 </div> </div> <style type=&quo

常见的几种 CSS 水平垂直居中解决办法

用CSS实现元素的水平居中,比较简单,可以设置text-align center,或者设置 margin-left:auto; margin-right:auto 之类的即可. 主要麻烦的地方还是在垂直居中的处理上,所以接下来主要考虑垂直方向上的居中实现. 水平垂直居中主要包括三类:基本文本类,图像类,其他元素类 但,也是由一些方法可以实现的,下面就来谈谈了解到的10中方法. 方法一.使用 line-height 这种方式更多地用在 单行文字的情况,其中使用overflow:hidden的设置是

水平垂直居中方法总结

工作中经常用到水平垂直居中的方法,尤其是垂直居中,其中有非常多的学问,一直疏于总结,今天儿周末,来review一下: HTML结构: <div class="container"> <div class="content"></div> </div> .container{ background-color: #4EA46A; height: 200px; width:80%; } .content{ height:1