【问题标题】:Calculations for responsive divs not working响应式 div 的计算不起作用
【发布时间】:2014-01-09 19:31:18
【问题描述】:

我有一个 960 像素宽的环绕,然后是一个 930 像素宽的主内容环绕,左右边距为 15 像素。在 main-content wrap 中,有 3 个 div 向左浮动,每个 280px 宽,15px margin-right 来填充 main-content。为了避免给右边的 div 一个边距并使它不适合我给它另一个类并将它的 margin-right 设置为 0。

我正在努力使网站具有响应性,这些是我的百分比计算:
换行=100%
主要内容=96.875%
主要内容边距=1.5625%
divs=30.10752688%
div 边距=1.61290323

CSS:

#page-wrap {
    width:960px; 
    margin: 0 auto; 
    background: white;
}
#main-content {
    width:96.875%;
    margin:15px 1.5625% 0 1.5625%;
}
.box { (the divs)
    float:left;
    width:30.10752688%;
    min-height:160px;
    margin:30px 1.61290323% 0 0;
}
.right{ (only the div to the right)
    margin-right:0;
}

HTML

<div id="page-wrap">
<div id="main-content">  

<div class="box">   
content
</div>

<div class="box">   
content
</div>

<div class="box right"> 
content
</div>

</div>
</div>

我不知道为什么 div 似乎没有正确调整大小。任何帮助将非常感激! 该网站现在可以在这里查看:http://hl.kylmark.se

【问题讨论】:

  • 请贴出相关代码进行复制,谢谢
  • 在 Firefox 中获取 firebug 并随时使用它。我尝试将您的 div 宽度更改为 29% 并且能够产生更好的结果。
  • 为什么需要如此精确的测量值?我很确定大多数浏览器无论如何都会在小数点后 3-4 位四舍五入...
  • 当你说他们没有“正确调整大小”时,你是在说窗口缩小时第三个 div 是如何掉到第二行的?
  • @dmikester1 好吧,是的,而且,当我调整窗口大小并检查 chrome 中的元素时,边距与容器的全宽百分比不同,所以我的计算必须是关闭,但我不知道如何。哦,在 29% 的宽度下,div 不会填充主要内容,当浏览器变得太小时,它们仍然会在彼此下方下降。

标签: css html


【解决方案1】:

我看到的问题是所有蓝色框周围都有一个固定的 10 像素填充。由于填充添加到到元素的宽度,它会抛出你的百分比数学。

解决方案 1

您可以像其他所有内容一样将这些框上的侧边距更改为百分比值:

.blue {
   ...
   padding: 10px 1.0752688%;
}

使用这种方法,您会在变小时折叠边框,这可能是不可取的。

解决方案 2

也许更好的方法是更改​​ box-sizing 属性以计算从边框到边框的宽度,而不是从内容边缘到内容边缘。这样你就可以在一个灵活的容器内有一个 10px 的填充,它的宽度是正确计算的:

.box {
   ...
   width: 32.258065%;
   box-sizing: border-box;
}

还有一件事

您可能还需要注意亚像素舍入。当你的百分比计算到不是一个完整的像素时,浏览器必须决定如何舍入它。如果太多的东西被四舍五入,宽度会变得太大,并在某些浏览器中导致内容跳转。您需要在支持的浏览器中仔细检查。 You can read a good explanation here.

【讨论】:

  • 做到了!我知道我错过了像这样简单的东西! ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
相关资源
最近更新 更多