使用内联CSS无法使HTML页面图片居中,需仅用内联样式解决
搞定图片在HTML Body里的居中问题
嘿,我来帮你解决这个图片居中的麻烦!先看你代码里的几个小问题,正是它们导致居中失效:
- 外层
<div>的height:1122px后面漏了分号,这会让后面的border样式直接失效,浏览器解析样式时也会出问题 - 外层
<div>用了position: absolute,但没加任何水平居中的设置,这个div本身就没在body里居中,里面的图片自然也没法整体居中
下面是修复后的完整代码,完全用内联样式,页面只会显示这张图片:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <style type="text/css"> </style> </head> <body style="margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; min-height: 100vh;"> <div style="position: relative; width:794px; height:1122px; border:10px solid black;"> <img style="display:block; margin-left: auto; margin-right:auto; width: 747px; height: 1056px" src="Image.jpg" alt="" /> </div> </body> </html>
关键调整的小说明:
- 给
<body>加了内联样式:用弹性布局display:flex,配合justify-content:center(水平居中)和align-items:center(垂直居中),再用min-height:100vh让body占满整个视口高度,同时去掉默认的边距margin:0;padding:0 - 把外层div的
position:absolute改成了position:relative(如果不是必须用绝对定位的话),同时补上了height后面的分号,border样式就能正常显示了 - 删掉了图片上的
text-align:center——这个属性是给容器用的,对图片本身没用,图片靠margin-left:auto; margin-right:auto加上display:block就可以实现水平居中
要是你必须保留position:absolute的话,也可以这样改外层div的样式:
<div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width:794px; height:1122px; border:10px solid black;">
通过left:50%加上transform:translate(-50%,-50%),就能让绝对定位的div在页面里水平垂直居中啦。
内容的提问来源于stack exchange,提问作者Deepak Jain




