CSS实现垂直居中水平居中

1、绝对定位居中(子元素需设置宽高)

  • > 原理:元素在过度受限情况下,将margin设置为auto,浏览器会重算margin的值,过度受限指的是同时设置top/bottom与height或者left/right与width。

内容块的父容器:

position:relative;

子元素: (必须设置高度)

position: absolute;top: 0;left: 0;bottom: 0;right: 0;margin:auto;

2、绝对定位配合margin(子元素需设置宽高)

  • > 原理:top:50%元素上边界位于包含框中点,设置负外边界使得元素垂直中心与包含框中心重合;

第一种

<style>
  .one{
    border: 1px solid red;
    width: 200px;height: 200px;
    position: relative;
  }
  .two{
    background: red;
    width: 100px;height: 100px
    position: absolute;left: 50%;top:50%;
    margin: -50px 0 0 -50px;   //(margin设置百分比是相当于自身的高度与宽度)  }</style> <div class="one">  <div class="two"></div> </div>

第二种

<style>
    .one{
      border: 1px solid red;
      width: 300px;height: 300px;
      position: relative;
    }
    .two{
        position:absolute;
        top:50%;
        left:0;
        right:0;
        margin:auto;
        margin-top:-100px; //(margin设置百分比是相当于自身的高度与宽度)
        width:200px;
        height:200px;
        background: red;
    }
</style>
<div class="one">
    <div class="two"></div>
</div>                    

3、table-cell方式(子元素不需设置宽高)

  • > 原理:利用表格布局的特点,vertical-align设置为middle;单元格中的内容与所在行中间对齐

父容器:(设置宽高)

display:table-cell;text-align:center;vertical-align:middle;

子元素:

display:inline-block;vertical-align:middle;
<style>
    .one{
        border: 1px solid red;
        width: 200px;height: 200px;
        display:table-cell;vertical-align:middle;text-align: center;
    }
    .two{
        background: red;
        (1)display:inline-block;(用此方法向上偏差2px)
        (2)margin:auto(垂直水平居中)
    }
</style>
<div class="one">
    <div class="two">11111111111</div>
</div>

4、通过添加空span标签使图片居中(子元素需设置宽高)
父容器:

text-align: center;

<span>:

display: inline-block;  //将行内元素改变为行内块元素显示
width: //1px; 实现IE下可读效果
height: 100%; //使用元素高度和图片容器高度一样
vertical-align: middle; //垂直对齐

图片:

vertical-align: middle;
<style>
    .one{
        border: 1px solid red;
        width: 200px;height: 200px;
        text-align: center;
    }
    span{
        display: inline-block;
        width: 1px;
        height: 100%;
    vertical-align: middle;
    }
</style>
<div class="one">
    <span></span>
    <img src="../img/jian.png" >
</div>

5、外边距margin取负数,大小为width/height(不使用box-sizing: border-box时包括padding,)的一半,再加上top: 50%; left: 50%;。
(子元素需设置宽高)

<style>
    .one{
        border: 1px solid red;
        width: 200px;height: 200px;
        position: relative;
    }
    .two{
        background: red;
        width: 30px;
        height: 20px;
        padding: 20px;
        position: absolute;
        top: 50%; left: 50%;
        margin-left: -35px; /* (width + padding)/2 */
        margin-top: -30px; /* (height + padding)/2 */
    }
</style>
<div class="one">
    <div class="two"></div>
</div>    

6、内容定义transform:translate(-50%,-50%),并且加上top:50%;left:50%。(子元素需设置宽高)

<style>
    .one{
        border: 1px solid red;
        width: 200px;height: 200px;
        position: relative;
    }
    .two{
        background: red;
        width: 50%;
        height: 30%;
        margin: auto;
        position: absolute;
        top: 50%; left: 50%;
        -webkit-transform: translate(-50%,-50%);
        -ms-transform: translate(-50%,-50%);
        transform: translate(-50%,-50%);
    }
</style>
<div class="one">
    <div class="two"></div>
</div>

7、增加额外子元素设置margin-bottom为内容元素的高度+padding的一半。(不能实现水平垂直居中,仅垂直居中)

  • > 原理与2方法类似,floater的下边界是包含框的中心线,负下外边界保证center的中心线与包含框中心线重合
<style>
    .one{
        border: 1px solid red;
        width: 200px;height: 200px;
    }
    .floater{
        float: left;
        height: 50%;
        width: 100%;
        margin-bottom: -10%;
    }
    .two{
        clear: both;
        height: 20%;
        background: red;
    }
</style>
<div class="one">
    <div class="floater"></div>
    <div class="two"></div>
</div>

8、inline-block方式(子元素不需设置宽高)

  • > 原理:为同一行的inline-block元素设置vertical-align:middle,该行内的inline-block元素会按照元素的垂直中心线对齐。
<style>
    .one{
        border: 1px solid red;
        width: 300px;height: 300px;
        text-align: center;
    }
    .one:after{
        content: ‘‘;
        display: inline-block;
        vertical-align: middle;
        height: 100%;
    }
    .two{
        background: red;
        display:inline-block;
        vertical-align:middle;
    }
</style>
<div class="one">
    <div class="two">11111111111111111111</div>
</div>

9、弹性盒式布局(子元素不需设置宽高)
[CSS弹性盒][1]
第一种

<style>
    .one{
        border: 1px solid red;
        width: 300px;height: 300px;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .two{
        background: red;
    }
</style>
<div class="one">
    <div class="two">111111111111</div>
</div>    

第二种

<style>
    .one{
        border: 1px solid red;
        width: 300px;height: 300px;
        display: flex;
    }
    .two{
        background: red;
        margin:auto;
    }
</style>
<div class="one">
    <div class="two">111111111111</div>
</div>
时间: 2025-01-14 14:09:37

CSS实现垂直居中水平居中的相关文章

盘点8种CSS实现垂直居中水平居中的绝对定位居中技术

1.绝对定位居中(Absolute Centering)技术 我们经常用margin:0 auto;来实现水平居中,而一直认为margin:auto;不能实现垂直居中......实际上,实现垂直居中仅需要声明元素高度和下面的CSS: .Absolute-Center { margin : auto ; position : absolute ; left : 0 ; right : 0 ; top : 0; bottom: 0; } 优点: 1.支持跨浏览器,包括IE8-IE10: 2.无需其他

[link]盘点8种CSS实现垂直居中水平居中的绝对定位居中技术

翻译:http://blog.csdn.net/freshlover/article/details/11579669 原文:http://coding.smashingmagazine.com/2013/08/09/absolute-horizontal-vertical-centering-css/

css图片居中(水平居中和垂直居中)

http://www.51xuediannao.com/html+css/htmlcssjq/css_img_center.html css图片居中分css图片水平居中和垂直居中两种情况,有时候还需要图片同时水平垂直居中,下面分几种居中情况分别介绍 css图片居中分css图片水平居中和垂直居中两种情况,有时候还需要图片同时水平垂直居中,下面分几种居中情况分别介绍. css图片水平居中 利用margin: 0 auto实现图片水平居中 利用margin: 0 auto实现图片居中就是在图片上加上c

CSS实现DIV水平居中和上下垂直居中

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>上下垂直居中 在线演示 DIVCSS5</title> <style> #main { position: absolute; width:400px; height:200px; left:50%; top:50%; margin-left:-200px; margin-top:

css确定元素水平居中和垂直居中

---恢复内容开始--- 首先,我们在了解如何通过css了解元素水平和垂直居中之前,先要了解下html都有哪些元素,这些元素与偶有哪些分类,因为不同类别的元素的水平垂直居中方法是完全不同的,究其根本当然是因为不同类别元素的性质不同.所以我们先来了解下html的元素类别. 一.HTML元素分类 1)内联(inline)元素: <a>--锚点 <abbr>--缩写 <acronym>--首字母缩写(HTML5不支持,请使用<abbr>代替) <b>-

CSS中实现水平居中和垂直居中的方法

水平居中 1.使用text-align实现居中 将该属性值设置为center,这是文本居中,但它却能兼容大多数浏览器,所以在某些情况下也自然必不可少. 2.负外边距 首先,创建一个包含居中元素的容器,然后将其绝对定位于相对页面左边边缘50%的位置.这样,该容器的左外边距将从页面50%宽度的位置开始算起.然后,将容器的左外边距值设置为负的容器宽度的一半.这样即可将该容器固定在页面水平方向的中点. 3.组合使用自动外边据和文本对齐 因为文本对齐居中方式有着良好的向下兼容性,且自动外边距方式也被大多数

CSS实现垂直居中的5种方法

利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 使用 CSS 实现垂直居中并不容易.有些方法在一些浏览器中无效.下面我们看一下使对象垂直集中的5种不同方法,以及它们各自的优缺点.(可以看看测试页面,有简短解释.) 方法一: 这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性. <div id="wrapper"&g

CSS垂直和水平居中

在css中,居中使用十分频繁. 居中分为水平和垂直居中 水平居中十分简单: body{ background:#f90; } body统一为这个颜色 div { margin:0 auto; background:green; width:10em; text-align:center; } <div> hello world </div> 注意width是必须设定的,否则如果是块级元素(div)则会占用一行,没有什么居中可言,如果是行内元素(span)则会不起作用,也无居中可言

CSS实现垂直居中的常用方法

在前端开发过程中,盒子居中是常常用到的.其中 ,居中又可以分为水平居中和垂直居中.水平居中是比较容易的,直接设置元素的margin: 0 auto就可以实现.但是垂直居中相对来说是比较复杂一些的.下面我们一起来讨论一下实现垂直居中的方法. 首先,定义一个需要垂直居中的div元素,他的宽度和高度均为300px,背景色为橙色.代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q