html - 为什么 `display:table-cell` 使 `margin:0 auto` 无效?
问题描述
*{
padding:0;
margin:0;
text-decoration:none;
}
#head{
width:400px;
height:40px;
border:1px solid red;
margin:0 auto;
line-height:40px;
font-size:20px;
text-align:center;
}
#main{
width:400px;
height:400px;
border:1px solid green;
margin:0 auto;
text-align:center;
vertical-align:middle;
}
<div id="head">set in middle and center</div>
<div id="main">
<img src="https://i.stack.imgur.com/9rdPN.png" alt="">
</div>
div head 和 div main 都设置为 center by margin:0 auto
,你可以看到。
我想将 div main 中的图像垂直设置为中间。
只需添加display:table-cell
div main.
*{
padding:0;
margin:0;
text-decoration:none;
}
#head{
width:400px;
height:40px;
border:1px solid red;
margin:0 auto;
line-height:40px;
font-size:20px;
text-align:center;
}
#main{
width:400px;
height:400px;
border:1px solid green;
margin:0 auto;
text-align:center;
vertical-align:middle;
display:table-cell;
}
<div id="head">set in middle and center</div>
<div id="main">
<img src="https://i.stack.imgur.com/9rdPN.png" alt="">
</div>
现在图片垂直设置为中间,但是div main没有设置为 ,margin:0 auto
为什么不生效呢?display:table-cell
margin:0 auto
解决方案
您可以position: absolute;
在图像上使用transform: translate(-50%, -50%);
使其居中
检查这个:
*{
padding:0;
margin:0;
text-decoration:none;
}
#head{
width:400px;
height:40px;
border:1px solid red;
margin:0 auto;
line-height:40px;
font-size:20px;
text-align:center;
}
#main{
position: relative;
width:400px;
height:400px;
border:1px solid green;
margin:0 auto;
text-align:center;
vertical-align:middle;
}
#main img {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<div id="head">set in middle and center</div>
<div id="main">
<img src="https://i.stack.imgur.com/9rdPN.png" alt="">
</div>
推荐阅读
- r - 如何从网站获取表格(scrappin)
- java - Java - 根据唯一 ID 收集、删除类的属性(全部扩展超类)
- python - Django url调度程序调用错误的函数
- javascript - 单击两次关闭菜单下拉菜单
- sql - 在多个列上连接两个表并仅返回第一个表中不在第二个表中的记录
- java - 如何在java,jpa中返回多个
- google-apps-script - 谷歌应用脚本。我如何获得超链接名称?
- elasticsearch - 将节点添加到运行集群 elasticsearch 导致 master not found 异常
- python - sqlite3.OperationalError:靠近“”:语法错误
- android-studio - 为不同的屏幕密度制作不同的布局