Javascript库强制HTML元素的纵横比?

Posted

技术标签:

【中文标题】Javascript库强制HTML元素的纵横比?【英文标题】:Javascript library to force aspect ratio of HTML elements? 【发布时间】:2012-06-24 05:32:44 【问题描述】:

是否有任何 javascript 库可以强制 html 节点(主要是图像和 div)在调整大小时保持其纵横比?

当元素的宽度受窗口大小限制时,这对于调整元素的高度特别有用。

注意:如果可以在纯 CSS 中完成,我买它!

【问题讨论】:

techpp.com/2008/08/02/… 和 ***.com/questions/757782/… Here's an article about a somewhat more complicated technique. @Derek 仅适用于图像 【参考方案1】:

你的意思是这样的?

http://jsfiddle.net/DerekL/J2s3C/

代码如下:

img
    width: 100%;
    height: auto;

对于其他元素,这将是一个更复杂。

这里是第二个演示:http://jsfiddle.net/DerekL/5BgXk/:

<div id="wrapper"><div id="content"></div></div>

#wrapper 
    position: relative;
    padding-bottom: 33.33%; /* Set ratio here */
    height: 0;

#content 
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: green;    

【讨论】:

好吧,它只适用于图像,因为它们具有原生纵横比。 div 没有纵横比,因此浏览器无法设置合适的高度。 我的意思是,如果在您的示例中将 img 替换为 div,您将在哪里/如何设置所需的纵横比? @Matthieu - 以下是使用 &lt;img&gt; 以外的元素的方法:jsfiddle.net/DerekL/5BgXk 太棒了!它起作用了,我只需要在图像 inside 上添加height: 100% div 保持比例。 我编辑了您的答案以添加第二个代码 sn-p。我在使用 Safari 时遇到了一些问题,它已修复为 #wrapper 设置 height: 100% 而不是 0

以上是关于Javascript库强制HTML元素的纵横比?的主要内容,如果未能解决你的问题,请参考以下文章

使用 flexbox 并保持 1:1 的纵横比,即使内容大小不同

检测纵横比 - HTML5 视频

将具有子元素(包含 imgs/iframes)的元素绝对居中,同时在调整大小时保持它们的纵横比

Iphone X 的纵横比问题

如何检查网站用户显示的纵横比? [复制]

保留 SVG 文本的纵横比