You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用内联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

火山引擎 最新活动