用CSS实现宽度自适应100%,宽高比例为16: 9的矩形

宽度自适应100%,宽高比为16:9,即100%:h = 16:9,计算出来矩形高度 h = 56.25%

父元素设置height:0;padding-bottom:56.25%;是为了让子元素适应父元素的高度,子元素高度 = 父元素的 padding-bottom;

注意:如果子元素基于父元素使用绝对定位,子元素的高度计算就只是基于父元素的高度0,而不考虑父元素的padding值,此时子元素的高度为 100% * 0 = 0。

父元素设置相对定位,子元素使用绝对定位,并且子元素高度设置为100%,是为了让子元素的百分比高度计算,是基于父元素的padding区域 + 父元素的height。

此时子元素高度 = 100% * (56.52% + 0)= 56.52%

子元素的宽高比例为 100%:56.52% = 16:9

代码如下

clike 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS实现宽度自适应100%,宽高16:9比例的矩形</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .container {
            width: 100%;
            height: 0;
            padding-bottom: 56.25%; /*让子元素的高度 = 父元素的padding-bottom*/
            position: relative;
        }
        .box {
            width: 100%;
            height: 100%;
            background-color: green;
            position: absolute; 
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box">这是一个宽度自适应100%,宽高比例为16:9的矩形</div>
    </div>
</body>
</html>
相关推荐
多多*37 分钟前
Spring之Bean的初始化 Bean的生命周期 全站式解析
java·开发语言·前端·数据库·后端·spring·servlet
linweidong41 分钟前
在企业级应用中,你如何构建一个全面的前端测试策略,包括单元测试、集成测试、端到端测试
前端·selenium·单元测试·集成测试·前端面试·mocha·前端面经
满怀10151 小时前
【HTML 全栈进阶】从语义化到现代 Web 开发实战
前端·html
东锋1.31 小时前
前端动画库 Anime.js 的V4 版本,兼容 Vue、React
前端·javascript·vue.js
满怀10151 小时前
【Flask全栈开发指南】从零构建企业级Web应用
前端·python·flask·后端开发·全栈开发
小杨升级打怪中2 小时前
前端面经-webpack篇--定义、配置、构建流程、 Loader、Tree Shaking、懒加载与预加载、代码分割、 Plugin 机制
前端·webpack·node.js
Yvonne爱编码2 小时前
CSS- 4.4 固定定位(fixed)& 咖啡售卖官网实例
前端·css·html·状态模式·hbuilder
SuperherRo3 小时前
Web开发-JavaEE应用&SpringBoot栈&SnakeYaml反序列化链&JAR&WAR&构建打包
前端·java-ee·jar·反序列化·war·snakeyaml
大帅不是我3 小时前
Python多进程编程执行任务
java·前端·python
前端怎么个事3 小时前
框架的源码理解——V3中的ref和reactive
前端·javascript·vue.js