js原生事件委托table切换(自定义属性)

//样式效果不完善

<style>

      li {

        list-style: none;

      }

      ul {

        display: flex;

        justify-content: space-between;

        width: 30%;

        margin: auto;

      }

      ul li {

        width: 15%;

        height: 3%;

        border: 1px solid pink;

        text-align: center;

        color: #000;

      }

      p {

        margin: auto;

      }

      p img {

        width: 30%;

        margin-left: 550px;

        transition: all 3s ease-in-out;

      }

      .active {

        background: #ff6700;

        color: #fff;

      }

      .fade-in-out {

        opacity: 0;

        animation: fadeInOut 3s infinite;

      }

 

      @keyframes fadeInOut {

        0% {

          opacity: 1;

        }

        50% {

          opacity: 0.5;

        }

        100% {

          opacity: 1;

        }

      }

    </style>

//布局结构

 <div class="box">

      <ul>

        <li class="active" data-i="0">王昭君</li>

        <li data-i="1">吕布</li>

        <li data-i="2">庄周</li>

        <li data-i="3">不知火舞</li>

        <li data-i="4">安琪拉</li>

        <li data-i="5">周瑜</li>

      </ul>

      <p><img src="./1.webp" alt="" class="fade-in-out" /></p>

//js实现效果

<script>

//定义数据

        let arr = [

          {

            img: "./1.webp",

            title: "王昭君",

          },

          {

            img: "./2.webp",

            title: "吕布",

          },

          { img: "./3.webp", title: "庄周" },

          { img: "./4.webp", title: "不知火舞" },

          { img: "./5.webp", title: "安琪拉" },

          { img: "./6.webp", title: "周瑜" },

        ];

//获取元素

        const ul = document.querySelector("ul");

        const img = document.querySelector("p img");

//把点击事件委托给ul

        ul.addEventListener("click", function (e) {

//找到对应元素等于LI

          if (e.target.tagName === "LI") {

//先删除带有active的类名

            document.querySelector(".active").classList.remove("active");

//给对应元素添加

            e.target.classList.add("active");

//获取元素属性代替下标

            const i = e.target.dataset.i;

            img.src = `${arr[i].img}`;

            img.title = `${arr[i].title}`;

          }

        });

      </script>

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值