需求描述

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

效果图

实现方案

  • 方案一:使用宽度百分比和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...
作者:|水冗水孚|,原文链接: https://segmentfault.com/a/1190000043549466

文章推荐

用rust 写一个jar包 class冲突检测工具

UDP内核发包流程

Android 通过scheme跳转支付宝实现支付

C#写一套最全的MySQL帮助类(包括增删改查)

Disruptor-源码解读

express.js源码阅读笔记

js获取url问号后参数

Linux常用的20个命令(下)

Vue—关于实例中为什么只能有一个根元素?

《回炉重造 Java 基础》——集合(容器)

Go到底能不能实现安全的双检锁?

drools中的条件 when