前提・実現したいこと
CSSのactiveを指定するとクリックしてる間変化を起こす事ができるのですが、
その変化を維持するにはどうすればいいのでしょうか?
例えば
メニュー1 メニュー2 メニュー3とあった場合に、
クリックしたメニューの背景色を変えて、ほかのメニューをクリックするまで背景色を維持したいです
CSSでできるのでしょうか?
JavaScript使わないと無理でしょうか?
該当のソースコード
CSS
1<style> 2div:hover{ 3 background-color:blue; 4} 5 6div:active{ 7 background-color:red; 8} 9</style> 10 11 12<div>メニュー1</div> 13<div>メニュー2</div> 14<div>メニュー3</div>
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
JavaScript使わないと無理でしょうか?
基本的にはそうです。「クリックした状態をラジオボタンで記録させる」ような方法を取ればCSSだけで実装できるかもしれませんが、レイアウトにも制約が生じますので、あまりおすすめはしません。
投稿2020/04/05 01:09
総合スコア146018
0
HTMLとCSSだけの方法と、JavaScriptを用いた方法とがあると思います。
案1. HTML + CSSのみ
HTML
1<label><input type="radio" name="aaa"><span>メニュー1</span></label> 2<label><input type="radio" name="aaa"><span>メニュー2</span></label> 3<label><input type="radio" name="aaa"><span>メニュー3</span></label>
CSS
1label { 2 display: block; /* 好きなように設定をしてください */ 3} 4label input[type="radio"] { 5 opacity: 0; 6 position: absolute; 7 /* width、font-size、z-indexなどでラジオボタンを触りにくくする方法を追加してもいいです。 */ 8} 9label span { 10 display: block; /* 好きなように設定をしてください */ 11} 12label input[type="radio"] ~ span:hover { 13 background-color: blue; 14} 15label input[type="radio"] ~ span:active, 16label input[type="radio"]:checked ~ span { 17 background-color: red; 18}
案2. HTML + CSS + JavaScript
HTML
1<div>メニュー1</div> 2<div>メニュー2</div> 3<div>メニュー3</div>
CSS
1div:hover { 2 background-color: blue; 3} 4div:active, 5div.active { 6 /* 選択している状態の */ 7 background-color: red; 8}
JS
1var elm = document.querySelectorAll('div'); 2 3for (let i = 0; i < elm.length; i++) { 4 elm[i].addEventListener('click', () => { 5 // すべてのdivからactiveクラスを削除 6 for (let j = 0; j < elm.length; j++) { 7 elm[j].classList.remove('active'); 8 } 9 10 // クリックした要素にactiveクラスを追加 11 elm[i].classList.add('active'); 12 }); 13}
jQueryなら、for文のない、もう少しシンプルな記述で実装できると思います。
投稿2020/04/05 01:40
編集2020/04/05 01:57総合スコア4528
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/05 02:03
退会済みユーザー
2020/04/05 02:06
退会済みユーザー
2020/04/05 02:14
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。