
いつも助けて頂き重宝しております。
今回はレスポンシブWebデザインでご存知の方いらっしゃいましたら、
よろしくお願い致します。
トップページはレスポンシブデザインで作成しているのですが、
そこから先の着地ページがどうしてもPC用とスマホ用に分かれているため、
画面サイズに応じてリンク先を変更したいのですが、そのようなことは可能でしょうか?
「トップページ」レスポンシブデザイン
「次のページ」バナーをクリックすると
┃
ディスプレイサイズでリンク先を変更
┏━━━┻━━━┓
スマホの場合 PCの場合
┃ ┃
リンク先A リンク先B
このようなイメージです。。。
できる限りスタイルシートで実現できればと思っておりますが、
難しいようであればどんな手段でも構いませんので、
ご教授の程よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
不可能ではないです。
【スタイルシートで実現する場合】
「次のページ」バナーを二つ配置します。
それぞれ別々のリンク先が設定されています。
ディスプレイサイズに応じて適切なほうのバナーのみを表示するようにスタイルシートを記述します。
たとえば画面幅がスマホサイズのとき、PC 用のバナーに
display: none;
が設定されるようにするのです。
【JavaScript で実現する場合】
window.innerWidth プロパティなどからブラウザの表示幅を取得します。
この値に応じて、「次のページ」バナーの href 属性を適切なものに書き換えます。
たとえば
if (window.innerWidth < threshold) {
document.getElementById('nextPage').href = hrefToMobilePage;
}
のようにします(変数や id 属性の値は適宜書き換えてください)。
私個人の感想ですが、どちらも本質的な解決ではないように思います。
スタイルシートで実現する場合、HTML 文書に余計なアンカー要素を追加することになります。
JavaScript で実現する場合、本来 HTML の機能だけで実現できるハイパーリンクに余計な操作を加えることになります。
小手先の解決と感じられるのは、あなたのサイトにおけるレスポンシブデザインの使い方が本来の意義に反しているからです。
レスポンシブデザインの考え方は、単一のコンテンツを異なるデバイスで快適に見るためのものです。
内容と見え方を分離するという思想に基づくのです。
一方でリンク先を分ける対応は、異なるデバイスそれぞれに異なるコンテンツを用意することです。
見え方も内容の重要な一部であるという思想に基づくのです。
(個人的な見解です)
諸事情のため仕方のない対応なのかもしれません。
しかしできれば、本来の目的や、レスポンシブデザインを用いることで実現したかった結果を振り返ってみてください。
ご説明ありがとうございます。そうなんです。。。
2つの異なるリンク先がそれぞれ別会社のシステムでそれぞれがレスポンシブとそうでないものになっておりまして。。。その中でも自社サイトだけはレスポンシブで構成したいと思っており、このような事情となっております。
正直小手先の解決しかないかなぁと思っていたところですので、頂いた回答で大変助かりました。また機会がございましたら、よろしくお願い致します。
No.3
- 回答日時:
例ですが・・
マークアップは、
<div class="nav">
<ol>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ol>
</div>
HTML5でしたら<nav></nav>になる。
レスポンスで、呼び出される外部スタイルシート(B)の一方に
div.nav ol li+li{display:none;}
と書いておけば良いだけです。検索エンジン、通常のパソコンには全部表示されますが、スマホにはスタイルシート(B)が適用されて二つ目のナビゲーションは見えない。
逆や、一方しか見せないことも同様に簡単です。
具体的なソースまでご説明ありがとうございました。複数のリンクから不要なものを非表示にする方法でチャレンジしたいと思います。また機会がございましたらよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ulタグやliタグの中でbrタグ...
-
divタグ内のコンテンツが重なっ...
-
<ul>タグを使うと勝手に<p>...
-
html <ul></ul>の並びで一行空...
-
ドロップダウンメニューが隠れ...
-
css 横並びのナビゲーションバ...
-
リストマーカーをボックス内に...
-
UL OL タグのインデントについて
-
ポップアップメニューを表のよ...
-
【CSS】メニュー上部に固定させ...
-
htmlの文字が縦書きになる
-
個別にリンクの色を変える方法
-
ブログのサイドバーが下にくる
-
GoogleのトップページをCSSで書...
-
HRタグ 枠線を透明にするには?
-
html divボックスの入れ子で中...
-
htmlのolやulなどlistにtitleや...
-
テンソル解析(絶対微分学)は...
-
iframe 内の画像を自動縮小させ...
-
マージソートの計算量について-...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストマーカーをボックス内に...
-
liタグの中に<p>タグやら<dl>を...
-
ulタグやliタグの中でbrタグ...
-
divタグ内のコンテンツが重なっ...
-
html/cssの、navを2段にする...
-
list-style-type部分だけ大きく...
-
複数行にまたがる括弧を表示し...
-
html <li>の中の文字一部に色を...
-
ページを開いているときのリン...
-
番号付きリスト(<Ol><Li>・・...
-
リストを2つに分割して、それぞ...
-
リストの左余白の削除方法
-
html <ul></ul>の並びで一行空...
-
<ul><li></li></ul>にするメリ...
-
<li>タグの数が増えすぎたので...
-
css 横並びのナビゲーションバ...
-
htmlの<ol>タグで、数字などを...
-
<li>で改行する横並びのメニュー
-
ページ内リンク!?のしかた
-
イメージマップと画像のスライ...
おすすめ情報