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

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

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

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

HTML5

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

HTML

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

CSS

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

Q&A

解決済

3回答

1586閲覧

html,cssでdl,dt,ddタグ 内での inputのchecked機能の有効化

kumory

総合スコア6

CSS3

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

HTML5

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/05/13 03:09

編集2021/05/13 03:21

前提・実現したいこと

html,cssでwebサイトのQ&A部分を作成中。
下記の2つの条件を満たしながらQ&Aを作成したいです。

①dl,dt,ddタグを使用
②input,labelタグを用いて、「質問部分をclick」→「回答部分を表示」

発生している問題

②のみは実現できるのですが、①のdl,dt,ddタグと組み合わせると実現できません。
延々とググっては試行錯誤したのですが、とうとう実現できそうにないので、どなた様かお知恵を拝借いただけませんでしょうか。
よろしくお願いします。

該当のソースコード

html <dl class="faq"> <dt> <input type="checkbox" class="faq-label" id="faq-labelID"> <label for="faq-labelID" class="test1">この部分をclickして</label> <p class="test2">これはどう?その1</p> <!--- 試したことの③ --- > </dt> <p class="test3">これはどう?その2</p>  <!--- 試したことの③ --- > <dd> <div class="faq-answ"> <p>これを表示したいです。</p> </div> </dd> </dl>
css .faq { & label { display: block; margin: 1.5px 0; padding: 11px 12px; cursor: pointer; transition: all 0.5s; } & input { display: none; /*チェックボックス非表示*/ } } .faq-answ { height: 0; padding: 0; margin-left: 20px; overflow: hidden; opacity: 0; transition: 0.8s; } /*--- clickで変化 ---*/ .faq-label:checked + .faq-answ { /*--- これを実現したい ---*/ display: inline-block; height: auto; opacity: 1; } .faq-label:checked + .test1 {. /*--- 試したことの③ ---*/ color: tomato; font-size: 1.6rem; } .faq-label:checked + .test2 {  /*--- 試したことの③ ---*/ color: tomato; font-size: 1.6rem; } .faq-label:checked + .test3 {  /*--- 試したことの③ ---*/ color: tomato; font-size: 1.6rem; }

試したこと

①擬似要素はinline要素になるとの情報から、当該箇所にinline-blockを追加
②スタイルの優先順位が問題かもしれないと思い、タグ指定→クラス名指定に変更
③要素の親子関係が問題でcheckが反映されないのかと思い、下記を試してみました。
・label要素<label class="test1">にcssを当てる→○
・label要素に兄弟要素<p class="test2">を作ってcssを当てる→×
・dtに兄弟要素<p class="test3">を作ってcssを当てても×

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

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

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

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

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

guest

回答3

0

ベストアンサー

解決済みですが、
inputは非表示にするので、どこに配置してもいいと思いますので、dlの前に配置すれば、一般兄弟結合子 ~ で可能です。
HTML変更不可ならJSしかないと思いますが。

html

1<input type="checkbox" class="faq-label" id="faq-labelID"> 2<dl class="faq"> 3 <dt> 4 <label for="faq-labelID" class="test1">この部分をclickして</label> 5 </dt> 6 <dd> 7 <div class="faq-answ"> 8 <p>これを表示したいです。</p> 9 </div> 10 </dd> 11</dl>

scss

1#faq-labelID { 2 display: none; 3} 4.faq { 5 & label { 6 display: block; 7 margin: 1.5px 0; 8 padding: 11px 12px; 9 cursor: pointer; 10 transition: all 0.5s; 11 } 12} 13 14.faq-answ { 15 height: 0; 16 padding: 0; 17 margin-left: 20px; 18 overflow: hidden; 19 opacity: 0; 20 transition: 0.8s; 21} 22 23/*--- clickで変化 ---*/ 24#faq-labelID:checked ~ dl .faq-answ { 25 height: auto; 26 opacity: 1; 27}

投稿2021/05/13 04:49

hatena19

総合スコア33715

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

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

kumory

2021/05/13 09:58 編集

ご回答ありがとうございます! inputの配置を変えることで、目的の挙動を実現する事ができました。 親子関係、結合子を深く考える事ができ、とても良い勉強となりました。 「解決済み」にも関わらず、ご教示いただきありがとうございました。
guest

0

test2 に関しては +~ に変更すれば動くと思いますが、それ以外のケースはJavaScriptなしで実現するのは不可能です。

隣接兄弟結合子 + と一般兄弟結合子 ~ は同一の親要素内の兄弟要素間でのみ使えます。親が異なる要素同士を関係付けるセレクタはありません。(片方が他方の先祖要素である場合をのぞく)

投稿2021/05/13 03:24

編集2021/05/13 03:29
int32_t

総合スコア20884

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

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

kumory

2021/05/13 03:52

早々のご回答ありがとうございます。 これまで、結合子は場当たり的に使っていたので、非常に勉強になりました! 丁寧で分かりやすい回答どうもありがとうございました。
guest

0

<p class="test3">など、一部の箇所に全角スペースが入っています。全角スペースがあることで、正しいタグとして認識されていない可能性があります。

投稿2021/05/13 03:21

maisumakun

総合スコア145184

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

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

kumory

2021/05/13 03:41

早々のご回答ありがとうございます。 早速、全角スペースを可視化するプラグインを入れました。 このようなミスで延々と時間を取られるのは本当に避けなければなりません! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問