CSS垂直居中的几种方式 ----- 小白变色记

在学习了这么久,整理了常接触的一些垂直方法:

div垂直居中

场景设定:让一个50px*50px的div在一个200px*200px的div中垂直居中。如下图所示:

CSS垂直居中的几种方式 ----- 小白变色记

 

 

左边代码

<style>

   #div1 {

     width: 200px;

     heigth: 200px;

     border: 1px solid red;

   }

  #div2 {

    width: 50px;

    heigth:50px;

    background-color: #aqur;

  }

</style>

<body>

   <div id=’div1’>

       <div id=’div2’></div>

   </div>

</body>

 

方法一:绝对定位

<style>

   #div1 {

     width: 200px;

     heigth: 200px;

     border: 1px solid red;

     position: relative;

   }

  #div2 {

    width: 50px;

    heigth:50px;

    background-color: #aqur;

    position: absolute;

    margin: auto;

    left: 0;

    rigth: 0;

    top: 0;

    bottom: 0;

   }

</style>

<body>

   <div id=’div1’>

       <div id=’div2’></div>

   </div>

</body>

 

知识拓展:position定位  --- > 规定元素的定位类型

说明:这个属性定义建立元素布局所用的定位机制。如何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。

值:

absolute : 生成绝对定位元素,相对于static定位以外的第一个父级元素定位。

元素的位置通过‘left’‘top’‘right’‘bottom’属性进行规定。

 

fixed :生成绝对定位元素,相对于浏览器窗口进行定位。

元素的位置通过‘left’‘top’‘right’‘bottom’属性进行规定。

 

relative:生成相对定位元素,相对于其正常位置进行定位。

因此,‘left:20px’会向元素的left位置添加20px。

 

static:默认值。没有定位,元素出现在正常的流中。

 

inherit:规定应该从父元素继承position属性的值。

 

方法二:设置外边距

<style>

   #div1 {

     width: 200px;

     heigth: 200px;

     border: 1px solid red;

   }

  #div2 {

    width: 50px;

    heigth:50px;

    background-color: #aqur;

    position: relative;

    top: 50%;

    left: 50%;

    margin: -25px 0 0 -25px;   // 25px为width的一半;(外边距为自身宽高的一半)。

   }

</style>

<body>

   <div id=’div1’>

       <div id=’div2’></div>

   </div>

</body>

 

如果未知容器的宽高,利用transform属性,代码如下:

#div2 {

    width: 50px;

    heigth:50px;

    background-color: #aqur;

    position: relative;

    top: 50%;

    left: 50%;

    transform: translate(-50%,-50%);   // 向左上角移动自身宽高的一半。

   }

 

知识点:transform属性(CSS3) ---- > 元素的2D或3D的转换

说明:该属性允许我们对元素进行旋转、缩放、移动或倾斜。

其不同的值会单独做一个整理。

 

方法三:通过设置容器的flexbox居中方式

<style>

   #div1 {

     width: 200px;

     heigth: 200px;

     border: 1px solid red;

     display: flex;

     align-items: center;   /*垂直居中*/

     justify-content: center;  /*水平居中*/

   }

  #div2 {

    width: 50px;

    heigth:50px;

    background-color: #aqur;

   }

</style>

<body>

   <div id=’div1’>

       <div id=’div2’></div>

   </div>

</body>

 

知识点:flex布局

背景:网页布局是CSS的一个重点应用。布局的传统解决方案,基于盒状模型,依赖display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。

2009年,W3C提出了一种新的方案---Flex布局,可以简便,完整,响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全的使用这项功能。

Flex布局是什么?

Flex是Flexible Box 的缩写,意为‘弹性布局’,用来为盒状模型提供最大的灵活性。

任何元素都可以指定为flex布局。行内元素也可以使用flex布局。

注意,设为flex布局以后,子元素的float、clear和vertical-align属性会失效。

CSS垂直居中的几种方式 ----- 小白变色记

 

具体详细的将会在下次做整理。

 

文字垂直居中

场景设定:让一个文本内容元素在一个200px*200px的div中垂直居中。

CSS垂直居中的几种方式 ----- 小白变色记

                   

左边代码

<style>

   #div1 {

     width: 200px;

     heigth: 200px;

     border: 1px solid red;

   }

</style>

<body>

   <div id=’div1’>

       <span>张世平</span>

   </div>

</body>

 

方法一:line-heigth

CSS垂直居中的几种方式 ----- 小白变色记