大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说HTML 水平居中 垂直居中 垂直水平居中的几种实现方式「建议收藏」,希望能够帮助大家进步!!!
- 水平居中
- 垂直居中垂直水平居中方式1:绝对定位方式二 定位+负margin方式3:使用translate实现平移方式4:通过设置bottom top left right margin来实现方式5:flex布局方式6:使用tablecell方式7:JS方式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>helloworld</title>
</head>
<style type="text/css">
.div1{
background-color: blue;
width: 200px;
margin: auto;
}
.div2{
background-color: orangered;
}
</style>
<body>
<div class="div1">
<div class="div2">
你好啊!!!!!!!!!
</div>
</div>
</body>
</html>
只听到从架构师办公室传来架构君的声音:
相见无言还有恨,几回判却又思量,月窗香径梦悠飏。有谁来对上联或下联?
方法2:在子元素中将display设置为inline-block,父元素text-algin设置为center
此代码由Java架构师必看网-架构君整理
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>helloworld</title>
</head>
<style type="text/css">
.div1{
background-color: blue;
text-align: center;
}
.div2{
display: inline-block;
background-color: orangered;
}
</style>
<body>
<div class="div1">
<div class="div2">
你好啊!!!!!!!!!
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>helloworld</title>
</head>
<style type="text/css">
.div1{
width: 200px;
height: 200px;
display: table-cell;
vertical-align: middle;
text-align: center;
}
.div2{
/*display: inline-block;*/
background-color: orangered;
}
</style>
<body>
<div class="div1">
<div class="div2">
你好啊!!!!!!!!!
</div>
</div>
</body>
</html>
此代码由Java架构师必看网-架构君整理
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>helloworld</title>
</head>
<style type="text/css">
.div1{
width: 200px;
height: 200px;
display: flex;
justify-content:center;
align-items:Center;
}
.div2{
/*display: inline-block;*/
background-color: orangered;
}
</style>
<body>
<div class="div1">
<div class="div2">
你好啊!!!!!!!!!
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
*{
padding: 0;
margin: 0;
}
.box{
width: 500px;
height: 400px;
background: red;
margin: 100px;
//border: 2px;
}
.child{
position: absolute;
width: 200px;
height: 150px;
background: blue;
margin: 125px 150px;
}
</style>
</head>
<body>
<div class="box">
<div class="child"></div>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
.child{
position: fixed;
width: 200px;
height: 150px;
background: blue;
top:50%;
left: 50%;
margin-top: -75px;
margin-left:-100px ;
}
</style>
</head>
<body>
<div class="child"></div>
</body>
</html>
下面的transform代码可以更换为transform: translate(-50%,-50%);
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
.child{
position: fixed;
width: 200px;
height: 150px;
background: blue;
top:50%;
left: 50%;
transform: translate(-100px,-75px);
}
</style>
</head>
<body>
<div class="child"></div>
</body>
</html>
效果如上图。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
.father{
width: 500px;
height: 500px;
background: black;
position: relative;
}
.child{
position: absolute;
width: 200px;
height: 150px;
background: blue;
top:0;
left:0;
right: 0;
bottom: 0;
margin: auto;
}
</style>
</head>
<body>
<div class="father">
<div class="child"></div>
</div>
</body>
</html>
最长使用,设置 display: flex;justify-content: center;align-items: center;三个属性;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
.father {
display: flex;
justify-content: center;
align-items: center;
width: 500px;
height: 500px;
background-color: rgb(197, 34, 34);
}
.child {
width: 50px;
height: 70px;
background-color: rgb(36, 167, 64);
}
</style>
</head>
<body>
<div class="father">
<div class="child"></div>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>居中</title>
<style>
.father {
display: table-cell;
vertical-align: middle;
text-align: center;
width: 500px;
height: 500px;
background-color: rgb(197, 34, 34);
}
.child {
display: inline-block;
width: 50px;
height: 70px;
background-color: rgb(36, 167, 64);
}
</style>
</head>
<body>
<div class="father">
<div class="child"></div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
.father {
width: 500px;
height: 500px;
background-color: rgb(197, 34, 34);
}
.child {
width: 50px;
height: 70px;
background-color: rgb(28, 150, 123);
}
</style>
<body>
<div class="father">
<div class="child">
</div>
</div>
</body>
<script>
let father=document.getElementsByClassName('father')[0];
let child=document.getElementsByClassName('child')[0];
fatherH=father.clientHeight;
fatherW=father.clientWidth;
childW=child.offsetWidth;
childH=child.offsetHeight;
child.style.position="absolute";
child.style.top=(fatherH-childH)/2+'px';
child.style.left=(fatherW-childW)/2+'px';
</script>
</html>