吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 888|回复: 18
收起左侧

[讨论] 分享一个自己写的前端源码(轮播图)

[复制链接]
yuzilin 发表于 2024-3-17 12:49
[CSS] 纯文本查看 复制代码
<style>
  * {
    box-sizing: border-box;
  }
  
  body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
  }

  .carousel-container {
    position: relative;
    width: 100%;
    height: 300px;
    overflow: hidden;
  }

  .carousel-slide img {
    position: absolute;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;/* 把全部图片透明 */
    transition: opacity 0.5s ease-in-out;
  }

  .carousel-slide img.active {
    opacity: 1; /* 让其显示当前活动的图片,让具有active类名的第一张图片不透明度为一 */
  }

  .dots-container {
    position: absolute;
    bottom: 20px;
    right: 20px;
    display: flex;
    justify-content: center;
  }

  .dot {
    cursor: pointer;
    height: 15px;
    width: 15px;
    margin: 0 5px;
    background-color: #ddd;
    border-radius: 50%;
    transition: background-color 0.6s ease;
  }

  .dot.active {
    background-color: black;
  }

  /* 添加:左右按钮样式 */ 
  .prev-btn{
	  position: absolute;
	  bottom: 110px;
	  left: 10%;
	  transform: translateX(-50%);
	  display: flex;
	  justify-content: space-between;
	  width: 60px;
	  height: 60px;
	  opacity: 0.6;
	  font-size:45px;
  }
  .next-btn{
	  position: absolute;
	  bottom: 110px;
	  right: 8%;
	  transform: translateX(-50%);
	  display: flex;
	  justify-content: space-between;
	  width: max-content;
	  width: 60px;
	  height: 60px;
	  opacity: 0.6;
	  font-size:45px;
  }
</style>

[CSS] 纯文本查看 复制代码
<div class="carousel-container">
  <div class="carousel-slide">
    <!-- 为图片添加 active 类,初始时第一张直接设置为不透明,避免初始是空白的 -->
    <img src="./img/ChMkJ1bKwleIEcuLAAtHTojgTk8AALGmgL0Ke0AC0dm716.jpg" alt="Image 1" class="active">
    <img src="./img/ChMkJ1bKwleIeZAZAAptgm_QzxAAALGmgKi5SQACm2a020.jpg" alt="Image 2"><!-- src修改图片链接处 -->
    <img src="./img/ChMkJlbKwleIEIH6AAp6SJUdFWEAALGmgKuV3AACnpg275.jpg" alt="Image 3">
    <img src="./img/ChMkJlbKwliIALc3AA7o_JCbGH0AALGmgNpAL4ADukU965.jpg" alt="Image 4">
  </div>
  <div class="dots-container">
    <div class="dot active"></div>
    <div class="dot"></div>
    <div class="dot"></div>
    <div class="dot"></div>
  </div>

  <div class="controls-container">
    <button class="prev-btn" ><-</button>
    <button class="next-btn" >-></button>
  </div><!-- 左右按键 -->
</div>

[JavaScript] 纯文本查看 复制代码
<script>
  const carouselSlide = document.querySelector('.carousel-slide');
  const images = carouselSlide.querySelectorAll('img');
  const dotsContainer = document.querySelectorAll('.dot');
  let currentSlide = 0;//记录每次轮播的索引

  function changeSlide(direction) {
    if (direction === 'next') {
      currentSlide = (currentSlide + 1) % images.length;
    } else if (direction === 'prev') {
      currentSlide = (currentSlide - 1 + images.length) % images.length;
    }//可重置let currentSlide对应的值并实现无缝功能
    // 更新图片状态,让不透明度为1的图片与当前索引保持一致
    images.forEach((img, index) => {
      img.classList.toggle('active', index === currentSlide);
    });
    // 高亮当前活动的点
    dotsContainer.forEach((dot, index) => {
      dot.classList.toggle('active', index === currentSlide);
    });
  }


  // 点击圆点切换图片
  dotsContainer.forEach((dot, index) => {
    dot.addEventListener('click', () => {
      currentSlide = index;
      changeSlide('jump');
    });
  });

  // 自动轮播功能(每3.6秒自动切换到下一张)
  setInterval(() => {
    changeSlide('next');
  }, 3600);
  
  // 左右按键事件监听
  const prevBtn = document.querySelector('.prev-btn');
  const nextBtn = document.querySelector('.next-btn');

  prevBtn.addEventListener('click', () => {
    changeSlide('prev');
  });

  nextBtn.addEventListener('click', () => {
    changeSlide('next');
  });
</script>

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
wjh + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ldwz 发表于 2024-3-17 14:32
有演示不?这个和那种插件的啥区别?
wjh 发表于 2024-3-17 15:21
本帖最后由 wjh 于 2024-3-17 15:24 编辑

确实,不是很直观。
Tikony 发表于 2024-3-17 16:09
soglog 发表于 2024-3-17 16:16
贴个图出来看看效果撒·
yyysss153 发表于 2024-3-17 16:37
感谢分享
李现在哪 发表于 2024-3-17 16:45
只有css?emmm
头像被屏蔽
moruye 发表于 2024-3-17 19:25
提示: 作者被禁止或删除 内容自动屏蔽
anoming 发表于 2024-3-18 08:25
怎么不载一张页面图呢,这样看不到效果
sitefan 发表于 2024-3-18 09:35
我师父当年问过我一个问题,考虑客户鼠标放到轮播图上就不自动轮播的情况了吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表