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

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

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

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

CSS

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

Q&A

解決済

3回答

520閲覧

hover時のスタイルをクリック時にも適用したい

sakiaa

総合スコア4

HTML5

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

CSS

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

0グッド

0クリップ

投稿2019/08/17 10:04

編集2019/08/17 15:39

前提・実現したいこと

https://jsfiddle.net/2sxuoa3h/2/ をご覧ください。
ボタンlist1にカーソルを合わせるとボタンの色が明るくなります。
この色が明るくなるスタイル(hover時のスタイル)をマウスクリック時「ボタンがクリックされてから別のボタンがクリックされる間」にも適用したいです。

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

適用されません。

該当のソースコード

↓に記載しました。
https://jsfiddle.net/2sxuoa3h/2/

試したこと

addClass()css()で以下のスタイルを追加したところ、CSS要素#test-label labelは変更されましたが#test-label label:afterは変更されませんでした。

.biz-res-label-checked { content: none; top: 0; background: #0C9506 !important; flex-wrap: wrap; }

ご教授のほどよろしくお願い申し上げます。

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

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

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

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

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

guest

回答3

0

ベストアンサー

js

1// `querySelectorAll` が返す `NodeList` にはそもそも `forEach` があるが、一応配列にしておく 2const labels = [...document.querySelectorAll('#test-label > label')]; 3 4labels.forEach(label => { 5 // ラベルがクリックされたときのイベントを定義 6 label.addEventListener('click', evt => { 7 // すべてのラベルのうち、今回クリックされたものには active クラスを与え、 8 // それ意外のラベルからは active クラスを除去する 9 labels.forEach(l => { 10 if(l === evt.currentTarget) { 11 l.classList.add('active'); 12 } else { 13 l.classList.remove('active'); 14 } 15 }) 16 }); 17});

css

1/* `#test-label label:hover` に適用しているCSSを `#test-label label.active` にも与える */ 2#test-label label:hover, 3#test-label label.active { 4 top: 3px; 5} 6 7/* ↓ listボタンが明るくなる */ 8#test-label label:hover::after, 9#test-label label.active::after { 10 top: 0; 11 background: #0C9506; 12} 13 14#test-label label:hover span, 15#test-label label.active span { 16 top: 0; 17} 18 19#test-label label:hover span::after, 20#test-label label.active span::after { 21 right: 27px; 22}

投稿2019/08/17 17:36

thyda.eiqau

総合スコア2982

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

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

sakiaa

2019/08/18 05:13

コードを書いてくださりありがとうございます。 jsを使ってクリック時にクラス追加・削除すればよろしかったのですね。 大変勉強になりました。 本当にありがとうございました。
guest

0

:active擬似クラスを使えばクリック時のスタイルを表現できます。
:active擬似クラス

投稿2019/08/17 10:16

gnbrganchan

総合スコア438

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

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

sakiaa

2019/08/17 15:39 編集

大変申し訳ございません、私の説明不足でした。 「ボタンがクリックされてから別のボタンをクリックするまでの間」もhover時のスタイルを適用したいです。 ご存知でしたら、恐れ入りますがご教授のほどお願い申し上げます。
guest

0

※自己解決ではありません。

thyda.eiqauさんが教えてくださったJSコードを基にjQueryでも使えるよう書いてみました。

js

1$("#test-label label").click(function(){ 2 $('#-label label').removeClass('active'); 3 $(this).addClass('active'); 4});

上記コードでも動かせました。
皆様ご回答くださりありがとうございました。

投稿2019/08/18 07:59

sakiaa

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問