2011-12-30 27 views
0

HTML構造<a>が私の<img>のサイズで拡大しないのはなぜですか?

<div id="header_div"> 
    <a href="#"> 
     <img width="250" height="75" src="./images/header_logo.png"> 
    </a> 
</div> 

CSS:私はGoogle Chromeの要素-インスペクタを使用してheight40px

ライブビジュアル(<a>の)であることに注意

:hover{ 
outline:1px dotted red;/*this line help us to actually see*/ 
} 

#header_div{ 
-moz-border-radius-topright:8px; 
-moz-border-radius-topleft:8px; 
-webkit-border-top-right-radius:8px; 
-webkit-border-top-left-radius:8px; 
border-top-right-radius:8px; 
border-top-left-radius:8px; 
border:1px solid #477BA3; 
border-bottom:0; 
background:#5BA2D9 url('./images/header_bg.png') repeat-x left bottom; 
} 

#header_div img{ 
border:0; 
padding:5px 10px; 
} 

here

+0

私は赤い輪郭が見えません。問題がある場合は青い輪郭だけが見えます。 – BoltClock

+0

@MatthewGreenの嘘つき、リンクはもっと完璧に機能しませんでした....しかし、私はあなたに同意します、私はJSFiddleに移動しましたので、最後に永遠に(または少なくとも長く) – ajax333221

答えて

5

<a>はインライン要素です。いくつかのCSSを試す:

#header_div { 
    overflow: hidden; 
} 

#header_div a { 
    display: block; 
    float: left; 
} 

<a>したがって、そのような「高さ」と構造特性に従わない(「と」を除く)、インライン要素です。これはdisplay: block;によって解決されます。

ブロック要素は、デフォルトでは親の全体の幅として占有されますが、<a>要素は画像の周りをきちんと囲む必要があります。これはfloat: left;によって解決されます。

<a>要素は<a>フロート崩壊#header#header内のオブジェクトのみであるため。これはoverflow: hidden;によって解決され、安価な "clearfix"です。

境界線や背景が目立つコンテナボックス内にフロートが含まれている場合、そのフロートは、フロートが高くなるにつれてコンテナの下端を自動的に押し下げません。その代わりに、floatはコンテナによって無視され、フラグのようにコンテナの底から垂れ下がります。

出典:http://www.positioniseverything.net/easyclearing.html

+0

私の答えを編集しました。それをチェックしてください。 –

+0

それは今動作します:D、あなたのコードの背後にある魔法を説明してもよろしいですか?正確に何が起こったのか不思議です – ajax333221

1

IMGを#header_divするdisplay:block;を追加してみてください。それは私のために働いた。

+0

そのコードだけでは、ヘッダー全体へのリンクが何とか展開されます。私は '#header_div img'と' #header_div a'でそれを試して、この望ましくない効果を作り出します – ajax333221

関連する問題