1

如果您帮助我解决以下问题,我将不胜感激。

我正在尝试使用 jQuery 自动调整 div 的大小以适应不同的屏幕尺寸。问题是当我尝试使用一些填充或边距时,整个布局会分崩离析。

padding + margin 应该总是 5 px + 5 px,不管屏幕尺寸有多大。

这是我想要得到的。

这是下面代码的样子。

查询:

  $(document).ready(function() {
      winSize();
      $(window).resize(function(){
          winSize();
      }); 
  });

  function winSize()
  {
      window_height = $(window).height();
      window_width = $(window).width();

      $("#container").css('height', window_height).css('width', window_width);    
      $("#leftArea").css('height', window_height ).css('width', window_width * 0.1);

  }

CSS:

body {
    padding: 0px;
    margin: 0px;
}
#container {
    background-color: red;
}
#leftArea {
    background-color: gray;
    padding: 5px;
}
#innerArea {
    margin: 5px;
    background-color: green;
    width: 100%;
    height: 100%;
}

HTML:

<div id="container">
  <div id ="leftArea">
    <div id="innerArea"> </div>
  </div>
</div>

提前非常感谢!

4

4 回答 4

1

您可以使用边框而不是经过测试的填充/边距:

http://jsfiddle.net/remus/JkmYn/

#leftArea {
    background-color: gray;
}
#innerArea {
    border: 5px solid gray;
    background-color: green;
    width: 100%;
    height: 100%;
}
于 2013-10-23T15:26:34.960 回答
0

使用这个 CSS:

jsFiddle

#leftArea {
    background-color: gray;
    padding:5px;
    box-sizing: border-box;
}
#innerArea {
    background-color: green;
    width: 100%;
    height: 100%;
}

更新:

您可以在没有 JQuery 并且仅使用 CSS 的情况下做到这一点:

jsFiddle:使用 CSS

jsFiddle:使用 JQuery

使用这个 CSS:

body {
    padding: 0px;
    margin: 0px;
    overflow:hidden;
}
#container {
    background-color: red;
    width:100vw;
    height:100vh;
}
#leftArea {
    background-color: gray;
    border:5px solid green;
    box-sizing: border-box;
    height:100vh;
    width:10vw;
}

HTML:

<div id="container">
    <div id="leftArea">
        <div id="innerArea"></div>
    </div>
</div>

您可以为任何您想要的框设置边距和填充,但不要忘记box-sizing: border-box

跨浏览器box-sizing

textarea { 
    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
    -moz-box-sizing: border-box;    /* Firefox, other Gecko */
    box-sizing: border-box;         /* Opera/IE 8+ */
}
于 2013-10-23T15:33:09.240 回答
0

我同意 r3mus,只是补充一下,您可能需要调整内部区域的高度

body {
     padding: 0px;
     margin: 0px;
 }
 #container {
     background-color: red;
}
 #innerArea {
     border: 10px solid gray;
     background-color: green;
     height: 95.1%;
    width:100%;
 }
于 2013-10-23T15:36:58.093 回答
0

这个怎么样?

http://jsfiddle.net/beauxjames/dZVEA/

再加一个小包装器通常可以解决问题:

<div id="container">

    <div id ="leftArea">
        <div class="demoWrapper">
            <div id="innerArea">fff </div>    
        </div>        
    </div>

</div>
于 2013-10-23T15:51:53.190 回答