CSS解决盒模型居中的问题

本文详细介绍六种CSS技巧,包括margin+width、text-align+inline-block、float+position、flex布局、fit-content以及定位方法,帮助你轻松掌握盒子模型中元素的水平垂直居中技巧。

CSS实现盒子模型水平居中、垂直居中、水平垂直居中的多种方法

CSS实现盒子模型水平居中的方法

全局样式

.parent { 
color: #FFFFFF; 
height: 200px; 
width: 200px; 
margin: 0 auto;
background-color: #000000;
 } 
.child { 
width: 50px;
height: 50px;
background-color: #26f12d;
 }

第一种:margin+width

这种方法适用于已经知道width的盒子,实现起来比较简单

<div class="parent"> 
<div class="child"></div> </div> 
.child { 
width: 50px;
margin: 0 auto; 
}

第二种:text-align+inline-block

这种方法适用于多种场景(width不固定)

<div class="parent"> 
<div class="child"></div> </div> 

.parent { 
text-align:center; 
} 
.child { 
display: inline-block;
 }

第三种:float+position

这种方法适用于多种场景(width不固定)

<div class="parent"> 
<div class="between"> 
<div class="child"></div> </div>
</div> 
.between { 
position: relative; 
left: 50%; 
float: left; 
} 
.child {
position: relative; 
right: 50%; }

第四种:

这种方法适用于多种场景(width不固定)

<div class="parent"> 
<div class="between"> 
<div class="child"></div> </div>
</div>
 .parent {
 position: relative; 
} 
.between { 
position: absolute; 
left:50%;
 } 
.child { 
position: relative; 
right: 50%; 
}

第五种:flex

这种方法适用于多种场景(width不固定)

<div class="parent"> <div class="child"></div> </div> 
.parent { 
display:-webkit-box; 
-webkit-box-pack: center; 
-webkit-box-orient: horizontal; 
}

第六种:fit-content

这种方法适用于多种场景(width不固定)

<div class="parent"> 
<div class="between"> 
<div class="child"></div> </div>
</div> 
.between { 
width: -webkit-fit-content; 
margin: 0 auto; 
}

CSS实现盒子模型垂直居中的方法

第一种:position

这种方法适用于已经知道width的盒子

<div class="parent"> 
<div class="child"></div> </div> 
.parent { position:relative; 
width: 200px; 
height: 200px; 
} 
.child { 
position: absolute; 
margin:75px 0; 
}

第二种:position+transform

这种方法适用于已经知道width的盒子

<div class="parent"> 
<div class="child"></div> </div> 
.parent { position:relative; 
width: 200px; 
height: 200px; 
} 
.child { 
position: absolute; 
top: 50%;
transform: translate(0%, -50%); 
}

第三种:flex布局

这种方法适用于多种场景(width不固定)

<div class="parent"> 
<div class="child"></div> </div> 
.parent { 
display: flex;
align-items: center; 
}

第四种:table-cell布局

这种方法适用于多种场景(width不固定)

<div class="parent"> 
<div class="between"> 
<div class="child"></div> </div>
</div> 
.parent { 
display: table; 
} 
.between { 
display: table-cell;
vertical-align: middle; 
}

CSS实现盒子模型水平垂直居中方法

第一种:

<div class="parent"> 
<div class="child"></div> </div> 
.parent { 
position:relative; 
} 
.child { 
position: absolute; 
left: 50%; 
top: 50%; 
transform:translate(-50%,-50%); 
}

第二种:

<div class="parent"> 
<div class="child"></div> </div> 
.parent { position:relative; 
} 
.child { 
position: absolute; 
top: 0; 
bottom: 0; 
left: 0; 
right: 0;
margin: auto; 
}

第三种:

<div class="parent"> 
<div class="child"></div> </div> 
.parent { 
position:relative; 
} 
.child { 
position: absolute; 
top: 50%; 
left: 50%; 
margin-top:
-25px; /* 自身 height 的一半 */ margin-left: -25px; /* 自身 width 的一半 */ 
}
CSS中,设置模型居中可分为水平居中和垂直居中,不同场景下有不同的实现方法。 ### 水平居中 - **行内元素**:对于行内元素(如`span`、`a`等),可通过在其父元素上设置`text-align: center`实现水平居中。 ```css .parent { text-align: center; } ``` - **块级元素**:对于定宽的块级元素,可通过设置左右`margin`为`auto`实现水平居中。 ```css .child { width: 200px; margin: 0 auto; } ``` - **多个块级元素**:若要让多个块级元素水平居中,可将它们转换为行内块元素,再在父元素上设置`text-align: center`。 ```css .parent { text-align: center; } .child { display: inline-block; } ``` ### 垂直居中 - **行内元素**:对于单行的行内元素,可通过设置`line-height`等于元素的`height`实现垂直居中。 ```css .child { height: 30px; line-height: 30px; } ``` - **块级元素**: - **flex布局**:使用Flexbox布局,在父元素上设置`display: flex`和`align-items: center`、`justify-content: center`可同时实现水平和垂直居中。 ```css .parent { display: flex; align-items: center; justify-content: center; } ``` - **绝对定位与负边距**:对于已知宽高的元素,可使用绝对定位和负边距实现垂直居中。 ```css .parent { position: relative; } .child { position: absolute; top: 50%; left: 50%; width: 200px; height: 100px; margin-top: -50px; margin-left: -100px; } ``` - **绝对定位与transform**:对于未知宽高的元素,可使用绝对定位和`transform`实现垂直居中。 ```css .parent { position: relative; } .child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值