css

  1. <style>
  2. /* ! 3. 轮播图 */
  3. .slider {
  4. max-width: 750px;
  5. min-width: 320px;
  6. margin: auto;
  7. padding: 0 10px;
  8. }
  9. .slider .imgs {
  10. /* 图片容器必须要有高度,否则下面图片不能正常显示 */
  11. height: 150px;
  12. }
  13. .slider .imgs img {
  14. height: 100%;
  15. width: 100%;
  16. border-radius: 10px;
  17. /* 默认图片全部隐藏,只有有active的图片才显示 */
  18. display: none;
  19. }
  20. .slider .imgs img:hover {
  21. cursor: pointer;
  22. }
  23. /* 默认显示第一张 */
  24. .slider .imgs img.active {
  25. display: block;
  26. }
  27. /* 轮播图按钮组 */
  28. .slider .btns {
  29. /* 按钮水平一排显示,用flex,且水平居中 */
  30. display: flex;
  31. place-content: center;
  32. }
  33. .slider .btns span {
  34. /* 按钮宽高相同,确定显示成一个正圆 */
  35. width: 8px;
  36. height: 8px;
  37. background-color: rgba(255, 255, 255, 0.4);
  38. /* 50%可确保显示为正圆 */
  39. border-radius: 50%;
  40. /* 按钮上外边距负值,可将它上移,可移动到图片中下方 */
  41. margin: -12px 3px 5px;
  42. }
  43. .slider .btns span.active {
  44. background-color: #fff;
  45. }
  46. </style>

HTML

  1. <div class="slider">
  2. <div class="imgs">
  3. <!-- 轮播图默认从第一张开始显示 -->
  4. <img src="./images/banner1.jpg" alt="" data-index="1" class="active" />
  5. <img src="./images/banner2.jpg" alt="" data-index="2" />
  6. <img src="./images/banner3.png" alt="" data-index="3" />
  7. </div>
  8. <!-- 切换按钮数量与图片数量必须一致 -->
  9. <div class="btns">
  10. <span data-index="1" class="active" onclick="setActive()"></span>
  11. <span data-index="2" onclick="setActive()"></span>
  12. <span data-index="3" onclick="setActive()"></span>
  13. </div>
  14. </div>

JS

  1. <script>
  2. // 1. 获取全部图片和按钮
  3. const imgs = document.querySelectorAll('.slider .imgs img')
  4. const btns = document.querySelectorAll('.slider .btns span')
  5. // 2. 设置激活状态
  6. function setActive() {
  7. // 1. 清空图片和所有按钮的激活状态
  8. imgs.forEach(img => img.classList.remove('active'));
  9. btns.forEach(btn => btn.classList.remove('active'));
  10. // 2. 根据按钮的索引data-index来确定应该将哪一张图片显示出来class=active
  11. event.target.classList.add('active')
  12. imgs.forEach(img => {
  13. if (img.dataset.index === event.target.dataset.index) {
  14. img.classList.add('active')
  15. }
  16. })
  17. }
  18. // 首尾相连,实现循环播放
  19. // 自动点击: 事件派发器
  20. // 间歇式触发,每隔一段固定时间会自动触发一次事件
  21. // setInterval: 除了回调和时间外,还可传入第三个参数,做为回调的参数
  22. setInterval((arr) => {
  23. // 1. 头部删除
  24. let i = arr.shift()
  25. // 2. 尾部追加
  26. arr.push(i);
  27. // 3. 事件派发: 模拟用户点击
  28. btns[i].dispatchEvent(new Event('click'))
  29. }, 2000, Object.keys(btns));
  30. // 实现鼠标悬停时自动停止播放, 离开时又自动播放
  31. //鼠标悬停时停止自动播放;
  32. document.querySelector('.slider .imgs').addEventListener('mouseover', () => {
  33. clearInterval(carousel);
  34. console.log('停止自动播放');
  35. });
  36. //开始自动播放
  37. document.querySelector('.slider .imgs').addEventListener('mouseout', () => {
  38. carousel = setInterval(
  39. arr => {
  40. let i = arr.shift();
  41. arr.push(i);
  42. btns[i].dispatchEvent(new Event('click'));
  43. },
  44. 2000,
  45. Object.keys(btns)
  46. );
  47. console.log('开始自动播放');
  48. });
  49. </script>

XHR对象的使用

  1. function getUser1(btn) {
  2. // 1. 创建xhr对象
  3. const xhr = new XMLHttpRequest;
  4. // 2. 响应类型
  5. xhr.responseType = 'json'
  6. // 3. 配置参数
  7. let url = 'http://xhr411.com/users.php?id=2'
  8. xhr.open('GET', url);
  9. // 4. 请求成功的回调
  10. xhr.onload = () => {
  11. // 返回的值
  12. console.log(xhr.response);
  13. //返回的值可以进行操作以及渲染到界面上
  14. }
  15. // 5. 请求失败的回调
  16. xhr.onerror = () => {
  17. // 返回的值
  18. console.log('请求错误');
  19. }
  20. // 6. 发起xhr请求
  21. xhr.send(null)
  22. }

更多相关文章

  1. GifView——Android显示GIF动画
  2. Android各分辨率定义的图片规格
  3. Android(安卓)使用selector改变按钮状态实例详解
  4. Android(安卓)universal-Image-Loader原理详解
  5. Android:使用ViewPager实现左右滑动切换图片 (简单版)
  6. BitmapFactory类
  7. 修改Android开机图片、动画、声音
  8. Android(安卓)ImageView图片自适应
  9. (4.1.10) ImageView图片自适应

随机推荐

  1. android 线性布局几个属性
  2. Android 3D 编程:索引
  3. zbar android sdk源码编译
  4. 如何调试跟踪Android源代码
  5. android字体大小的设置
  6. 初涉Android蓝牙开发
  7. Android能够获取到唯一的设备ID吗?
  8. Android实现圆角矩形和圆形ImageView的方
  9. Android 进程间通信(IPC)
  10. Android Studio 解决The SDK platform-to