水平居中与垂直居中

一、水平居中

1)如果是行内元素,需要在它的父元素上设置text-align: center;

2)如果是块元素,直接设置元素的css属性text-align: center;

或则可以定宽再加上margin:0 auto;

p{
           width: 300px;
          margin:0 auto;
        }
     p{margin:auto;}

二、垂直居中

垂直居中的时候情况会比较多,根据不同的情况分别有下列几种方法

1)表格布局法------不用知道需要居中的元素是什么东西

利用表格的vertical-align属性,当然首先将父元素的显示方式设置为表格:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">

.content,.content2{
border: 1px solid #1369C0;
height: 300px;
width: 300px;
margin:0 auto;
text-align: center;
display: table;

}
.content span,.content2 .wrap{
display: table-cell;
vertical-align: middle;
}


    </style>
</head>
<body>

<div class="content">
            <span>元素垂直居中</span>
      </div>
      <div class="content2">
            <div class="wrap"><img src="img/collection.png" /></div>
      </div>

</body>
</html>

对于图片,我们需要在它的外面加上一层包裹,否则它不会居中,而有的不需要,所以,为了方便或则统一,我们需要在要居中的元素外层再添加一层包裹,如上面的.wrap,好处是不用知道需要居中的元素是什么东西,比如上面的img标签,在css中未对其位置进行任何设置。

二、伪元素法

具体思路是给居中元素的包裹层加一个伪元素(:before或则:after),content为空,使其高度为包裹元素的100%,然后设置该元素和居中元素的dispaly属性为inline-block,同时vertical-align:middle。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>垂直居中</title>
<style type="text/css">
.content,.content2{
border: 1px solid #1369C0;
height: 300px;
width: 300px;
margin:0 auto;
text-align: center;
}
.content:before,.content2:before{
content: "";
height: 100%;
display: inline-block;
vertical-align: middle;
}
.content p{
display: inline-block;
}
</style>
</head>
<body>
<div class="content">
<p>元素垂直居中</p>
</div>
<div class="content2">
<img src="img/collection.png" />
</div>
<p>块元素水平居中</p>
</body>
</html>

3、基于绝对定位的方法--------需要知道先知道居中的元素是哪一个

    1)定宽、定高的元素(绝对定位+负的外边距)

实现原理:先把要居中的元素的左上角放在已定位祖先元素的正中心,然后再利用负外边距把它向左、向上移动(移动距离相当于自身宽高的一半),从而把元素的正中心放置在祖先元素的正中心。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>垂直居中</title>
<style type="text/css">
.content,.content2{
border: 1px solid #1369C0;
height: 300px;
width: 300px;
margin:0 auto;
text-align: center;
position: relative;
}
.ele{
position: absolute;
width: 100px;
height: 30px;
top: 50%;
left: 50%;
margin-left: -50px;
margin-top: -15px;
}
</style>
</head>
<body>
<div class="content">
<div class="ele">元素垂直居中</div>
</div>
<div class="content2">
<div class="ele">
<img src="img/collection.png" />
</div>
</div>
<p>块元素水平居中</p>
</body>
</html>

在设置CSS定位的时候也可以借助CSS3中强大的calc()函数

2)定宽、定高的元素(绝对定位+margin:auto)

实现原理:利用css定位规则,设置左右、上下方向定位为0,margin为auto,让css根据定位计算margin值,用hack的方式实现居中。居中块的尺寸需要固定.

代码和上面一样,改动.ele即可

.ele{
position: absolute;
width: 100px;
height: 30px;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
}

3) 绝对定位+transform反向偏移   (不需要定宽和定高)

使用这种方法对于居中元素宽高没有要求的原因是在translate()变形函数中使用百分比时,是以这个元素本身的宽度和高度为基准进行换算和移动的。

只需要将1)中得margin换掉即可。

.ele{
position: absolute;
top: 50%;
left: 50%;
transform: translate(50%);
}

4、Flex布局模型法

.content,.content2{

border: 1px solid #1369C0;
height: 300px;
width: 300px;
margin: auto;
display: flex;
align-items: center;
justify-content: center;
}

5、单行文本居中

设置height与line-height的值一样

6、多行文本居中

类似于上面的table法和flex法都可以。

时间: 2024-11-04 21:02:57

水平居中与垂直居中的相关文章

简单易实现的水平居中、垂直居中方法

