将 div 的高度设置为宽度的一半

Posted

技术标签:

【中文标题】将 div 的高度设置为宽度的一半【英文标题】:Set the height of a div to be half of whatever the width is 【发布时间】:2013-07-14 08:47:39 【问题描述】:

当宽度会根据用户的屏幕尺寸而变化时,如何?

我在 div 上设置了以下内容...

#div1 
    min-width:400px;
    width:100%;
    max-width:1200px;
    height:400px;
    background-color:red;  

宽度可以正常工作,如果屏幕太窄,它会锁定在 400 像素,如果屏幕太大,它也会停止扩展到 1200 像素。但是,我也希望在任何给定时间将高度更改为宽度的一半。比如……

#div1 
    min-width:400px;
    width:100%;
    max-width:1200px;
    height:width/2;
    background-color:red;  

这没有奏效(我没想到会这样)。

如果可能的话,我更喜欢使用 CSS,但如果用户也手动调整 Internet 窗口的大小,我也希望改变高度(就像目前宽度发生的情况一样)。我不确定 CSS 是否可行,但是,如果 Jquery 有办法实现这一点,我也很乐意使用它。

jsFiddle of the above for reference.

谁能帮帮我?

【问题讨论】:

【参考方案1】:

如果您可以只支持现代浏览器,您可以这样做:http://jsfiddle.net/kNPfh/

vw 度量是视口宽度的 1/100,因此 50vw 是屏幕宽度的 50%。

<div class='halfwidth'></div>

.halfwidth 
    width: 100%;
    height: 50vw;
    background-color: #e0e0e0;

如果没有,你可以使用:http://jsfiddle.net/ff7WC/

$(window).on( 'resize', function () 
    $('.halfwidth').height( $(this).width() / 2 );
).resize();

【讨论】:

对此进行了一些编辑,它完全符合我的要求。 jsfiddle.net/R5WqL 谢谢!出于好奇,哪个版本的 IE 支持第一个选项? np,vw 在 IE v9.0+ 中受支持 ...这是support chart @DomDay:您能否提供此类值的文档链接? @MichaelWalter 这里是 w2c link 如果你想要权威定义,这里是 browser compatability ...除此之外,谷歌是你的朋友 太酷了!还有hv用来玩身高。太棒了,我很长一段时间都没有处理前端。向好的方向改变了很多。我记得曾经唯一可能的方法是编写长行 ojf java 脚本!【参考方案2】:

确保你有一个 js 文件然后使用它

$(window).load(function()
    $('.element').height($('.element').width() / 2);
    $(window).resize(function()
        $('.element').height($('.element').width() / 2);
    );
);

http://jsfiddle.net/Hive7/8CNtU/2/

【讨论】:

【参考方案3】:

您可以借助父项的内边距来做到这一点,因为相对内边距(甚至是高度)基于元素的宽度。

CSS:

.imageContainer 
    position: relative;
    width: 25%;
    padding-bottom: 25%;
    float: left;
    height: 0;


img 
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;

有关详细信息,请参阅有关该主题的这篇文章 http://wemadeyoulook.at/how-we-think-about/proportional-scaling-responsive-boxes

您也可以为此使用 jquery,例如:

$('.ss').css('height',width()/2);

如果它解决了您的疑问,请选择此作为正确答案,请点击左侧的勾号。

【讨论】:

以上是关于将 div 的高度设置为宽度的一半的主要内容,如果未能解决你的问题,请参考以下文章

css设置盒子高度总是宽度的一半

前端面试 CSS— 实现布局:div垂直居中,左右10px,高度始终为宽度一半

Jquery 将每个选定的 div 高度设置为等于其宽度

从宽度设置div高度(反之亦然)[重复]

div块中高度总是宽度的一半

如果一个div在宽度为百分比的情况下,如何将这个div的高度的值设置成和宽度一样