每个 div 底部都会添加 5 像素的额外边距。

12

我正在尝试使用CSS设计页面的一个简单标题。我计划将两个div堆叠在一起。顶部的div有多个选项卡,底部的div是一个纯实心的单一图像div。但在渲染时,我发现这两个div的高度都被额外添加了5px。因此我无法精确地将底部div放置在另一个div上面。

这是由于自动添加了5像素的底部间距。我尝试了负边距、将全局边距和填充设置为零。仍然没有用。

以下是代码:

<div class ="main_nav">
 <div class="first_tab">
 <img src ="images/startup/tab1_brown.png" height="25" width="90" alt="Temp" /> 
 </div>
 <div class = "ind_tab">
 <img src ="images/startup/tab1_orange.png" height="25" width="90" alt="Temp"/>
 </div>
 <div class = "ind_tab">
 <img src ="images/startup/tab1_brown.png" height="25" width="90" alt="Temp" />
 </div>
</div>
<div class="lock">
 <img src ="images/startup/divbg_new.png" alt="Temp" />
</div>

CSS:

 *{ margin:0; padding:0; }
ul.master_navigation
{
    font-size: 125%;
    font-weight: bold;
    text-align: center;
    list-style: none;
    margin: 0.5em 0;
    padding: 0;
}

ul.master_navigation li
{
    display: inline-block;
    padding: 0 1%;
}

a
{
    color: #08f;
    font-weight: bold;
    text-decoration: none;
}

a:visited
{
    color: #88f;
}

a:hover
{
    color: #f00;
}

p
{

    text-align: justify;
}


p.cent
{
    text-align: left;
}

div.header
{    
    height: 200;
}

div.main_nav
{ 
    display: inline-block;
    height: 25;

    width: 900;
    padding: 0;
    margin: 0;
    vertical-align: bottom;

}

div.first_tab
{    
    height: 25;
    float: left;


}
div.ind_tab
{    

    height: 25;
    float: left;
    margin-left: -10px;
    z-index: -5;

}

div.lock
{
    margin-top: -100;
    height: 91;
    width: 900;
    padding: 0;
    margin: -5;

}

body {

    width:900px;
    max-width: 100%;
    margin: auto;
    padding: 0;
    background-image:url(images/startup/bg_2.gif);
    background-repeat:repeat-x;
}

.pad 
{
    padding: 0;
    margin: 0;

}

这里是页面链接

http://net4.ccs.neu.edu/home/pradep/

我花了太多时间在这上面了,请帮帮我。


下次发布问题时,请将您的代码组织好,包括适当的CSS。无需粘贴整个CSS。欢迎来到stackoverflow。 - yesh
4个回答

38

Ege的回答对我非常有用。我花了几个小时来寻找某些图像在div中底部填充的原因。原来是行高导致的。在感兴趣的区域将其设置为0像素:

.divclass {
    line-height: 0px; /* crucial for bottom padding 0 !!! */
}

1
如此简单的解决方案,但是 CSS 方面真是让人烦恼! - Mārtiņš Briedis
我有一张高度为47像素的图片,但包裹它的div却是52像素,多出来的5像素在底部。这是对我有效的解决方案——现在div的高度也是47像素。 - ed4becky

7
我认为你的问题是line-height。没错,就是它。只需在Firebug上添加line-height:0,它们就会粘在一起。
关于inline-block的问题是它的行为与任何内联文本一样,下面的导航栏也有类似的问题,因为你在代码中按了回车键,所以它将被呈现为不间断空格,并在右侧和左侧添加额外的x边距,X的大小取决于字体大小。
为了解决这个问题,你可以像下面这样关闭和打开标签:
<div>
.
.
.
</div><div>
.
.
.
</div>

或者您可以将font-sizeline-height设置为0,但如果该

内没有其他选择器,则这不总是可能。


6

你需要在CSS声明中指定单位。

http://jsfiddle.net/m7YCW/

div.main_nav
{ 
    display: inline-block;
    height: 25px;       /* set px */
    width: 900;
    padding: 0;
    margin: 0;
    vertical-align: bottom;    
}

学会在Chrome中使用开发者工具。如果你在元素上右键单击并选择 -> 检查,它将打开开发者工具。然后,您可以查看“指标”和“计算样式”区域,以查看main_nav呈现为30px而不是25px,并且25个CSS声明旁边有一个警告符号,因为它被明确删除。


它起作用了。那是一件非常基本的事情。但是却引起了太多的问题。非常感谢。我从现在开始永远不会忘记添加 px 了。 - Pradep
1
你需要在CSS声明中指定单位。- 你有以下CSS代码:width: 900; :) - Dave
1
@DaveRook - 这是他自己代码的复制粘贴。他需要在所有声明中设置单位。我只指出了第一个。 - mrtsherman

5
尝试在图片上设置vertical-align:bottom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接