【问题标题】:How to expand a div to browser height or width whilst keeping in it proportion? [DIAGRAM INSIDE]如何在保持比例的同时将 div 扩展到浏览器的高度或宽度? [内图]
【发布时间】:2012-09-14 17:27:58
【问题描述】:

如果浏览器窗口缩小了,那么我希望 div 和其中的图像也缩小。但它必须保持在中间,并且始终保持相同的比例。这可能吗?我已经尝试了很长时间没有运气。如有必要,我愿意使用 jQuery 或 JS。

【问题讨论】:

    标签: jquery html css ios responsive-design


    【解决方案1】:

    你可以使用这样的东西(使用 jQuery):

    <script language="jscript">
        $(function(){
            ratio=$('#centerdiv').width()/$('#centerdiv').height();
            rePos=function(){
                if($('#container').innerHeight()*ratio>$('#container').innerWidth()){
                    $('#centerdiv').width($('#container').innerWidth());
                    $('#centerdiv').height($('#centerdiv').width()/ratio);
                    $('#centerdiv').offset({left:0,top:($('#container').innerHeight()-$('#centerdiv').outerHeight(true))/2});
                }
                else{
                    $('#centerdiv').height($('#container').innerHeight());
                    $('#centerdiv').width($('#centerdiv').height()*ratio);
                    $('#centerdiv').offset({left:($('#container').innerWidth()-$('#centerdiv').outerWidth(true))/2,top:0});
                }
            };
            $(window).resize(rePos);
            rePos();
        });
        </script>
        <div id="container" style="position:absolute;top:0;bottom:0;left:0;right:0">
        <div id="centerdiv" style="position:absolute;width:150px;height:100px;background-color:red;padding:0;border:0;margin:0"></div>
    

    【讨论】:

    • 你为什么要这样做 $(window).resize(function(){resPos();});而不是 $(windows).resize(resPos); ?
    • $(windows).resize(resPos);更好。
    【解决方案2】:

    一般的想法是这样的

    HTML 头部:

    <meta name="viewport" content="width=device-width">
    

    和身体:

    <div class="container">
      <img src="whatever.jpg"/>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    </div>
    

    和CSS:

    .container {
      width: 90%;
      max-width: 480px; 
      background: #900;
      margin: 1em auto;    
    }
    .container img {
      display: block;
      width: 100%;
      margin: 1em auto;    
    }
    

    基本上,容器 div 占据了可用宽度的 90%,最大为 480px,容器内的 img 占据了它所有可用的空间,并相应地调整大小。显然,所有细节都是任意的,完全取决于您的特定设计。我设置了一个fiddle,您可以在其中看到它的运行情况。

    编辑:忘记了在移动设备上保持洁净的视口元标记。

    【讨论】:

    • 谢谢。这在水平调整大小时有效,但在浏览器垂直调整大小时不起作用。有没有办法也可以垂直完成?
    猜你喜欢
    • 2013-01-13
    • 2011-04-14
    • 2015-06-30
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多