为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 Javascript 鼠标悬停 css 效果应用于具有相同类名的所有元素?

如何将 Javascript 鼠标悬停 css 效果应用于具有相同类名的所有元素?

白猪掌柜的 2023-05-19 16:01:52
img__text当用户将鼠标悬停在 上时,我想将不透明度增加到 1 text__container。text__container我已经尝试通过严格的 CSS 来实现这一点,方法是像这样影响孩子,#text__container ~ .img__text然后应用所需的 CSS 效果。索引.html<div class="gallery__container">  <div>    <img class="gallery__img" src="./images/image1.png" alt="">    <div id="text__container">      <span class="img__text">Shake & Shot</span>    </div>  </div>  <div>    <img class="gallery__img" src="./images/image2.png" alt="">    <div id="text__container">      <span class="img__text">It's On</span>    </div>  </div>  <div>    <img class="gallery__img" src="./images/image3.png" alt="">    <div id="text__container">      <span class="img__text">Shake & Shot</span>    </div>  </div>  <div>    <img class="gallery__img" src="./images/image4.png" alt="">    <div id="text__container">      <span class="img__text">Shake & Shot</span>    </div>  </div>  <div>    <img class="gallery__img" src="./images/image5.png" alt="">    <div id="text__container">      <span class="img__text">Shake & Shot</span>    </div>  </div>  <div>    <img class="gallery__img" src="./images/image6.png" alt="">    <div id="text__container">      <span class="img__text">Shake & Shot</span>    </div>  </div></div>风格.scss//Gallery  .gallery__container {    margin-top: 5%;    display: flex;    flex-direction: row;    flex-wrap: wrap;    justify-content: space-between;    div {      background-color: #000;      width: 49%;      margin: 0 0 2% 0;      height: 665px;      display: grid;            img {        grid-column: 1;        grid-row: 1;        height: 100%;        width: 100%;        z-index: 1;        align-content: center;        transition: 0.8s ease-out;        opacity: 1;        &:hover {          transition: 0.8s ease-in;          cursor: pointer;          opacity: 0.5;        }      }
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

您有多个具有相同 id 的元素 - 将其更改为一个类。let如果你想分配事件,你的代码也需要在循环中使用。终于不是mouseout了mouseleave。


这行得通。


var imgContainer = document.getElementsByClassName('text__container');

var imgText = document.getElementsByClassName('img__text');


for (let i = 0; i < imgText.length; i++) {

  imgContainer[i].addEventListener('mouseover', function() {

    imgText[i].style.opacity = "1";

    imgText[i].style.transition = "0.8s ease-in";

  });


  imgContainer[i].addEventListener('mouseout', function(){

    imgText[i].style.opacity = "0";

    imgText[i].style.transition = "0.8s ease-out";

  });

}

.gallery__container {

    margin-top: 5%;

    display: flex;

    flex-direction: row;

    flex-wrap: wrap;

    justify-content: space-between;

    div {

      background-color: #000;

      width: 49%;

      margin: 0 0 2% 0;

      height: 665px;

      display: grid;

      

      img {

        grid-column: 1;

        grid-row: 1;

        height: 100%;

        width: 100%;

        z-index: 1;

        align-content: center;

        transition: 0.8s ease-out;

        opacity: 1;

        &:hover {

          transition: 0.8s ease-in;

          cursor: pointer;

          opacity: 0.5;

        }

      }

      .text__container {

        border: 1px solid red;

        text-align: center;

        align-self: center;

        grid-column: 1;

        grid-row: 1;

        background-color: rgba(0,0,0,0.5);

        width: 100%;

        height: 100%;

        margin: 0;

        z-index: 2;

        background-color: transparent;

        transition: 0.8s ease-out;

        &:hover {

          transition: 0.8s ease-in;

          background-color: rgba(0,0,0,0.5);

        }

        .img__text {

          border: 1px solid red;

          text-align: center;

          align-self: center;

          z-index: 3;

          color: #fff;

          font-family: $main-font;

          font-size: 2rem;

          width: 50%;

          margin: 0 auto;

          transition: 0.8s ease-out;

          opacity: 0;

        }

      }

    }

  }

<div class="gallery__container">

    <div>

      <img class="gallery__img" src="https://via.placeholder.com/100" alt="">

      <div class="text__container">

        <span class="img__text">Shake & Shot</span>

      </div>

    </div>

    <div>

      <img class="gallery__img" src="https://via.placeholder.com/100" alt="">

      <div class="text__container">

        <span class="img__text">It's On</span>

      </div>

    </div>

    <div>

      <img class="gallery__img" src="https://via.placeholder.com/100" alt="">

      <div class="text__container">

        <span class="img__text">It's On</span>

      </div>

    </div>

    <div>

      <img class="gallery__img" src="https://via.placeholder.com/100" alt="">

      <div class="text__container">

        <span class="img__text">It's On</span>

      </div>

    </div>

  </div>


查看完整回答
反对 回复 2023-05-19
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号