未知DIV宽高(16:9)自适应浏览器窗口宽高

问题描述

有一个未知宽高的div(只知道宽高比为16:9),当浏览器窗口足够宽时,那么这个div的高度跟浏览器窗口当前高度相同,
如果把浏览器窗口缩小时(缩小到一定程度),那么这个div的宽度跟浏览器宽度相同。

就用JavaScript和HTML来怎么实现?

问题出现的环境背景及自己尝试过哪些方法

参考https://segmentfault.com/a/11...

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 3.3k
2 个回答

可以用媒体查询

    @media screen and (max-aspect-ratio: 16/9){
        #closeBox {
            width: 100vw;
            height: calc(100vw * 9 / 16);
        }
    }
    @media screen and (min-aspect-ratio: 16/9){
        #closeBox {
            width: calc(100vh * 16 / 9);
            height: 100vh;
        }
    }

完整html示例如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    #closeBox {
        background-color: #ff8800;
        border: 3px solid #00ff00;
        box-sizing: border-box;
    }
    @media screen and (max-aspect-ratio: 16/9){
        #closeBox {
            width: 100vw;
            height: calc(100vw * 9 / 16);
        }
    }
    @media screen and (min-aspect-ratio: 16/9){
        #closeBox {
            width: calc(100vh * 16 / 9);
            height: 100vh;
        }
    }
</style>
<body style="margin: 0;">
<div id="dialogFrame" style="width: 100vw;height: 100vh;background-color: #00b3ee;">
    <div id="closeBox">


    </div>
</body>
</html>

实际效果截图:
图片描述
图片描述

vw 视口宽度
vh 视口高度
vmin min(vw, vh)
vmax max(vw, vh)

所以 css 就很简单了

div
{
    width:100vmin;
    height:56.25vmin; /* 56.25 = 100 / 16 * 9 */
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