page contents

CSS盒子居中有哪几种方法?本文告诉你

1.第一种 利用margin,div1的宽减去div2的宽就是div2margin-left的数值:(100-40)/2=30 div1的高减去div2的高就是div2margin-top的数值:(100-40)/2=30 <!DOCTYPE html><ht...

attachments-2021-05-2Ku3FX8R60a36c57319e9.png

1.第一种

利用margin,div1的宽减去div2的宽就是div2margin-left的数值:(100-40)/2=30

div1的高减去div2的高就是div2margin-top的数值:

(100-40)/2=30
<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>demo</title>
</head>
<body>
<styletype="text/css">
.div1{ width: 100px; height: 100px; border: 1px solid #000000;}
.div2{ width:40px ; height: 40px; background-color: green;}
.div22{
margin-left: 30px;margin-top: 30px;
            }
</style>
<divclass="div1">
<divclass="div2 div22">
</div>
</div>
</body>
</html>

第2种

利用css的 position属性,把div2相对于div1的top、left都设置为50%,然后再用margin-top设置为div2的高度的负一半拉回来,用marg-left设置为宽度的负一半拉回来,css如下设置

<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>demo</title>
</head>
<body>
<styletype="text/css">
.div1{ width: 100px; height: 100px; border: 1px solid #000000;}
.div2{ width:40px ; height: 40px; background-color: green;}
.div11{
position: relative;
}
.div22{
position: absolute;top:50%;left: 50%;margin-top: -20px;margin-left: -20px;
}
</style>
<divclass="div1 div11">
<divclass="div2 div22">
</div>
</div>
</body>
</html>

第三种

还是用css的position属性,如下的htm

<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>demo</title>
</head>
<body>
<styletype="text/css">
.div1{ width: 100px; height: 100px; border: 1px solid #000000;}
.div2{ width:40px ; height: 40px; background-color: green;}
.div11{
position: relative;
}
.div22{
position: absolute;margin:auto; top: 0;left: 0;right: 0;bottom: 0;
}
</style>
<divclass="div1 div11">
<divclass="div2 div22">
</div>
</div>
</body>
</html>

第四种

利用css3的新增属性table-cell, vertical-align:middle;

<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>demo</title>
</head>
<body>
<styletype="text/css">
.div1{ width: 100px; height: 100px; border: 1px solid #000000;}
.div2{ width:40px ; height: 40px; background-color: green;}
.div11{
display: table-cell;vertical-align: middle;
}
.div22{
margin: auto;
}
</style>
<divclass="div1 div11">
<divclass="div2 div22">
</div>
</div>
</body>
</html>

第五种方法

<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>demo</title>
</head>
<body>
<styletype="text/css">
.div1{ width: 100px; height: 100px; border: 1px solid #000000;}
.div2{ width:40px ; background-color: green;}
.div11{
display: table-cell;vertical-align: middle;
}
.div22{
margin: auto;
}
</style>
<divclass="div1 div11">
<divclass="div2 div22">
div居中方法
</div>
</div>
</body>
</html>

第六种方法

利用flexbox布局

直接在父元素上使用flexbox的布局

<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>demo</title>
<styletype="text/css">
.div1 {
width: 100px;
height: 100px;
border: 1px solid #000000;
}
.div2 {
height: 40px;
width: 40px;
background-color: green;
}
.div11 {
display: flex;
/*!*flex-direction: column;*!可写可不写*/
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<divclass="div1 div11">
<divclass="div2 div22">
</div>
</div>
</body>
</html>

第七种方法

利用transform的属性,注意子绝父相定位

缺点:需要支持Html5

<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>demo</title>
<styletype="text/css">
body {
margin: 100px auto;
position: relative;
}
.div1 {
width: 100px;
height: 100px;
border: 1px solid #000000;
background-color: red;
}
.div2 {
height: 40px;
width: 40px;
background-color: green;
}
.center {
position: absolute;
top: 50%;
left: 50% 
-ms-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
</style>
</head>
<body>
<divclass="div1 center">
我是外部盒子
<divclass="div2 center">
我要居中
</div>
</div>
</body>
</html>

第八种

两者都要固定定位,不常用

缺点:需要设置position属性,网页复杂时容易扰乱页面布局,而且只是元素的起始位置居中

<html>
<head>
<meta charset="UTF-8">
<title>demo</title>
<style type="text/css">
.div1 {
width: 100px;
height: 100px;
border: 1px solid #000000;
background-color: red;
position: relative;
}
.div2 {
height: 40px;
width: 40px;
background-color: green;
margin:30px 30px;
}
.center{
position: fixed;
left: 50%;
}
</style>
</head>
<body>
<div class="div1 center">
<div class="div2 center">
我要居中
</div>
</div>
</body>
</html>
这篇文章就带大家了解了CSS盒子居中的八种方法,更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。
attachments-2022-06-OKY4Blyf62ac12184f298.jpeg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章