CSS中的居中:完全指导

水平居中:Horizontally

1.行内元素

text-align : center;

2.单个块级元素

你可以设置一个块级元素居中,如果你已经设置了这个块元素的宽度(width)的话,设置其margin-left和margin-right为auto就可以。如果你没有设width,块级元素通常会占满其父元素显示。

{

width : 200px;

margin : 0 auto;

}

通常情况下你不能让一个浮动元素居中

3.多个块级元素在一行内水平居中

此时你可以修改这些块级元素的display属性为inline-block或flexbox。

inline-block的情况

//父元素设置text-align为center

.inline-block-center{

text-align : center;

}

//子元素设置display为inline-block

.inline-block-center div{

display : inline-block;

text-align : left;

}

flexbox的情况:

直接设置父元素的display为flex,将父元素作为弹性伸缩盒显示

.flex-center{

display : flex;

justify-content : center;

}

垂直居中:Vertically

1.行内元素

1.1单行行内元素

有时候行内元素或文本元素看上去垂直居中,仅仅是因为其上下内边距设置了相同的值。

.link{

padding-top : 30px;

padding-bottom : 30px;

}

如果有时候你不想选择padding,那还有一种方法就是设置line-height的值与height的值相等。

.center-text-trick{

height : 100px;

line-height : 100px;

white-space : nowrap;

}

1.2多行元素

设置相同的padding-top和padding-bottom对多行元素也会产生垂直居中的效果。

但是如果padding设置不好使的时候,我们也可以使用table和table-cell。对display为table-cell的元素使用vertical-align为middle即可。

.center-table {

display : table;

height : 250px;

width : 240px;

background-color : white;

}

.center-table p {

display : table-cell;

margin : 0;

background-color : black;

color : white;

vertical-align : middle;

}

如果table过时了,那你可以尝试一下flexbox,一个flex子元素可以在其flex父元素中很简单的居中。

.flex-center-vertically{

display : flex;

justify-content : center;

flex-direction : column;

}

注意:垂直居中的条件必须是其父元素有一个固定的高度height。

如果以上几种垂直居中的方法就失效了,那就只能‘ghost element‘技术,用伪元素(pseudo element)了。一个满高的伪元素被放置在父容器中,要垂直居中的元素和它一起居中。

.ghost-center{

position : relative;

}

.ghost-center :: before{

content : "";

display : inline-block;

height : 100%;

width : 1%;

vertical-align : middle;

}

.ghost-center p{

display : inline-block;

vertical-align : middle;

}

2.块级元素

2.1知道元素的高度?

在网页布局中,不知道某个块元素的高度是很常见的,因为当块元素的宽度改变时,其内容也会随着改变高度。文本样式的变化也会改变文本的总体高度。文本内容大小的变化也会改变文本的总体高度。

有固定高宽比例的元素。比如img,当其调整大小时,也会改变高度。

但如果你知道元素的高度,那改元素垂直居中可以这样写:

.parent{

position : relative;

}

.child{

position : absolute;

top : 50%;

height : 100px;

margin : -50px;

}

2.2不知道元素的高度

我们还是可以把该元素先压到父元素一半的地方,然后再往上轻推一点,具体如下:

.parent{

position : relative;

}

.child{

position : absolute;

top : 50%;

transform : translateY(-50%);

}

2.3是否可以利用CSS3的flexbox呢?

可以的,并且很简单。

.parent{

display : flex;

flex-direction : column;

justify-content : center;

}

3.水平+垂直居中

1.元素有固定的宽度和高度

先对元素绝对定位,让其先定位在父元素的50%/50%处,然后使用负外边距,使其等于元素宽度和高度的一半,具体代码如下

.parent{

position : relative;

}

.child{

width : 300px;

height : 100px;

padding : 20px;

position : absolute;

top : 50%;

left : 50%;

margin : -70px 0 0 -170px;

}

2.元素的宽度和高度未知

如果你不知道元素的宽度和高度,你可以使用CSS3的transition过度属性,使用translate函数,并在X,Y两个方向都移动该元素高宽的-50%。

.parent{

position : relative;

}

.child{

position : absolute;

top : 50%;

left : 50%;

transform : translate(-50%,-50%);

}

3.使用CSS3的flexbox

需要使用flexbox的两个方向上的居中属性,代码如下:

