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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

814閲覧

モバイル・PC判定を画面幅で行うかUserAgentで行うか

pecchan

総合スコア572

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/10/04 00:45

編集2020/10/04 02:21

rails5.2で作成したWebアプリがあります。

画面幅によって表示を切り分けたい部分があり、その判定を
CSSによる画面幅で行うか、UserAgentで行うか迷っています。

自分なりに比較してみました。

CSSの場合、以下のように表示、非表示を簡単に切り替えれますが、html上には同じidが残ってしまいます。
※idが被らないように配置すればいいだけですが、事情によりそれは今回できません。

html

1<div id="test" class="mo">モバイル用</div> 2<div id="test" class="pc">PC用</div>

css

1@media screen and (min-width:300px){ 2 body{ 3 color: pink; 4 } 5 .pc{ display: none;} 6 .mo{ display: block;} 7} 8 9@media screen and (min-width:700px){ 10 body{ 11 color: green; 12 } 13 .pc{ display: block;} 14 .mo{ display: none;} 15}

対して、UserAgentで判定すれば
html出力を制御できるので同一id問題はなくります。

ruby

1<% if @agent == "mobile" %> 2 <div id="test" class="mo">モバイル用</div> 3<% else %> 4 <div id="test" class="pc">PC</div> 5<% end %> 6

また、将来スマフォアプリ版をリリースした際は、モバイルからWebページにアクセスしたら
スマフォアプリ版のインストールを促すメッセージを表示できるように思いました。
実装が大変な部分もrailsなのでgemがありました。

こうなると、UserAgentの方が良いのかなぁという気がしてます。。。

が、初心者なので他にも気づいてない点、考慮すべき点がありそうで質問させていただきました。

皆さんならどう使い分けされますか?

先輩方アドバイスいただけないでしょうか?

宜しくお願い致します。

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

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

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

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

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

hatena19

2020/10/04 02:44

> ※idが被らないように配置すればいいだけですが、事情によりそれは今回できません。 そのような理由が想像つかないので、その理由を追記してください。 idが被らないようにできないというのが絶対条件なら、UserAgentで切り替えるしかないです。 理由によっては別の解決策があるかもしれません。
guest

回答2

0

ベストアンサー

html上には同じidが残ってしまいます。

残らないように書けばいいだけではないでしょうか。

html

1<div id="test"><span class="mo">モバイル</span><span class="pc">PC</span></div>

投稿2020/10/04 01:33

maisumakun

総合スコア145208

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

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

pecchan

2020/10/04 02:20

有難う御座います。 仰る通りなんですが、事情があってそれが出来ません。 記載漏れですみません。追記致します。
maisumakun

2020/10/04 02:26

> ※idが被らないように配置すればいいだけですが、事情によりそれは今回できません。 「idがかぶらないように配置している」のではなく、「同じidで中身だけ切り替えている」ので、特定のidの要素は常に存在する状態ですが、それでもまずいのでしょうか?
pecchan

2020/10/04 02:54

失礼しました。理解できました。 有難う御座います!
guest

0

遥か昔に「UserAgentは見るべきではない」という結論が出てる。
iPhoneもAndroidもない携帯電話の頃はUserAgentで振り分けてることが多かったけどスマホの登場ですべて無駄になった。
携帯電話はhtml表示能力が貧弱とかそもそもhtmlでさえないとか特殊な事情があったので振り分けるしかなかった。

スマホの時代にはレスポンシブでほとんど解決するのでUserAgent見ることは滅多にない。

投稿2020/10/04 02:44

kawax

総合スコア10377

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問