12

css でページに単純なヘッダーを設計しようとしています。2 つの div を互いに積み重ねることを計画しました。上部には多くのタブがあり、下部には無地の単一の画像 div があります。しかし、レンダリングすると、これら両方の div の高さに 5px が追加されていることがわかります。そのため、底を他のものの上に正確に配置することはできません。

自動的に 5px の下余白があります。負のマージンを試し、グローバル マージンとパディングをゼロにリセットしました。まだ駄目。

コードはこちら。

<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;

}

体 {

    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/

私はこれに多くの時間を費やしてきました。助けてください。

4

4 に答える 4

37

Egeの答えは私にとって非常に役に立ちました。div 内のいくつかの画像の下パディングの理由を見つけるのに何時間も費やしました。それは行の高さでした。関心のある領域で 0px に設定します。

.divclass {
    line-height: 0px; /* crucial for bottom padding 0 !!! */
}
于 2012-02-07T22:41:21.530 に答える
7

あなたの問題はline-height. うん、そこだ。line-height:0、firebugに追加しただけで、それらはくっつきました。

インライン ブロックに関する問題は、インライン テキストと同じように動作することです。以下のナビゲーションでも同様の問題が発生します。コードで Enter キーを押すと、非改行スペースとしてレンダリングされ、余分な x マージンが追加されます。左右にも。ここの X は、フォント サイズによって異なります。

これを解決するには、以下のように同じ行でタグを閉じたり開いたりすることができます。

<div>
.
.
.
</div><div>
.
.
.
</div>

または、font-sizeandline-heightを に設定できますが0、その div 内に他のセレクターがない場合は、常に可能とは限りません。

于 2012-01-19T03:04:58.983 に答える
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が25pxではなく30pxとしてレンダリングされていること、および25 css宣言の横に警告記号があり、明示的に削除されていることを確認できます。

于 2012-01-19T02:53:05.760 に答える
5

画像に設定vertical-align:bottomしてみてください。

于 2012-01-19T02:50:59.703 に答える