2016-11-16 7 views
0

divを 'a'タグで囲むことで奇妙な結果が得られ、内部で子のサイズではなく 'a'タグをできるだけ広くする必要があると感じます。 HTML5と関係があります。<a> div内のハイパーリンクは大/ワイドになります

Edgeは私が探している結果を多かれ少なかれ与えますが、何らかの理由でChromeで 'a'タグはページの全幅です。

また、 'a'タグ内にdiv 'margin'を含めることもできます。だから私は 'onclick'メソッドを使用することはできません。これはjavascriptなしで達成できますか? JSFiddle

<a href="http://example.com" style="background-color: #CCC;"> 
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px; display:block;"><h2>text</h2></div> 
</a> 

<a href="http://example.com" style="background-color: #CCC;"> 
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div> 
</a> 

<a href="http://example.com" style="background-color: #CCC;"> 
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px; display:inline-block;"><h2>text</h2></div> 
</a> 

<a href="http://example.com" style="background-color: #CCC; display: block;"> 
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div> 
</a> 
+0

タグは幅を気にしません。子要素、つまりdivはデフォルトでshow display:blockになります。だから、divのいくつかは全幅です(そして、あなたはそれらと一緒に動きます)。 a要素に 'display:inline-block; 'を付けることができます。タグに余白を付けて達成したいことを完全には理解していません。 –

+0

ありがとう@ThijsBouwesあなたがコメントしている、それはdiv間の空白のギャップがないようです。あなたがdivをクリックするのを忘れた場合でも、それはあなたをリンクに連れて行きます。そのような大きな取引ではないが、私はそれが奇妙であることがわかった、それは私が子のサイズを見つけるためにすべての 'a'タグをjavascriptする必要がある場合、ページを遅くする。 – 807

答えて

2

私はすぐに、別の「DIV」タグで、このような何か「」タグを囲むされ見つける最も簡単な回避策:

<div style="width: 100px"> 
    <a href="http://example.com" style="background-color: #CCC;"> 
     <div style="background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div> 
    </a> 
</div> 

をしかし、あなたは「欲しい具体的な理由があります"divの外側に配置するタグ? div要素は正しいスペーシングを可能にするために使われ、 "a"タグは本質的にはハイパーリンクだけです。

<div style="background-color: #C00; margin: 0px 8px 8px 0px; width: 100px; height: 100px;"> 
    <a href="http://example.com" style="background-color: #CCC; display: inline-block; width: 100%; height: 100%;"> 
    <h2>text</h2> 
    </a> 
</div> 

PS:私は簡単な例として、ここでは、インラインCSSを使用していますが、これを使用するべきではありませんので、論理的に、あなたはこのような何かにつながるのdiv内の「」のタグを置きます。代わりにCSSクラスを使用してください。あなたは後で私に感謝します。

+0

コメントのための@Jenever、divの外側にある理由は、「マージン」をクリック可能なリンク(その間に空白の隙間がない)に含めることです。私は簡単な解決法ではないと信じていません。それはdivの混乱です(あなたに無礼ではない)。私は 'a'タグにdivと同じサイズのクラスを与えようとしましたが、それもうまくいきませんでした。 – 807

+1

遅れて申し訳ありません。これをチェックしてください:https://jsfiddle.net/kbte5bhv/1/ 幅と高さを> 100%に設定することで、 "a"タグを親より大きくするのはちょっと難解です。 divは赤の背景色を持ち、 "a"はそれを超えて何が起こっているかを見るために不透明な灰色の背景を持っています。 – Jenever

+0

それはあなたがそれを透明にすれば、実際には素晴らしい仕事です!私は私のコードのための適切な解決策を見つけるためにすべてのフィードバックをうまくいくことができると思う。ありがとう。 – 807

関連する問題