• Web APIs——轮播图完整版


    轮播图点击切换

    需求:当点击左右按钮,可以切换轮播图

    分析:

    ①:右侧按钮点击,变量++,如果大于等于8,则复原0

    ②:左侧按钮点击,变量--,如果小于0,则复原最后一张

    ③:鼠标经过暂停定时器

    ④:鼠标离开开启定时器

    1. DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8" />
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    7. <title>轮播图点击切换title>
    8. <style>
    9. * {
    10. box-sizing: border-box;
    11. }
    12. .slider {
    13. width: 560px;
    14. height: 400px;
    15. overflow: hidden;
    16. }
    17. .slider-wrapper {
    18. width: 100%;
    19. height: 320px;
    20. }
    21. .slider-wrapper img {
    22. width: 100%;
    23. height: 100%;
    24. display: block;
    25. }
    26. .slider-footer {
    27. height: 80px;
    28. background-color: rgb(100, 67, 68);
    29. padding: 12px 12px 0 12px;
    30. position: relative;
    31. }
    32. .slider-footer .toggle {
    33. position: absolute;
    34. right: 0;
    35. top: 12px;
    36. display: flex;
    37. }
    38. .slider-footer .toggle button {
    39. margin-right: 12px;
    40. width: 28px;
    41. height: 28px;
    42. appearance: none;
    43. border: none;
    44. background: rgba(255, 255, 255, 0.1);
    45. color: #fff;
    46. border-radius: 4px;
    47. cursor: pointer;
    48. }
    49. .slider-footer .toggle button:hover {
    50. background: rgba(255, 255, 255, 0.2);
    51. }
    52. .slider-footer p {
    53. margin: 0;
    54. color: #fff;
    55. font-size: 18px;
    56. margin-bottom: 10px;
    57. }
    58. .slider-indicator {
    59. margin: 0;
    60. padding: 0;
    61. list-style: none;
    62. display: flex;
    63. align-items: center;
    64. }
    65. .slider-indicator li {
    66. width: 8px;
    67. height: 8px;
    68. margin: 4px;
    69. border-radius: 50%;
    70. background: #fff;
    71. opacity: 0.4;
    72. cursor: pointer;
    73. }
    74. .slider-indicator li.active {
    75. width: 12px;
    76. height: 12px;
    77. opacity: 1;
    78. }
    79. style>
    80. head>
    81. <body>
    82. <div class="slider">
    83. <div class="slider-wrapper">
    84. <img src="./images/slider01.jpg" alt="" />
    85. div>
    86. <div class="slider-footer">
    87. <p>对人类来说会不会太超前了?p>
    88. <ul class="slider-indicator">
    89. <li class="active">li>
    90. <li>li>
    91. <li>li>
    92. <li>li>
    93. <li>li>
    94. <li>li>
    95. <li>li>
    96. <li>li>
    97. ul>
    98. <div class="toggle">
    99. <button class="prev"><button>
    100. <button class="next">>button>
    101. div>
    102. div>
    103. div>
    104. <script>
    105. // 1. 初始数据
    106. const sliderData = [
    107. { url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },
    108. { url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },
    109. { url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },
    110. { url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },
    111. { url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },
    112. { url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },
    113. { url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },
    114. { url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' },
    115. ]
    116. // 获取元素
    117. const img = document.querySelector('.slider-wrapper img')
    118. const p = document.querySelector('.slider-footer p')
    119. const footer = document.querySelector('.slider-footer')
    120. // 1.左右按钮业务
    121. // 1.1 获取右侧按钮
    122. const next = document.querySelector('.next')
    123. let i = 0 // 信号量 控制播放图片张数
    124. // 1.2 注册点击事件
    125. next.addEventListener('click', function () {
    126. // console.log(11)
    127. i++
    128. // 1.6 判断条件 如果大于8 ,就复原为0
    129. if(i >= sliderData.length){
    130. i = 0
    131. }
    132. // 1.3 得到对应的对象
    133. // console.log(sliderData[i])
    134. // 调用函数
    135. toggle()
    136. })
    137. // 2. 左侧按钮
    138. // 2.1 获取左侧按钮
    139. const prev = document.querySelector('.prev')
    140. // 1.2 注册点击事件
    141. prev.addEventListener('click', function () {
    142. // console.log(11)
    143. i--
    144. // 判断条件 如果小于0 则爬到最后一张图片索引号是7
    145. if(i < 0){
    146. i = sliderData.length - 1
    147. }
    148. // 1.3 得到对应的对象
    149. // console.log(sliderData[i])
    150. // 调用函数
    151. toggle()
    152. })
    153. // 声明一个渲染的函数作为复用
    154. function toggle(){
    155. // 1.4 渲染对应的数据
    156. img.src = sliderData[i].url
    157. p.innerHTML = sliderData[i].title
    158. footer.style.backgroundColor = sliderData[i].color
    159. // 1.5 更换小圆点 先移除原来的类名, 当前li在添加这个类名
    160. document.querySelector('.slider-indicator .active').classList.remove('active')
    161. document.querySelector(`.slider-indicator li:nth-child(${i+1})`).classList.add('active')
    162. }
    163. // 3.自动播放模块
    164. let timerId = setInterval(function(){
    165. // 利用js自动调用点击事件 click() 一定加小括号调用函数
    166. next.click()
    167. },1000)
    168. // 4.鼠标经过大盒子,停止定时器
    169. const slider = document.querySelector('.slider')
    170. // 注册事件
    171. slider.addEventListener('mouseenter',function () {
    172. // 停止定时器
    173. clearInterval(timerId)
    174. })
    175. // 5.鼠标离开大盒子,开启定时器
    176. // 注册事件
    177. slider.addEventListener('mouseleave',function () {
    178. // 停止定时器
    179. clearInterval(timerId)
    180. // 开启定时器
    181. timerId = setInterval(function(){
    182. // 利用js自动调用点击事件 click() 一定加小括号调用函数
    183. next.click()
    184. },1000)
    185. })
    186. script>
    187. body>
    188. html>

     

  • 相关阅读:
    11 Fork/Join
    9.Springboot整合Security很全
    信奥中的数学:排列组合
    使用jdbc技术,在数据库中存储大数据对象(使用字节IO流读取图片等给blob等二进制类型数据赋值)
    windows11本地深度学习环境搭建Anacond,keras,tensorflow,pytorch, jupyter notebook
    java毕业设计奇妙店铺电子商务网站源码+lw文档+mybatis+系统+mysql数据库+调试
    【LeetCode】Day122-根据字符出现频率排序 & 最接近原点的 K 个点
    TypeScript(三)面向对象
    富格林:学习安全技能阻挠诱导虚假
    设计模式之策略模式【内附通过工厂方法+枚举实现根据参数调用不同的策略】
  • 原文地址:https://blog.csdn.net/weixin_48719464/article/details/134026082