css三种方案实现图片宽高自适应等比例缩放

7,295 阅读1分钟

需求描述

页面中有一个图片,页面宽度变小(比如打开控制台,拖动边栏),图片宽高,要随之等比例自适应缩放,如下效果图

效果图

147.gif

实现方案

  • 方案一:使用宽度百分比和vw
  • 方案二:宽度百分比加高度被padding-top撑开
  • 方案三:搭配伪元素

直接上代码,复制粘贴即可使用

方案一:使用宽度百分比和vw

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		.adapt {
			width: 36%;
			height: 36vw;
			background-color: pink;
		}

		img {
			width: 100%;
			height: 100%;
		}
	</style>
</head>

<body>
	<div class="adapt">
		<img src="http://ashuai.work/static/img/avantar.png">
	</div>
</body>

</html>

方案二:宽度百分比加高度被padding-top撑开

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		.adapt {
			width: 36%;
			height: 0;
			padding-top: 36%;
			background: pink;
			position: relative;
		}

		img {
			width: 100%;
			position: absolute;
			top: 0;
			left: 0;
		}
	</style>
</head>

<body>
	<div class="adapt">
		<img src="http://ashuai.work/static/img/avantar.png">
	</div>
</body>

</html>

方案三:搭配伪元素

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		.adapt {
			width: 36%;
			overflow: hidden;
			background: pink;
			position: relative;
		}

		.adapt::after {
			content: '';
			display: block;
			margin-top: 100%;
		}

		img {
			width: 100%;
			position: absolute;
			top: 0;
			left: 0;
		}
	</style>
</head>

<body>
	<div class="adapt">
		<img src="http://ashuai.work/static/img/avantar.png">
	</div>
</body>

</html>

A good memory is better than a bad pen. Write it down...