img在div内水平垂直居中

本文介绍了一种使用HTML和CSS将图片垂直居中的方法。通过在div中嵌套span元素并设置适当的样式,即使在高度未知的情况下也能确保图片在页面上居中显示。
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		html {
			height: 100%;
		}
		body {
			width: 100%;
			height: 100%;
		}
		div {
			width: 100%;
			height: 100%;
			text-align: center;
			background: #ccc;
		}
		span {
			display: inline-block;
			height: 100%;
			vertical-align: middle;
		}
		img {
			vertical-align: middle;
		}
	</style>
</head>
<body>
	<div>
		<span></span>
		<img src="https://www.baidu.com/img/bd_logo1.png" />
	</div>
</body>
</html>
代码如上,请注意span的作用。没有span只靠vertical-align:middle;是无法实现的。
解决img元素在div内无法垂直居中的方法有多种,以下是一些具体方式: - **使用`display: table-cell`**:将div的`display`属性设置为`table-cell`,同时设置`vertical-align: middle`实现垂直居中,设置`text-align: center`实现水平居中。示例代码如下: ```css *{margin: 0;padding: 0;} div{ width:150px; height: 100px; display: table-cell; vertical-align: middle; text-align: center; } img { width: 50px; height: 50px; } ``` 这种方法简单方便,适用于大多数场景 [^1][^4]。 - **使用`position`定位**: - 已知图片宽高时,将div设置为`position: relative`,img设置为`position: absolute`,并结合`left: 50%`、`top: 50%`以及`margin-top`和`margin-left`负值来调整。示例代码如下: ```css div{ width:150px; height: 100px; position: relative; } img { width: 50px; height: 50px; position: absolute; left: 50%; top: 50%; margin-top: -25px; margin-left: -25px; } ``` - 未知图片宽高时,同样将div设置为`position: relative`,img设置为`position: absolute`,使用`transform: translate(-50%, -50%)`来实现。示例代码如下: ```css *{margin: 0;padding:0;} div{ width:150px; height: 100px; position: relative; border:1px solid #000; } img { width: 50px; height: 50px; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); } ``` 这种定位方式能很好地处理不同宽高的图片 [^2][^5]。 - **使用`flex`布局**:将div的`display`属性设置为`flex`,并使用`justify-content: center`和`align-items: center`来分别实现水平垂直居中。示例代码如下: ```css div{ display: flex; justify-content: center; align-items: center; width:150px; height: 100px; } img { width: 50px; height: 50px; } ``` `flex`布局是一种现代且灵活的布局方式 [^2]。 - **使用`*`和`vertical-align: middle`**:当div中有行内元素(如img、span等)未垂直居中时,可使用`*`选择器和`vertical-align: middle`来解决。示例代码如下: ```html <style> #test *{vertical-align:middle;} </style> <body> <div id="test"> <img src="http://127.0.0.1/skin/images/hottel.jpg"/> <span>double405</span> </div> </body> ``` 这种方法可以处理div等块级元素下的行内元素垂直居中问题 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值