CSS之元素水平/垂直居中问题

  1. 行内元素的水平居中

方法一:

使用text-align:center;实现水平居中。

示例:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>CSS之居中</title>

<style type="text/css">

* {

margin: 0;

padding: 0;

box-sizing: border-box;

font-size: 20px;

font-family: "microsoft yahei";

}

#div1 {

text-align: center;

}

#div1, span, input, img, p, #div1-1 {

border: 1px solid;

}

#div1 img {

width: 200px;

height: 100px;

}

#div1-1 {

width: 300px;

}

</style>

</head>

<body>

<div id="div1">

<span>我是行内元素 span</span><br />

<a href="">我是行内元素 a</a><br />

<input type="text" id=""value="我是行内元素 input" /><br />

<img src="img/wallpaper.jpg"alt="我是行内元素 img" />

<p>我是块级元素 p</p>

<div id="div1-1">

我是块级元素 div

</div>

</div>

</body>

</html>

运行效果


  1. 单行文本的垂直居中

方法:

使用line-height实现垂直居中。此方法同时适用于行内元素和块级元素。

示例:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>CSS之居中</title>

<style type="text/css">

* {

margin: 0;

padding: 0;

box-sizing: border-box;

font-size: 20px;

font-family: "microsoft yahei";

}

div {

border: 1px solid;

}

#div1 {

width: 400px;

height: 300px;

text-align: center;

}

a {

line-height: 300px;

}

</style>

</head>

<body>

<div id="div1">

<a href="">我是行内元素 a</a>

</div>

</body>

</html>

运行效果:


  1. 多行文本的垂直居中

方法:

父级使用display: table;子级使用display:table-cell;vertical-align: middle; 此方法同时适用于行内元素和块级元素。

示例:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>CSS之居中</title>

<style type="text/css">

* {

margin: 0;

padding: 0;

box-sizing: border-box;

font-size: 20px;

font-family: "microsoft yahei";

}

div {

border: 1px solid;

}

#div1 {

display: table;

width: 400px;

height: 300px;

text-align: center;

}

#div1-1 {

display: table-cell;

width: 200px;

vertical-align: middle;

}

</style>

</head>

<body>

<div id="div1">

<div id="div1-1">

我是块级元素 div1-1<br />我是块级元素 div1-1

</div>

</div>

</body>

</html>

运行结果


  1. 块级元素的水平居中

方法一:

在该元素默认定位(static)或者relative定位的情况下,且该元素的宽度确定,且没有浮动,则可以使用 margin: 0 auto; 实现水平居中

示例:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>CSS之居中</title>

<style type="text/css">

* {

margin: 0;

padding: 0;

box-sizing: border-box;

font-size: 20px;

font-family: "microsoft yahei";

}

div {

border: 1px solid;

}

#div1 {

width: 500px;

height: 600px;

text-align: center;

}

#div1-1 {

width: 200px;

margin: 0 auto;

}

</style>

</head>

<body>

<div id="div1">

<div id="div1-1">

我是块级元素 div1-1

</div>

</div>

</body>

</html>

运行结果


 

方法二:

所要进行水平居中的元素宽度不确定,且使用了浮动以使其宽度自适应,那么可以通过对该元素添加一个父级div,并设置父级和子级元素同时向左/右浮动,并都设置为相对定位,然后,将父级元素右/左拉50%,子级元素左/右拉50%即可。

示例:

#div1 {

position: relative;

left: 50%;

float: left;

text-align: center;

}

#div1-1 {

position: relative;

left: -50%;

float: left;

}

运行效果


  1. 块级元素的水平+垂直居中

方法一:

在该元素relative/absolute/fixed定位的情况下,且该元素的宽度和高度确定,且没有浮动,则可以使用 如下示例代码实现水平+垂直居中。

示例:

#div1 {

position: relative;

width: 500px;

height: 300px;

text-align: center;

}

#div1-1 {

position: absolute;

left: 50%;

top: 50%;

width: 200px;

height: 50px;

margin-left: -100px;

margin-top: -25px;

}

运行效果


方法二:

在该元素relative+float/absolute/fixed定位的情况下,且该元素的宽度和高度都不确定,则可以使用CSS3中的translate()方法实现水平+垂直居中。

示例:

#div1 {

position: relative;

width: 400px;

height: 300px;

text-align: center;

}

#div1-1 {

position: absolute;

top: 50%;

left: 50%;

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

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

}

运行效果


注:

此方法也适用于该元素的宽高值确定的情况,如果宽高确定,只需要将百分值改为确定的值即可。此外,因为用的是CSS3的新属性,所以难免存在浏览器兼容问题了。

 

方法三:

使用flex布局。

示例:

#div1 {

position: relative;

display: flex;

justify-content: center;

align-items: center;

width: 400px;

height: 300px;

text-align: center;

}

#div1-1 {

display: flex;

justify-content: center;

align-items: center;

width: 300px;

height: 100px;

}

运行效果


注:

使用这种方式实现居中的效果其实还是蛮简单好用的,无论想要居中的元素是否有浮动,无论单行抑或多行,无论宽高是否确定都可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值