<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
css实现垂直水平居中
水平居中:
<div class="box">
<div class="content">
哇!居中了
</div>
</div>
<style type="text/css">
.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
line-height: 100px;//文字在块内垂直居中
text-align: center;//文字居中
margin: 0 auto;
}
</style>
水平垂直居中:
方法一:
position 元素已知宽度
父元素设置为:position: relative;
子元素设置为:position: absolute;
距上50%,据左50%,然后减去元素自身宽度的一半距离就可以实现.
以下这种方法也可以让content在浏览器居中,只要给body设置:
body{
margin:0;
padding:0;
width:100%;
height:100%;
}
就可以实现content在浏览器变换大小的情况下也可以实现绝对居中的效果.(不设置body也可以,只要content的样式是现在这样的就行.)
margin和padding中四个值的先后顺序及区别
margin:0 0 0 0;
顺序为:上右下左;
'margin-top'、'margin-right'、'margin-bottom'、'margin-left',按照顺时针方向罗列的.
示例:
<div class="box">
<div class="content">
</div>
</div>
.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
position: relative;
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
margin: -50px 0 0 -50px;
}
方法二:
position transform 元素未知宽度
如果元素未知宽度,只需将上面例子中的margin: -50px 0 0 -50px;替换为:transform: translate(-50%,-50%);
效果如上!
示例:
<div class="box">
<div class="content">
</div>
</div>
.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
position: relative;
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
方法三:
flex布局
示例:
<div class="box">
<div class="content">
</div>
</div>
.box {
background-color: #FF8C00;
width: 300px;
height: 300px;
display: flex;//flex布局
justify-content: center;//使子项目水平居中
align-items: center;//使子项目垂直居中
}
.content {
background-color: #F00;
width: 100px;
height: 100px;
}
方法四:table-cell布局
因为table-cell相当于表格的td,td为行内元素,无法设置宽和高,所以嵌套一层,嵌套一层必须设置display: inline-block;td的背景覆盖了橘黄色,不推荐使用(content相当于td)
示例:
<div class="box">
<div class="content">
<div class="inner">
</div>
</div>
</div>
.box {
background-color: #FF8C00;//橘黄色
width: 300px;
height: 300px;
display: table;
}
.content {
background-color: #F00;//红色
display: table-cell;
vertical-align: middle;//使子元素垂直居中
text-align: center;//使子元素水平居中
}
.inner {
background-color: #000;//黑色
display: inline-block;
width: 20%;
height: 20%;
}
(注意: width: 20%;和 height: 20%;只是负责控制黑色方块的大小,如果都是100%,则会将红色方块填满.给content设置了宽高也没用,content的背景色还是会完全覆盖它的父元素box.)
方法五:
<style>
.parent{
width: 300px;
height: 300px;
background-color: #f00;
position: relative;
}
.child{
width: 100px;
height: 100px;
background-color: #00f;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin:auto;
}
</style>
<div class="parent">
<div class="child">
我是child
</div>
</div>
方法六:
<style>
.parent{
width: 300px;
height: 300px;
background-color: #f00;
display: table-cell;
vertical-align: middle;
}
.child{
width: 100px;
height: 100px;
background-color: #0f0;
margin: 0 auto;
}
</style>
<div class="parent">
<div class="child">
</div>
</div>
</body>
</html>