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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

3回答

1026閲覧

HTML/CSSの:not()によるレイアウトがうまくできない

退会済みユーザー

退会済みユーザー

総合スコア0

CSS3

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2021/12/19 09:56

編集2021/12/19 13:22

概要

<section>タグ内の<h1>タグを除いた<div>タグにdisplay:flex;を適用させたい ```HTHL <section> <h1>title</h1> <div><p>content1</p><p>content2</p></div> <div><p>content3</p><p>content4</p></div> </section> ``` ```CSS section:not(h1){ display: flex; justify-content: space-between; } ``` # 完成イメージ図 ![イメージ説明](0fd738bfb9fe1e04fcd96c45ec2e2aa9.png)

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

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

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

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

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

m.ts10806

2021/12/19 10:07

起きてる問題、質問は何でしょう。ただSCSSなら質問タグに必要でしょうし、コンパイル後のCSS提示されたほうが他者が再現確認しやすいです。
退会済みユーザー

退会済みユーザー

2021/12/19 13:21

CSSに修正しておきます
guest

回答3

0

:not()を使うことは前提なのでしょうか。
単純に

css

1section:nth-child(n + 2){ 2 display: flex; 3}

とすればh1を飛ばして2番目以降の子要素にflexを適用できると思うのですが、いかがでしょうか。

投稿2021/12/19 12:10

junyabuki

総合スコア15

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

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

0

ベストアンサー

最終的な希望のレイアウトはなんなのでしょうか。

section:not(h1) は意味としては、h1ではないsectionということになりますが、sectionh1 でないことは自明のことです。

もし、section の子要素の中で、h1 をflexレイアウトの対象から外したい(Flexアイテムにしない)ということなら、h1はどこに配置したいのでしょうか。

とりあえず、h1 にposition: absolute;を設定すればflexレイアウトの対象から外れて、好きな位置に配置できます。

scss

1section { 2 display: flex; 3 justify-content: space-between; 4 position: relative; 5 h1 { 6 position: absolute; 7 top: 0; //お好みに 8 left: 200px; //お好みに 9 } 10}
<section>タグ内の<h1>タグを除いた<div>タグにdisplay:flex;を適用させたい

この言葉通りにコード化すると、下記になりますね。
これで、h1以外の要素にdisplay:flex;が設定されます。ただし、子要素がp要素一つしかないので無意味な設定です。

css

1section :not(h1) { 2 display: flex; 3 justify-content: space-between; 4}

どちらにしても、たぶん、期待しているレイアウトと違うような気がします。目的と手段が合致していない状況ではないでしょう。。
どのようなレイアウトが希望なのか図示されたら、いい手段が提案されると思います。


完成イメージ図が提示されたので、
Flexboxを使う場合の一例を。

scss

1section{ 2 display: flex; 3 justify-content: space-between; 4 flex-wrap: wrap; 5 border:1px solid; 6 padding: 10px; 7 > * { 8 border:1px solid; 9 width: 45%; 10 } 11 h1 { 12 margin-right: 40%; 13 } 14}

Gridレイアウト使った方がシンプルにできるとは思います。

scss

1section{ 2 display: grid; 3 grid-template-columns:1fr 1fr; 4 gap: 10px; 5 border:1px solid; 6 padding: 10px; 7 > * { 8 border:1px solid; 9 } 10 div { 11 grid-row: 2; 12 } 13}

投稿2021/12/19 11:43

編集2021/12/19 14:46
hatena19

総合スコア33795

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

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

退会済みユーザー

退会済みユーザー

2021/12/19 13:23

完成イメージを張っておきます。
guest

0

HTML構造を変えない限り不可能です。

display:flexは、外側のコンテナに対して適用するものであり、そしてその直下にあるエレメントはすべてフレックスアイテムとなります。

「同じ<section>の子要素のうち、<div>だけをフレックスボックスとする」方法はありません。

投稿2021/12/19 10:08

maisumakun

総合スコア145208

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

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

maisumakun

2021/12/19 10:10

そうでなくて、<div>自体をフレックスコンテナにすることは可能です(現状では中身が<p>だけなのであまり意味はなさそうですが)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問