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

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

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

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

Q&A

解決済

1回答

1003閲覧

冗長なコードを短くする技術について

gyoruo

総合スコア61

CSS

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

0グッド

0クリップ

投稿2020/08/18 05:19

以下のようなコードで.btn1やbtn2をCSSで全て指定したとしたら冗長なコードになってしまいました。
nth-childも試しましたが、うまく動作してくれません。
1つずつボタンを押したかの判定を行いたいので、btn1やbtn2などのように分けています。
どうにかしてCSSでもう少し短くできないでしょうか?
SCSSで変数としてforするしかないのでしょうか?

HTML

1<div class="container"> 2 <button type="button" class="buttons btn1" 3 onclick="document.querySelector('.btn1').classList.toggle('clicked')">家賃 4 <div class="cost">80,000円</div> 5 </button> 6 <button type="button" class="buttons btn2" 7 onclick="document.querySelector('.btn2').classList.toggle('clicked')">光熱費 8 <div class="cost">5,000円</div> 9 </button> 10 <button type="button" class="buttons btn3" 11 onclick="document.querySelector('.btn3').classList.toggle('clicked')">水道代 12 <div class="cost">5,000円</div> 13 </button> 14 <button type="button" class="buttons btn4" 15 onclick="document.querySelector('.btn4').classList.toggle('clicked')">通信費 16 <div class="cost">5,000円</div> 17 </button> 18 <button type="button" class="buttons btn5" 19 onclick="document.querySelector('.btn5').classList.toggle('clicked')">食費 20 <div class="cost">40,000円</div> 21 </button> 22 <button type="button" class="buttons btn6" 23 onclick="document.querySelector('.btn6').classList.toggle('clicked')">音楽 24 <div class="cost">1,000円</div> 25 </button> 26 <button type="button" class="buttons btn7" 27 onclick="document.querySelector('.btn7').classList.toggle('clicked')">動画 28 <div class="cost">2,000円</div> 29 </button> 30 <button type="button" class="buttons btn8" 31 onclick="document.querySelector('.btn8').classList.toggle('clicked')">Offce関連 32 <div class="cost">1,000円</div> 33 </button> 34 </div>

CSS

1.buttons.btn1.clicked { 2 box-shadow: none; 3 transform: translateY(0); 4 color: rgba(0, 0, 0, 0.25); 5} 6.buttons.btn2.clicked { 7 box-shadow: none; 8 transform: translateY(0); 9 color: rgba(0, 0, 0, 0.25); 10} 11.buttons.btn3.clicked { 12 box-shadow: none; 13 transform: translateY(0); 14 color: rgba(0, 0, 0, 0.25); 15} 16.buttons.btn4.clicked { 17 box-shadow: none; 18 transform: translateY(0); 19 color: rgba(0, 0, 0, 0.25); 20} 21.buttons.btn5.clicked { 22 box-shadow: none; 23 transform: translateY(0); 24 color: rgba(0, 0, 0, 0.25); 25} 26.buttons.btn6.clicked { 27 box-shadow: none; 28 transform: translateY(0); 29 color: rgba(0, 0, 0, 0.25); 30} 31.buttons.btn7.clicked { 32 box-shadow: none; 33 transform: translateY(0); 34 color: rgba(0, 0, 0, 0.25); 35} 36.buttons.btn8.clicked { 37 box-shadow: none; 38 transform: translateY(0); 39 color: rgba(0, 0, 0, 0.25); 40}

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

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

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

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

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

guest

回答1

0

自己解決

CSS

1.buttons.clicked { 2 box-shadow: none; 3 transform: translateY(0); 4 color: rgba(0, 0, 0, 0.25); 5}

で普通にできました。。。

投稿2020/08/18 05:26

gyoruo

総合スコア61

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問