像素不会加起来

时间:2012-11-09 18:08:52

标签: html css

我的像素计算没有加起来有问题。

我有一个主要的div(#page):980px宽 它有一个子div(#content)也是:980px宽

div(#content)内有两个div(#left-pane),宽度为300px,(#右窗格),宽度为676 px。

它们两个都有一个1px的边框 - 横向看整个网站,这应该是4px的宽度。

因此,

300px + 676px + 4px = 980px

尽管如此,我的div(#right-pane)向下移动到div(#left-pane)以下。为什么呢?

我在两者上都有填充和边距设置为NONE。

HTML:

<head>
<title>Brazil Learner | The easy was to master Brazilian-Portuguese</title>
<link href="styles.css" rel="stylesheet" type="text/css">
</head>

<body>

<div id="page">

<div id="top">
<img class="logo" src="images/logo.png" />
<ul class="social">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
</div>

<div id="nav">
<div class="nav-button"><a href="#">Home</a></div>
<div class="nav-button"><a href="#">Lessons</a></div>
<div class="nav-button"><a href="#">Guides</a></div>
<div class="nav-button"><a href="#">About us</a></div>
</div>

<div id="content">

<div id="left-pane">
</div>

<div id="right-pane">
</div>

</div>

<div id="footer">
<div>

</div> <!-- Page closer -->

</body>

</html>

CSS:

html,body,p,ul,li,img,h1,h2,h3 {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}

a {
text-decoration: none;
color: black;   
}

#page {
width: 980px;
margin: 0px auto;
}

/* Top */

#top {
border: 1px solid black;
overflow: hidden;
padding: 30px 30px;
}

.logo {
float: left;
width: 130px;
height: 130px;
}

.social {
float: right;
margin-right: 40px;
}

.social li {
display: inline;
margin: 0px 10px 0px 0px;
}

/* Nav */

#nav {
border: 1px solid red;
overflow: hidden;
margin-bottom: 20px;
}

.nav-button {
float: left;
width: 100px;
margin-right: 6px;
background-color: grey;
text-align: center;
}

/* Content */

#content {
margin-bottom: 20px;
overflow: hidden;
width: 980px;
}

#left-pane {
float: left;
width: 300px;
height: 700px;
border: 1px solid green;
}

#right-pane {
float: right;
width: 676px;
height: 700px;
border: 1px solid black;
}

/* Footer */

#footer {
float: left;
width: 980px;
height: 70px;
border: 1px solid blue;
}

3 个答案:

答案 0 :(得分:6)

我不确定这是否有效,但添加此内容并查看是否有效。

* {
 -moz-box-sizing: border-box;
 -webkit-box-sizing: border-box;
  box-sizing: border-box; 
}

答案 1 :(得分:1)

要考虑div的宽度,您应该考虑4个comoponents

  1. div本身的宽度(例如,这是您的文字所在的位置)
  2. 填充宽度(围绕上面第1点中提到的宽度)
  3. 边框的宽度(填充物周围)
  4. 边距(边界周围)
  5. 因此,如果你搜索CSS Box模型(这里有一些例子http://www.w3.org/TR/CSS2/box.htmlhttp://www.w3schools.com/css/css_boxmodel.asp),你将能够看到可以帮助你的盒子模型。同样使用jQuery,您可以使用以下方法检索每个部分的宽度:.width().innerWidth().outerWidth()。请注意,您可能需要进行一些计算才能找到边框宽度,填充宽度或边距宽度。

    阅读CSS文档和jQuery文档,以更清楚地了解这些工作原理。有时,如果需要一些具有可变宽度对象的精确值,您可能需要使用jQuery来正确地进行宽度计算。

答案 2 :(得分:1)

您使用哪种浏览器来测试您的网站?

我把你的代码扔到一个小提琴上,它在我的Firefox中显得很好,这表明你可能在IE中看它,可能是在非标准模式下,或者是旧版本。 / p>

如果是这种情况,那么它是由于IE(即旧版本)如何处理盒子模型和数学。对于IE,300px + 676px + 4px> 980px。解决此问题的最简单方法是将影响宽度的内容减少1-2px,并且可能会修复它。