当前位置:   article > 正文

轮播图切换(html+css+JavaScript)_css轮播图并点击切换

css轮播图并点击切换

1.CSS样式

  1. <style>
  2. * {
  3. box-sizing: border-box;
  4. }
  5. .slider {
  6. width: 560px;
  7. height: 400px;
  8. overflow: hidden;
  9. margin-left: 300px;
  10. }
  11. .slider-wrapper {
  12. width: 100%;
  13. height: 320px;
  14. }
  15. .slider-wrapper img {
  16. width: 100%;
  17. height: 100%;
  18. display: block;
  19. }
  20. .slider-footer {
  21. height: 80px;
  22. background-color: rgb(100, 67, 68);
  23. padding: 12px 12px 0 12px;
  24. position: relative;
  25. }
  26. .slider-footer .toggle {
  27. position: absolute;
  28. right: 0;
  29. top: 12px;
  30. display: flex;
  31. }
  32. .slider-footer .toggle button {
  33. margin-right: 12px;
  34. width: 28px;
  35. height: 28px;
  36. appearance: none;
  37. border: none;
  38. background: rgba(255, 255, 255, 0.1);
  39. color: #fff;
  40. border-radius: 4px;
  41. cursor: pointer;
  42. }
  43. .slider-footer .toggle button:hover {
  44. background: rgba(255, 255, 255, 0.2);
  45. }
  46. .slider-footer p {
  47. margin: 0;
  48. color: #fff;
  49. font-size: 18px;
  50. margin-bottom: 10px;
  51. }
  52. .slider-indicator {
  53. margin: 0;
  54. padding: 0;
  55. list-style: none;
  56. display: flex;
  57. align-items: center;
  58. }
  59. .slider-indicator li {
  60. width: 8px;
  61. height: 8px;
  62. margin: 4px;
  63. border-radius: 50%;
  64. background: #fff;
  65. opacity: 0.4;
  66. cursor: pointer;
  67. }
  68. .slider-indicator li.active {
  69. width: 12px;
  70. height: 12px;
  71. opacity: 1;
  72. }
  73. </style>

1. * {box-sizing: border-box;}

页面上所有元素的宽度和高度将包括内边距(padding)和边框(border)

具体来说,box-sizing是CSS中的一个属性,用于定义元素盒模型的计算方式。它有两个值可以选择:

  • content-box:这是默认值,元素的宽度和高度只包括内容区域的大小,即不包括内边距和边框。
  • border-box:当设置为border-box时,元素的宽度和高度会包含内边距和边框的大小,这样更容易控制元素的总尺寸。

2.overflow: hidden:当元素的内容超出其指定的宽度和高度时,超出部分将被隐藏。

3.display: block;的作用是将元素以块级元素的方式显示,即元素会独占一行,并且可以设置宽度和高度等属性。

4.border: none;的作用是将元素的边框设置为无边框,即不显示任何边框线。

2.HTML

  1. <body>
  2. <div class="slider">
  3. <div class="slider-wrapper">
  4. <img src="./imgs/1.jpg" alt="" />
  5. </div>
  6. <div class="slider-footer">
  7. <p>标题1</p>
  8. <ul class="slider-indicator">
  9. <li class="active"></li>
  10. <li></li>
  11. <li></li>
  12. <li></li>
  13. <li></li>
  14. <li></li>
  15. <li></li>
  16. <li></li>
  17. </ul>
  18. <div class="toggle">
  19. <button class="prev">&lt;</button>
  20. <button class="next">&gt;</button>
  21. </div>
  22. </div>
  23. </div>

3.JavaScript

  1. <script>
  2. // 1. 初始数据
  3. const sliderData = [
  4. { url: './imgs/1.jpg', title: '标题1', color: 'rgb(100, 67, 68)' },
  5. { url: './imgs/2.jpeg', title: '标题2', color: 'rgb(43, 35, 26)' },
  6. { url: './imgs/3.jpeg', title: '标题3', color: 'rgb(36, 31, 33)' },
  7. { url: './imgs/4.jpg', title: '标题4', color: 'rgb(139, 98, 66)' },
  8. { url: './imgs/5.jpeg', title: '标题5', color: 'rgb(67, 90, 92)' },
  9. { url: './imgs/6.jpg', title: '标题6', color: 'rgb(166, 131, 143)' },
  10. { url: './imgs/7.jpeg', title: '标题7', color: 'rgb(53, 29, 25)' },
  11. { url: './imgs/8.jpg', title: '标题8', color: 'rgb(99, 72, 114)' },
  12. ]
  13. //获取元素
  14. const img = document.querySelector('.slider-wrapper img')
  15. const p =document.querySelector(' .slider-footer p ')
  16. const footer = document.querySelector(' .slider-footer ')
  17. //1.右按钮业务
  18. //1.1 获取右侧按钮
  19. const next = document.querySelector('.next')
  20. let i =0
  21. //1.2注册点击事件
  22. next.addEventListener('click',function(){
  23. i++
  24. i = i >= sliderData.length ? 0: i
  25. toggle()
  26. })
  27. const prev = document.querySelector('.prev')
  28. //1.2注册点击事件
  29. prev.addEventListener('click',function(){
  30. i--
  31. i = i<0 ? sliderData.length-1 : i;
  32. toggle()
  33. })
  34. //声明一个渲染的函数作为复用
  35. function toggle(){
  36. img.src = sliderData[i].url;
  37. p.innerHTML = sliderData[i].title;
  38. footer.style.backgroundColor = sliderData[i].color
  39. //1.5更换小圆点 先移除原来的类名,当前li再添加 这个类名
  40. document.querySelector(' .slider-indicator .active ').classList.remove('active')
  41. document.querySelector( ` .slider-indicator li:nth-child(${i+1}) ` ).classList.add('active')
  42. }
  43. //3.自动播放模块
  44. let timerId = setInterval(function(){
  45. //利用js自动调用点击事件
  46. next.click()
  47. },1000)
  48. //4.鼠标经过大盒子,停止定时器
  49. const slider = document.querySelector('.slider')
  50. //注册事件
  51. slider.addEventListener('mouseenter',function(){
  52. clearInterval(timerId)
  53. })
  54. //5.鼠标离开大盒子,停止定时器
  55. const slider1 = document.querySelector('.slider')
  56. //注册事件
  57. slider.addEventListener('mouseleave',function(){
  58. clearInterval(timerId)
  59. //开启定时器
  60. timerId = setInterval(function(){
  61. //利用js自动调用点击事件
  62. next.click()
  63. },1000)
  64. })
  65. </script>

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号