質問するログイン新規登録

Q&A

解決済

2回答

273閲覧

ウインドウサイズによる切り分けで、こんなレイアウトをCSSだけで実現できるのでしょうか?

witoiw

総合スコア17

CSS

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

1グッド

0クリップ

投稿2024/10/04 07:50

1

0

実現したいこと

ウインドウサイズによるメディアクエリの設定で、PCとスマホでレイアウトの切り替えをしたいのですが、PCでのレイアウトはクライアントの意向で決まっている状況です。PC画面は以下のようなレイアウト構成です。

イメージ説明

スマホのウインドウサイズになった場合、以下のようにブロックの順番を実現したいのですが、CSSでこのようなレイアウトの組み替えは可能なのでしょうか?

イメージ説明

発生している問題・分からないこと

スマホでの順番をcontent-a-a、content-b、content-a-b、の実現をしたいのですが、CSSだけで可能なものでしょうか??

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

display:flex以外の方法で何か良い方法があったりするものでしょうか?

補足

特になし

utm.👍を押しています

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

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

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

maisumakun

2024/10/04 07:52

モバイル版ではcontent-aはどこへ行くのですか?
witoiw

2024/10/04 08:06

ご質問ありがとうございます。content-aはそのままあるのですが、content-aがあることでスマホでの理想の順番が実現できず、、困っています。図案が分かりにくくて、申し訳ございません。おっしゃる通り、content-aの存在が邪魔と言いますか、、、
witoiw

2024/10/04 08:08

スマホの時だけ、content-aの存在を無効化させることってできるのでしょうか・・・。
utm.

2024/10/04 08:35

メディアクエリを使えばグリッドレイアウトでできそうですがやってみないとなんともですね。 アクセシビリティの観点から言うと明らかに別の順序なので、あんまり良くないとも思いますし
guest

回答2

0

ベストアンサー

モバイル時は、

  • content-adisplay: contents
  • content-a-aorder: 1
  • contnet-a-border: 3
  • content-border: 2
  • containerdisplay: flex; flex-direction:column

で可能かと思います。

投稿2024/10/04 08:06

int32_t

総合スコア22019

witoiw

2024/10/04 09:55

ご回答ありがとうございます。え、こんな簡単に??自分のCSSの理解が浅いことを知りました。。大変助かりました!ベストアンサーに選ばせていただきました。ありがとうございました!
guest

0

解決したようですが参考までに

html

1<style> 2#container{ 3 background-Color:lightgray; 4 display:grid; 5 padding:10px; 6 gap:10px; 7} 8#content-a {background-Color:red;} 9#content-a-a{background-Color:yellow;grid-area:aa;} 10#content-a-b{background-Color:aqua;grid-area:ab;} 11#content-b {background-Color:lime;grid-area:b;} 12 13@media screen and (min-width: 900px) { 14 #container{ 15 grid-template-areas: 16 "a b"; 17 } 18 #content-a{ 19 padding:10px; 20 gap:10px; 21 display:grid; 22 grid-template-areas: 23 "aa" 24 "ab"; 25 grid-area:a; 26 } 27} 28@media screen and (max-width: 900px) { 29 #container{ 30 grid-template-areas: 31 "aa" 32 "b" 33 "ab" 34 ; 35 } 36 #content-a{ 37 display: contents; 38 } 39} 40</style> 41<div id="container"> 42 <div id="content-a"> 43 <div id="content-a-a">content-a-a</div> 44 <div id="content-a-b">content-a-b</div> 45 </div> 46 <div id="content-b">content-b</div> 47</div>

投稿2024/10/04 09:59

yambejp

総合スコア118405

witoiw

2024/10/10 03:35

丁寧なご回答ありがとうございます。おかげで解決できました。ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問