質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

5770閲覧

div全体をリンクにしたい

og24715

総合スコア832

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2016/01/05 12:14

div全体をリンクにする時、

html

1<div> 2 <a href="#" style="display: block; width: 100%; height: 100%;"> 3 <p>hoge</p> 4 ... 5 </a> 6</div>

のようにすると、div全体はリンクになってくれますが、div要素内のテキスト hoge を選択できません。
div要素内のテキストを選択できるようにしつつ、div全体をリンクにするにはどうしたらよいでしょうか。ご教授ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

質問で挙げられているコードでは、div全体をリンク対象にしているのではなく、ブラウザの表示領域全体ですね。本来、div全体をリンクするだけなら <a><div /></a> のような構造の方が正しいでしょう。

一般的なブラウザのアンカータグの挙動としては、リンク対象の内側の選択はリンクそのものの反応として扱われるようですから、テキストなどの内容を選択したいのであれば、利用者にリンクの外側から選択範囲を広げるような使い方をさせれば、目的は果たせるはずです。そのため、選択させるならばデザイン的に無駄なリンク対象の範囲拡大は避けるべきではないでしょうか?

質問の意図は『利用者に上記のような強要をさせず、リンクの内側から内容を選択したい』ということでしょうか?もし、そうであれば、HTML と CSS だけだと実現は無理なように思います。

JavaScript も併用すれば一応可能だと思います。ただし、選択範囲の完了とリンク操作を見分ける明確な仕様を定める必要が出てきます。利用者の操作に対して、選択されたのか?リンクが押されたのか?の判別が必須となるため、単純に押されたら片方の挙動をする。というような実装では実現できません。

上記のような押し付けがましい複雑な挙動の場合、想像以上に使い勝手が良くなるならば、是非導入すべきでしょうが、個人的には実現も面倒そうだし、一般的な挙動から逸脱するので根本的にその問題自体を避けるべきで、ページデザインで解決すべき問題なのではないか?と考えます。本文なりが選択できて、リンクもできることが目的であれば、別途リンク項目だけ解りやすい位置に置くなり、選択とリンクを分けて解決するデザインを考えたほうがゴールは取りやすいのではないでしょうか?

以上、ご参考になれば幸いです。

投稿2016/01/05 23:54

ps13zier

総合スコア433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

og24715

2016/01/06 07:09

なるほど。回答ありがとうございます。 イメージとしては、ECサイトの商品一覧で、画像と説明を含むボックスが複数あり、ボックスそのものは商品の詳細ページへのリンクがついてるような感じです。 リンクのついたボックス内のテキストをコピーして検索窓にペースト、ということが出来たら便利では?という思いつきでした。 しかし、ps13zierさんの仰る通り挙動が複雑になりかえって操作性を悪くしそうなので、やめておこうと思います。 HTML+CSSでは難しいとのことなので、いつか勉強がてらJSで組んでみようと思います。
guest

0

html

1<div> 2 <a href="#" style="display: block; width: 100%; height: 100%;pisition:relative;z-index:0;"> 3 <p style="position:relative;z-index:1;">hoge</p> 4 ... 5 </a> 6</div>

これでどうでしょう。
z-indexでpタグのみを最前面にするよう指定しました。

投稿2016/01/06 06:03

maru0014

総合スコア151

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問