Set the height of a div to be half of whatever the width is

拟墨画扇 提交于 2019-12-31 21:45:12

问题


How can I set the height of a div to be exactly half whatever the width is, when the width will change depending on the users screen size?

I have the following set on a div...

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

The width works fine on this, it locks at 400 pixels if the screen gets too narrow and it also stops expanding at 1200 pixels if the screen gets too big. But, I also want the height to change to be exactly half of what the width is at any given time. Something like...

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

That hasn't worked (which I wasn't really expecting it to).

I'd prefer to use CSS if it's possible, but as I'd also like the height to change if the user manually adjusts the size of the internet window too (like what happens with the width at the moment). I'm not sure it's possible with CSS, however, if there's a way to achieve this by Jquery I'd be happy to use that too.

jsFiddle of the above for reference.

Can anyone help me?


回答1:


If you're ok with supporting only modern browsers, you can do this: http://jsfiddle.net/kNPfh/

The vw measure is in 1/100th of the viewport width, so 50vw is 50% of screen width.

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

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

if not, you can use: http://jsfiddle.net/ff7WC/

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



回答2:


Make sure you have a js file then use this

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

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




回答3:


You can do it with the help of padding on a parent item, because relative padding (even height-wise) is based on the width of the element.

CSS:

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

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

For details, see this article on the subject http://wemadeyoulook.at/how-we-think-about/proportional-scaling-responsive-boxes

You can also use jquery for that, something like:

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

Please choose this as the correct answer if it solves your doubt by clicking on the tick symbol to the left.



来源:https://stackoverflow.com/questions/17672010/set-the-height-of-a-div-to-be-half-of-whatever-the-width-is

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!