在页面布局中,经常会面临垂直水平居中问题.网络上有很多方法,但是大多数情况下,我们找到合适的解决方法后,复制粘贴了事,并没有对各种方法的原理.利弊进行研究.本着"双鸟在林,不如一鸟在手"的宗旨,从各种方法中找出一种简单易懂的方法,让大家一目了然,以后再遇到也能立即想出来.1.水平居中:使div02在div01中水平居中.```<div id="div01"> <div id="div02"></div><

html中的水平居中和垂直居中的问题。(固定高度与高度不定)

在布局的过程中,我们要对某些元素进行居中定位,相信,大家对水平居中都没有问题,就是利用 margin:0 auto:以及文本居中 text-align:center. 下面我想给大家说的是关于整体居中(水平居中和垂直居中), 在这里,我首先告诉大家我利用了绝对定位的办法, 我现在先给大家制作一个框来直接的观察,如下 其中外框与内框分别是边长为300px和100px的正方形. 我们要把内框居中.(此时,内框高度是固定的) 1 当高度固定时. 一般我们会直接这样进行代码操作, position:ab

div水平居中和垂直居中

水平居中和垂直居中 水平居中包含两种情况:        块级元素的水平居中:margin:0px auto;        文字内容的水平居中:text-align: center;        垂直居中:        常见的单行文字的垂直居中可设置文字所在行的height与        行高样式属性一致,比如:        div{            width: 400px;            height: 400px;            line-height: 4

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

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

CSS3 FLEXBOX轻松实现元素的水平居中和垂直居中

1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title></title> 7 </head> 8 9 <body> 10 <!--1.清除输入框内的空格--> 11 <!--<input type="text" onBlur="replaceSpace

元素水平居中和垂直居中的几种简单方法

一.如何使元素在水平方向上居中 1. 使用text-align:center. 在父级元素的CSS样式设置text-align:center.把内部嵌套一个div把它当作文本来对待,不过这个方法有时候是不管用的. 2.在需要居中的元素设置margin:0 auto.     这句CSS的意思为:设置margin-left和margin-right为自动适应父级元素宽度.所以可以使元素水平居中,不过记得设置其width. 二.如何使元素在垂直方向上居中 1.使图片在垂直方向上居中. div{bac

CSS设置行内元素和块级元素的水平居中、垂直居中

CSS设置行内元素的水平居中 div{text-align:center} /*DIV内的行内元素均会水平居中*/ CSS设置行内元素的垂直居中 div{height:30px; line-height:30px} /*DIV内的行内元素均会垂直居中*/ PS:当然,如果既要水平居中又要垂直居中,那么综合一下 div{text-align:center; height:30px; line-height:30px} CSS设置块级元素的水平居中 div p{margin:0 auto; widt

水平居中与垂直居中,以及对齐

我以前一直都搞不清楚水平居中与垂直居中,更不用谈什么对齐,临时抱佛脚,也找不到很好的答案,于是把网上的代码研究了一番,总结一下经验: 盒子水平居中:margin:0 auto 注意:在IE8中使用margin:auto属性无法正常工作,除非声明 !DOCTYPE 如果宽度是100%,对齐是没有效果的,要给居中的元素一个宽度,否则无效. 加入margin:0 auto就不能加入float浮动样式,避免逻辑错误,造成布局居中不兼容. 行内元素水平居中:父元素设置text-align:center 单

宽度高度不固定的div如何水平居中与垂直居中(转)

宽度高度不固定的div如何水平居中与垂直居中 很多新手在写css的时候经常遇到的一个问题,当div没有固定的宽度或者高度的时候,如何才能让div水平或者垂直居中显示. 如果div有固定宽度的话,用padding,margin都很容易实现.方法有很多种.不过经常遇到这种div没有固定的宽度高度的情况,我们就不能用margin,padding设置固定的距离了.这个问题让很多人头疼.而怎么样才能让这个div居中显示呢?其实这种情况解决的办法也是有很多种,js,css都可以实现. 这里主要介绍一下采用c

CSS3 Flexbox轻巧实现元素的水平居中和垂直居中

CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技术,下面我就把这种布局叫Flex布局. 元素居中,相信作为前端工程师的你肯定会经常用到,不管是在水平方向居中,还是垂直方向居中,都可在你的职业生涯中徘徊.不过很多时候要实现垂直居中,还是比较麻烦的.不过你也不用担心,下面就给大家分享下通过Fl