2009-08-04 7 views
0

私は現実から切り離しています。私は小さな見出し、少しのテキスト、多分イメージを含む要約divを持っています。などなど、ホバー:私は、その後にH4とPを変更する、素敵な箱のように見えるようにHREFのスタイルを設定したいウェブページの大きなクリック可能な領域

<div class="summary"> 
    <a href="#"> 
    <h4>Small Heading</h4> 
    <p>Small amount of text</p> 
    </a> 
</div> 

:私はリンク、このようなものにするために全体の要約のdivを希望しますしかし、そこにhrefを置くと、ブラウザが怒ります。

誰もがJavascriptに頼らずに同じ効果を達成する方法を提案できますか?それも可能ですか?

多くの感謝!

答えて

3

純粋なCSSのソリューションは、これを行うには、次のようになります。

<a href="#"> 
    <span class="header4">Small Heading</span> 
    <span class="paragraph">Small amount of text</span> 
</a> 

は、その後、あなたが見て、ヘッダーや段落をしたいかに応じてブロック要素にAを変更し、スタイルスパン:

<style> 
a { 
display: block; 
} 

span.header4 { 
display: block; 
font-size: 24px; 
font-weight: bold; 
margin: 0 0 10px 0; 
} 

span.paragraph { 
display: block; 
margin: 0 0 10px 0;  
} 
</style> 

HTML/CSS純真はそれを好まないでしょう!

+0

その後、純粋主義者はデザインのゴーフです。これは、テキストのみのブラウザに本当にうまく機能しなくなり、html/cssはすべて有効です!彼らは何について不平を言わなければならないでしょうか? –

+1

タグの意味が失われてしまったので、見出しが見出しであることをブラウザーが認識しないように、テキストへの変換は行われません。 – edeverett

+0

ありがとうございます10goto10 - 私はスパンを使用したくありませんでした当初は利用可能な最良の選択肢のようです。 –

2

この構文(リ​​ンク内のブロックレベルのアイテム)はHTML5で許可されています。これはすべてのブラウザでサポートする必要があります(よく分からない人はいつもこのようなことをしています)。

あなたがする必要があるすべてはあなたのDOCTYPEを変更してJavaScriptを使用していないなぜあなたは

+0

私はこの答えが大好きです:D –

0

:-)どのように近代的なお友達に自慢ですか?

<div class="summary" onclick="window.location.href='www.google.com';> 
    <h4>Small Heading</h4> 
    <p>Small amount of text</p> 
</div> 

javacriptを使用しないと、すべてのdiv領域をクリックできなくなります。テキストのみ。

+1

プログレッシブな強化をお願いします。あなたの例は、JSなしではまったく動作しません。 – Quentin

0

a要素のスタイルをdisplay:blockに変更してみてください。

+1

これは動作しません。なぜなら、a要素はまだw3c標準ごとにブロックレベル要素を含むことができないからです。 – Residuum

+0

それは実際に受け入れられたものと同じ答えです(数分前に投稿されました) –

-1

Andrejsが言ったことで拡大:

a.clickDiv { 
     display:block; 

    } 


    <a href="somelink.html" class="clickDiv"> 

    content 

    </a> 
-2

短い答えは、 "有効な、標準、意味的に正しいHTMLではない" です。 (HTML 5はまだ標準ではなく、さまざまなブラウザで動作させるにはハックを必要とします)

無効なテクニックに頼ったり、見出しを投げ捨てたりすることで実現できますが、これはお勧めできません。

妥当な数のユーザーが、有用なものを探しているドキュメントのリンクをスキミングします。スクリーンリーダーのユーザーは良い例です。リンクテキストが大きい場合(この例のように)、この利点は失われます。

ここでは、JavaScriptを使用するのは良い解決策です(しかし、当然、JSが利用できない場合でも機能します)。

この例では、jQueryを使用します(これを正当化するにはDOMと十分に異なる)。

<div class="summary"> 
    <h4><a href='#'>Small Heading</a></h4> 
    <p>Small amount of text</p> 
</div> 

jQuery('div.summary').click(function() { 
    jQuery('a', this).click(); 
}); 

私はこれをテストしていませんが、クリックは()を実行していない場合、私は何を期待あなたがそれを置き換えることができます。

jQuery('div.summary').click(function() { 
    document.location = jQuery('a', this).attr('href'); 
}); 

JavaScriptが使用できない場合は、見出しがまだありますクリック可能なリンク。そうであれば、全領域をクリックすることができます。あなたはとホバー効果を追加することができます

jQuery('div.summary').addClass('hoverable'); 

div.hoverable:hover { background-color: green; } 

(JSが利用できないですが、CSSがある場合は、この方法では、ホバー効果は発生しません)

+1

本当にこれはあなたの答えですか?ああ、どうやって21kになるの? – DoctorLouie

0

私はあなたの目標を完全に失っているかもしれません。

サンプルコードをテキストエディタにコピーし、ブラウザ(FF 3.5、Leopard)で開いたところ、うまくいきました。私は確かにスタイリングのビットを追加しました。

これは、それが壊れている特定のブラウザですか?それとも、検証しないのですか?

divの外側にアンカータグを配置してみましたか?

+0

これは現代のすべてのブラウザで、無効なHTMLを可能な限り表示するために構築されているため、この意味はあいまいではありません。 HTML5はこれを利用して仕様に含めるので、物事を検証するには、doctypeをHTML5 doctypeに変更します。 – edeverett

+0

これは、正しいDTDを持たない古いブラウザでは破損するか、HTML4(またはその両方)では有効ではありません。これは私の質問ではないことに留意してください。しかし、私は元の問題が何であったか興味があります(実際の視覚的問題)。 – Anthony

+0

壊れてはいけません。それはちょうど有効ではない。 (これは、現時点で重要な市場シェアを持っているすべてのブラウザで動作することが分かっています.Netscape 4、Safari 1.3などで動作するのはわかりません) – edeverett

0

これは、あなたが望むことをしますが、リンクオーバーレイの下にあるテキストを選択(コピー+貼り付け)できなくなります。また、IE6の:hover擬似クラス(IE6以降ではサポートしていないので)を制御することはできません。ここで

はHTMLです:

<div class="summary"> 
    <h4>Some Text</h4> 
    <p>A short description</p> 
    <a href="#" class="overlay">Anchor Text</a> 
</div> 

そして、ここでCSSです:注意点としては

<style> 
div.summary { 
position: relative; 
width: 200px; 
height: 100px; 
z-index: 10; 
} 

div.summary h4 { 
position: relative; 
font-size: 18px; 
font-weight: bold; 
} 

div.summary p { 
position: relative; 
} 

a.overlay { 
display: block; 
position: absolute; 
text-indent: -9999px; 
width: 200px; 
height: 100px; 
z-index: 30; 
top: 0; 
left: 0; 
} 
</style> 

、あなたは絶対的なように、.overlayクラスのコンテナ要素上の位置を宣言することを確認してくださいポジショニング作業。また、各z-indexの配置された要素の親要素の位置を宣言する必要があります。

問題がある場合はお知らせください。