.parent{

display : flex;

justify-content : center;

align-items : center;

}

结论:利用css,你可实现完全的居中。

原文:https://css-tricks.com/centering-css-complete-guide/

时间: 2024-10-07 05:28:28

CSS中的居中:完全指导的相关文章

HTML和CSS中的居中效果(1)

HTML和CSS中的居中效果 单行上下左右居中 Html: <div class="container"></div> CSS: .container{ width: 600px; height: 300px; text-align: center; line-height: 300px; border: 1px solid green; } 固定高宽上下左右居中 Html: <div class="container"><

css中各种居中的奇技淫巧总结

css中各种居中的奇技淫巧总结   第一种,在固定布局中比较常用的技巧设置container的margin:0 auto:   第二种(从布局中入手)   css .outer{ height:200px; width:200px; background:gray; position:relative; } .inner{ width:100px; height:100px; top:50%; left:50%; background:black; position:absolute; marg

css中关于居中的问题

居中是最常用的一种css格式,不同的居中方法适和不同的环境中,下面总结了几种常用的居中方法,你可以不用它,但是无论你是一个资深前端大牛,还是小小初学者,当你见到它的时候不认识它就是你的不对啦!!! html部分 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 23.0px Consolas; color: #2b7ec3 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 23.0px Consolas; c

css中元素居中总结

很多时候,我们需要让元素居中显示:1. 一段文本的水平居中,2. 一张图片的水平居中,3. 一个块级元素的水平居中:4. 单行文本的竖直居中,5. 不确定高度的一段文本竖直居中,6. 确定高度的块级元素竖直居中等等.现在分别对其进行总结下(这篇文章也在 imooc 里发表过手记,可是因为板式的原因不太容易读懂.): 1. 让元素水平居中,使用 text-align: center; <div class="text-center">水平居中</div> .tex

css中元素居中的几种方法

对于在网页端布局,垂直居中难于水平居中,同时实现水平和垂直居中是最难的.在移动端,因为设备的宽高是可变的,故一些方案很难实现.以下使用几种方案对下面的html去实现居中,如有不足,可以提出宝贵的意见: <div class="center"> <img src="1.jpg" alt> </div> 1. 使用text-align水平居中 这种方案只能使水平居中,要想垂直居中的话,要给div添加padding或给内容添加margi

css中关于居中的那点事儿

关于居中,无论是水平居中,还是垂直居中都有很多方式,下面我来介绍一些常用的. 第一部分:水平居中 1.实现行内元素的居中.方法:在行内元素外面的块元素的样式中添加:text-align:center; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     

CSS中各种居中方法

水平居中方法 1.行内元素居中 行内元素居中是只针对行内元素的,比如文本(text).图片(img).按钮等行内元素,可通过给父元素设置 text-align:center 来实现.另外,如果块状元素属性display 被设置为inline时,也是可以使用这种方法.但有个首要条件是子元素必须没有被float影响,否则一切都是无用功. 2.块状元素居中 (1)定宽块状元素居中 满足定宽(块状元素的宽度width为固定值)和块状两个条件的元素可以通过设置"左右margin"值为"

CSS中的各种居中方法总结

CSS中的居中可分为水平居中和垂直居中.水平居中分为行内元素居中和块状元素居中两种情况,而块状元素又分为定宽块状元素居中和不定宽块状元素居中.下面详细介绍这几种情况. 一.水平居中 1.行内元素居中 顾名思义,行内元素居中是只针对行内元素的,比如文本(text).图片(img).按钮等行内元素,可通过给父元素设置 text-align:center 来实现.另外,如果块状元素属性display 被设置为inline时,也是可以使用这种方法.但有个首要条件是子元素必须没有被float影响,否则一切

CSS中怎么让DIV居中(转载)

CSS 如何使DIV层水平居中 今天用CSS碰到个很棘手的问题,DIV本身没有定义自己居中的属性, 网上很多的方法都是介绍用上级的text-align: center然后嵌套一层DIV来解决问题. 可是事实上这样的方法科学吗? 经过网络搜索和亲自实验得出以下结论: 正确的也是对页面构造没有影响的设置如下: 对需要水平居中的DIV层添加以下属性: margin-left: auto; margin-right: auto; 经过这么一番设置问题似乎解决了,在FF中已经居中了,可是在IE中看竟然还是