上毛印刷株式会社

【JavaScript】クリックした要素を活性、その他を非活性にする

【JavaScript】クリックした要素を活性、その他を非活性にする

2024年03月26日
WEBサイト制作
  • #HTML
  • #css
  • #JavaScript

こんにちは!
上毛印刷WEB制作担当のソーヤです。

今回はおそらく非常に使う場面が多いであろうギミックを紹介します!

実装例

HTML例

<ul class="bulb-list">
  <li>
    <button class="js-switch">
      <img class="js-image js-null" src="null.png" alt="">
      <img class="js-image js-black" src="black.png" alt="">
      <img class="js-image js-light" src="light.png" alt="">
    </button>
  </li>
  <li>
    <button class="js-switch">
      <img class="js-image js-null" src="null.png" alt="">
      <img class="js-image js-black" src="black.png" alt="">
      <img class="js-image js-light" src="light.png" alt="">
    </button>
  </li>
  <li>
    <button class="js-switch">
      <img class="js-image js-null" src="null.png" alt="">
      <img class="js-image js-black" src="black.png" alt="">
      <img class="js-image js-light" src="light.png" alt="">
    </button>
  </li>
  <li>
    <button class="js-switch">
      <img class="js-image js-null" src="null.png" alt="">
      <img class="js-image js-black" src="black.png" alt="">
      <img class="js-image js-light" src="light.png" alt="">
    </button>
  </li>
  <li>
    <button class="js-switch">
      <img class="js-image js-null" src="null.png" alt="">
      <img class="js-image js-black" src="black.png" alt="">
      <img class="js-image js-light" src="light.png" alt="">
    </button>
  </li>
  <li>
    <button class="js-switch">
      <img class="js-image js-null" src="null.png" alt="">
      <img class="js-image js-black" src="black.png" alt="">
      <img class="js-image js-light" src="light.png" alt="">
    </button>
  </li>
</ul>

CSS例

.bulb-list{
  width: 100%;
  display: flex;
  list-style: none;
  justify-content: center;
}
.bulb-list button{
  border: none;
  background-color: transparent;
}
.bulb-list img{
  width: 100%;
  max-width: 100%;
}
.bulb-list img:nth-of-type(2),
.bulb-list img:nth-of-type(3){
  display: none;
}
.is-hide{
  display: none!important;
}
.is-show{
  display: block!important;
}

JavaScript例

let switches = document.querySelectorAll('.js-switch');
switches.forEach(function(switchElement) {
  switchElement.addEventListener('click', function(e) {
    let nullImages = document.querySelectorAll('.js-null');
    nullImages.forEach(function(nullImage) {
      nullImage.classList.add('is-hide');
    });
    switchElement.querySelector('.js-light').classList.add('is-show');
    switchElement.querySelector('.js-black').classList.add('is-hide');
    switches.forEach(function(switchItem) {
      if (switchItem !== switchElement) {
        switchItem.querySelector('.js-light').classList.remove('is-show');
        switchItem.querySelector('.js-black').classList.add('is-show');
      }
    });
      switchElement.querySelector('.js-black').classList.remove('is-show');
  });
});

まとめ

今回もjQueryではなく、Vanilla.jsで実装してみました。

コピペしてガンガン使ってください!

WEB制作担当ソーヤ

ソーヤ

上毛印刷WEB制作担当
前職は東証プライム企業の本社WEB受託チームにてフロントエンドエンジニアを3年経験。


この記事に対するご意見・ご感想・ご質問等ありましたら、
ぜひ下記フォームにてお送りください。

    お名前必須
    メールアドレス必須
    お問い合わせ内容必須
    PAGE TOP