首页 > 其他分享 >如何保持容器固定宽高比

如何保持容器固定宽高比

时间:2022-10-24 19:22:06浏览次数:102  
标签:容器 const 固定 height width aspect wrap 宽高比 calc

概述

在播放视频和图片的时候,为了保持其内容不变形,就需要保持容器的固定宽高比

实现方法

1、使用新 css 属性 aspect-ratio

<!DOCTYPE html>
<html lang="zh">
<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>aspect-radio</title>
    <link rel="stylesheet" href="/main.css">
    <style>
        .wrap {
            width: 80vw;
            aspect-ratio: 16/9;
            background-color: brown;
        }
    </style>
</head>
<body>
    <div class="wrap"></div>
</body>
</html>

2、使用 css 函数 calc 计算方法

<!DOCTYPE html>
<html lang="zh">
<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>aspect-radio</title>
    <link rel="stylesheet" href="/main.css">
    <style>
        .wrap {
            width: 80vw;
            background-color: blue;
            height: calc(80vw / 16 * 9);
        }
    </style>
</head>
<body>
    <div class="wrap"></div>
</body>
</html>

此方式需要浏览器支持 calccalc 函数的支持还不错

3、使用js动态计算

<!DOCTYPE html>
<html lang="zh">
<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>aspect-radio</title>
    <link rel="stylesheet" href="/main.css">
    <style>
        .wrap {
            width: 80vw;
            background-color: green;
        }
    </style>
</head>
<body>
    <div class="wrap"></div>
</body>
<script>
    const resize = () => {
        const wrapJs = document.querySelector('.wrap-js');
        const wrapJsStyle = getComputedStyle(wrapJs);
        const wrapJsWidth = wrapJsStyle['width'];
        const height = parseFloat(wrapJsWidth) / 16 * 9;
        wrapJs.style.height = `${height}px`;
    }
    window.addEventListener('resize', () => {
        requestAnimationFrame(resize);
    })
    resize() // 给元素设置初始高度,建议使用css设置
</script>
</html>

此方式兼容性最好,如果需要兼容低版本浏览器可以使用js的方式

源码地址

传送门-Github

有过有其它更好的方式欢迎留言/提pr。

标签:容器,const,固定,height,width,aspect,wrap,宽高比,calc
From: https://www.cnblogs.com/guojikun/p/16822496.html

相关文章

  • 嵌入式-C语言基础:怎么样使得一个指针指向固定的区域?
    在学习单片机的时候,经常需要让一个指针指向固定的区域,这时候应该怎么操作?#include<stdio.h>intmain(){int*p;inta=10;p=&a;printf("改变前变......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:盛最多水的容器
    题目:给定一个长度为n的整数数组 height 。有 n 条垂线,第i条线的两个端点是 (i,0) 和 (i,height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以......
  • 配置docker 容器自定义ip 网段
    1.打开cat/etc/docker/daemon.json添加 "bip":"192.168.0.1/16",配置如下{"bip":"192.168.0.1/16","data-root":"/data/bkce/public/paas_agent/docker",......
  • 容器5种网络模式 与 K8S pod网络关系
    文档说明:只记录关键地方;理解了容器网络模式,也就知道了如何把多个容器相互连接起来容器的网络模式和跨主机通信:network_mode:"bridge"network_mode:"host"netwo......
  • 应用上容器云的准入条件和最佳实践
    随着Kubernetes的发展,现在有一个新的技术趋势:在容器云中以Pod的方式运行虚拟机,这样容器云平台就能够提供普通容器无法实现的功能。相信通过类似的技术,越来越多的应用会向容......
  • Docker基础:容器元数据详解
    今天给大家介绍Docker容器元数据里面包含内容详解,如有不当之处,欢迎大家指正。查看容器元数据主要通过dockerinspect容器id进行查看。今天通过docker安装的mysql查看启动的......
  • 容器是否能代替数组
    在.net中,很多开发者都喜欢使用List来代替数组进行使用。容器不仅封装了数组几乎所有的基本操作,而且还可以动态扩容,在开发过程中十分的方便。以下的场景更加建议使用数组:容器......
  • ceph容器版初始化
    文档说明:只记录关键地方;ceph初始化#!/bin/envbashset-eux__DIR__=$(cd"$(dirname"$0")";pwd)cd${__DIR__}if[!"$BASH_VERSION"];thenecho"Plea......
  • 云安全攻防体系实践-容器安全
    容器安全容器镜像存在的风险1、不安全的第三方组件2、大肆传播的恶意镜像3、极易泄露的敏感信息活动容器存在的风险1、不安全的容器应用2、不受限制的资源共享3、不安全的配......
  • docker和containerd清空所有镜像和容器 并释放空间
    文档说明:只记录关键有用的地方;docker清理dockersystemdf#占用存储空间,又没有用的容器dockerimages-aq-f'dangling=true'|xargsdockerrmi#删除所有d......