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

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

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

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

CSS

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

Q&A

解決済

1回答

11922閲覧

display:flexが効かない

3m2

総合スコア7

HTML

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

CSS

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

0グッド

0クリップ

投稿2017/08/16 08:48

###前提・実現したいこと
@mediaで600px以上になったときにdisplay:flexを使用して5つの画像を横並びにしたいです。
600px以下のときの画像の配置は1つだけwidth:100%で他の2つは半分ずつ表示されるようにしています。

###発生している問題・エラーメッセージ

他の場所でもdisplay:flexを利用して2つずつ並べている画像を1列(合計4つ)になるようにしておりそちらはうまくいきます。
しかし、この箇所だけうまくいかず、何も変化がおきません。
初心者のため至らない点があるかもしれませんが、宜しくお願いいたします。

###該当のソースコード

html

1<div class="flexbox2"> 2 <a href="" alt=""> 3 <p><img src="../images/aaa.jpg"></p> 4 <p><img src="../images/bbb.svg" alt=""></p> 5 </a> 6 <a href="" alt=""> 7 <p><img src="../images/aaa.jpg"></p> 8 <p><img src="../images/bbb.svg" alt=""></p> 9 </a> 10 <a href="" alt=""> 11 <p><img src="../images/aaa.jpg"></p> 12 <p><img src="../images/bbb.svg" alt=""></p> 13 </a> 14 <a href="" alt=""> 15 <p><img src="../images/aaa.jpg"></p> 16 <p><img src="../images/bbb.svg" alt=""></p> 17 </a> 18 <a href="" alt=""> 19 <p><img src="../images/aaa.jpg"></p> 20 <p><img src="../images/bbb.svg" alt=""></p> 21 </a> 22</div>

css

1.flexbox2 { 2 height: 100%; 3 display: flex; 4 justify-content: space-between; 5 flex-wrap: wrap; 6 align-items: center; 7 align-content: center; 8} 9 10.flexbox2 a:first-of-type { 11 flex: 0 0 100%; 12} 13 14.flexbox2 a:nth-of-type(n+2) { 15 flex: 0 0 48%; 16} 17 18@media screen and (min-width:599px) { 19 .flexbox2 a { 20 flex: 0 0 18%; 21 } 22} 23 24

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

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

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

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

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

Lhankor_Mhy

2017/08/16 09:29

『うまくいかず』とありますが、具体的にはどのような表示になるのでしょうか。当方でご提示のコードを試したところ、1、23、45のように表示されましたので、想定通りになっているような気がします。
3m2

2017/08/16 12:21

600px以下では1段目に画像1つ、2段目に2つの画像をwidth:48%で半分ずつ、3段目も2段目同様の形で計5つを配置しているのですが、600px以上になるとその5つを横1列に並べたいのですが、それが変化がなく3段のままに表示されています。
guest

回答1

0

ベストアンサー

元(600pxより小さい)記述が:first-of-type:nth-of-type(n+2)に分かれていたので
そのまま@mesdia内に以下のように分けて記述したら
599pxまでは3段(1行目が1、2行目が2,3、3行目が4,5)になり、600pxを超えると1行(に5つ)が表示されました。
疑似クラスの優先の問題でしょうかね。

CSS

1@media screen and (min-width:600px) { 2 .flexbox2 a:first-of-type { 3 flex: 0 0 18%; 4 } 5 6 .flexbox2 a:nth-of-type(n+2) { 7 flex: 0 0 18%; 8 } 9}

ちなみにmin-width:599pxだと598pxまでが3段、599pxから1段になっちゃいますね。

追記:
試しに、質問文に掲載頂いたものを、min-width ではなくmax-widthを使用して、
通常599以下なら a に18%を設定しておいて、@mediaで600以上なら3段に、というふうに入れ替えしてみました。

.flexbox2 { /*省略*/ } .flexbox2 a { flex: 0 0 18%; } @media screen and (max-width: 599px) { .flexbox2 a:first-of-type { flex: 0 0 100%; } .flexbox2 a:nth-of-type(n+2) { flex: 0 0 48%; } }

としてみたところ.flexbox2 aの指定のままでもご希望の動作をしているようです。

投稿2017/08/16 10:22

編集2017/08/16 13:26
kjml

総合スコア219

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

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

3m2

2017/08/16 12:15

ありがとうございます。思うような形になりました。 また、pxのご指摘もありがとうございます。 ちなみに、疑似セレクタの優先の問題と回答して頂きましたが、単にaタグを指定するよりも疑似セレクタで指定された方が強く反映されてしまっているという解釈でよろしいのでしょうか。
kjml

2017/08/16 12:46

検証まではしていないのですが、 .flexbox2 a:first-of-type や .flexbox2 a:nth-of-type(n+2) と .flexbox2 a の比較になりますから、 擬似要素が付いている分優先度が高いのかな?と思います。
kjml

2017/08/16 13:11

すみません、↑のコメントは疑似要素じゃなくて疑似クラスですね。間違えました。 属性セレクタ・classセレクタ・擬似クラス は、どれも詳細度が「 0.0.0.1.0 」で同格ですが、 .flexbox2 a は classセレクタ+要素セレクタ 0.0.0.1.0  + 0.0.0.0.1 .flexbox2 a:first-of-type は classセレクタ+要素セレクタ+擬似クラス 0.0.0.1.0  + 0.0.0.0.1 + 0.0.0.1.0 なので疑似クラスが付いている方が優先されるのだと思います。
kjml

2017/08/16 13:21

ならば優先順位の低い方をベースにして、@media に優先順位の高い方をいれたらどうなるかを試してみました。回答に追記しました。
3m2

2017/08/16 22:25 編集

とても詳しく追記までして頂きありがとうございます。理解しやすかったです。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問