当前位置: 首页 > news >正文

APIs案例及知识点串讲(上)

一.轮播图专题

CSS代码

<style>* {box-sizing: border-box;}.slider {width: 560px;height: 400px;overflow: hidden;}.slider-wrapper {width: 100%;height: 320px;}.slider-wrapper img {width: 100%;height: 100%;display: block;}.slider-footer {height: 80px;background-color: rgb(100, 67, 68);padding: 12px 12px 0 12px;position: relative;}.slider-footer .toggle {position: absolute;right: 0;top: 12px;display: flex;}.slider-footer .toggle button {margin-right: 12px;width: 28px;height: 28px;appearance: none;border: none;background: rgba(255, 255, 255, 0.1);color: #fff;border-radius: 4px;cursor: pointer;}.slider-footer .toggle button:hover {background: rgba(255, 255, 255, 0.2);}.slider-footer p {margin: 0;color: #fff;font-size: 18px;margin-bottom: 10px;}.slider-indicator {margin: 0;padding: 0;list-style: none;display: flex;align-items: center;}.slider-indicator li {width: 8px;height: 8px;margin: 4px;border-radius: 50%;background: #fff;opacity: 0.4;cursor: pointer;}.slider-indicator li.active {width: 12px;height: 12px;opacity: 1;}</style>

随机轮播图

  <div class="slider"><div class="slider-wrapper"><img src="./images/slider01.jpg" alt="" /></div><div class="slider-footer"><p>对人类来说会不会太超前了?</p><ul class="slider-indicator"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><div class="toggle"><button class="prev"><</button><button class="next">></button></div></div></div><script>// const arr = [1, 3]// arr[0]// 1. 初始数据const sliderData = [{ url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },{ url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },{ url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },{ url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },{ url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },{ url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },{ url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },{ url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' },]const random = parseInt(Math.random() * sliderData.length)const img = document.querySelector('.slider-wrapper img')img.src = sliderData[random].urlconst p = document.querySelector('.slider-footer p')p.innerHTML = sliderData[random].titleconst footer = document.querySelector('.slider-footer')footer.style.backgroundColor = sliderData[random].colorconst li = document.querySelector(`.slider-indicator li:nth-child(${random + 1})`)li.classList.add('active')</script>

知识点凝练:

1. 随机抽取数组中元素值

    const random = Math.floor(Math.random() * arr.length)

2. 选择匹配的第一个元素

参数: 包含一个或多个有效的CSS选择器  字符串

返回值:CSS选择器匹配的第一个元素,一个HTMLElement对象。如果没有匹配到,则返回null

3.通过style属性操作CSS

注意:

1.修改样式通过style属性引出

2.如果属性有-连接符,需要转换为小驼峰命名法

3.赋值的时候,需要的时候不要忘记加css单位

4.值一定是个字符串


定时轮播图

<div class="slider"><div class="slider-wrapper"><img src="./images/slider01.jpg" alt="" /></div><div class="slider-footer"><p>对人类来说会不会太超前了?</p><ul class="slider-indicator"><li class="active"></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><div class="toggle"><button class="prev">< </button><button class="next">></button></div></div></div><script>// 1. 初始数据const sliderData = [{ url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },{ url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },{ url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },{ url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },{ url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },{ url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },{ url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },{ url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' },]const img = document.querySelector('.slider-wrapper img')const p = document.querySelector('.slider-footer p')const footer = document.querySelector('.slider-footer')let i = 0  //信号量:控制图片张数setInterval(function () {i++//无缝衔接位置if (i >= sliderData.length) {i = 0}img.src = sliderData[i].urlp.innerHTML = sliderData[i].titlefooter.style.color = sliderData[i].color//小圆点//先删除以前的activedocument.querySelector('.slider-indicator .active').classList.remove('active')//只让当前li添加activedocument.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')}, 1000)</script>

案例叮嘱:注意小圆点的处理方式 

通过classList操作类控制CSS(重点)

为了解决className容易覆盖以前的类名,我们可以通过classList方式追加和删除类名

切换类:有就删掉,没有就加上

完整版轮播图 

<div class="slider"><div class="slider-wrapper"><img src="./images/slider01.jpg" alt="" /></div><div class="slider-footer"><p>对人类来说会不会太超前了?</p><ul class="slider-indicator"><li class="active"></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><div class="toggle"><button class="prev">< </button><button class="next">></button></div></div></div><script>// 1. 初始数据const data = [{ url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },{ url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },{ url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },{ url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },{ url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },{ url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },{ url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },{ url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' },]const next = document.querySelector('.next')const img = document.querySelector('.slider-wrapper img')const p = document.querySelector('.slider-footer p')const footer = document.querySelector('.slider-footer')let i = 0 // 信号量控制图片播放张数next.addEventListener('click', function () {i++if (i >= data.length) i = 0//调用函数common()})const prev = document.querySelector('.prev')prev.addEventListener('click', function () {i--if (i < 0) i = data.length - 1//调用函数common()})//声明一个渲染函数作为复用function common() {img.arc = data[i].urlp.innerHTML = data[i].titlefooter.style.backgroundColor = data[i].colordocument.querySelector('.slider-indicator .active').classList.remove('active')document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')}//自动播放let n = setInterval(function () {//利用js自动调用点击事件  click() 一定要加小括号next.click()}, 1000)//鼠标经过大盒子停止计时器const slider = document.querySelector('.slider')slider.addEventListener('mouseenter', function () {clearInterval(n)})//鼠标离开大盒子开启计时器slider.addEventListener('mouseleave', function () {clearInterval(n)n = setInterval(function () {//利用js自动调用点击事件  click() 一定要加小括号next.click()}, 1000)})</script>

 案例叮嘱:

1.当两个事件监听代码大部分一样时,可以把公共部分提取封装成一个新函数,从而可以有效简化代码

2.利用js自动调用点击事件  click() 一定要加小括号

3.当鼠标离开大盒子开启计时器时,一定不能省略n,因为如果不加n下次开启计时器时就是一个新的计时器就关不掉了;一定不能加上let,因为把let加上之后就成了局部变量,外部就再也关不了这个计时器了。还有就是此时先关再开计时器

 n = setInterval(function () { next.click() }, 1000)

二.随机点名案例

CSS代码

<style>* {margin: 0;padding: 0;}h2 {text-align: center;}.box {width: 600px;margin: 50px auto;display: flex;font-size: 25px;line-height: 40px;}.qs {width: 450px;height: 40px;color: red;}.btns {text-align: center;}.btns button {width: 120px;height: 35px;margin: 0 50px;}</style>
<h2>随机点名</h2><div class="box"><span>名字是:</span><div class="qs">这里显示姓名</div></div><div class="btns"><button class="start">开始</button><button class="end">结束</button></div><script>// 数据数组const arr = ['马超', '黄忠', '赵云', '关羽', '张飞']let n = 0//声明定时器的全局变量//随机号也要全局变量let random = 0const start = document.querySelector('.start')const qs = document.querySelector('.qs')const end = document.querySelector('.end')start.addEventListener('click', function () {n = setInterval(function () {random = Math.floor(Math.random() * arr.length)qs.innerHTML = arr[random]}, 35)//如果数组里面只有一个值了,让两个按钮禁用就可以if (arr.length === 1) {start.disabled = end.disabled = true}})end.addEventListener('click', function () {clearInterval(n)arr.splice(random, 1)//注意splice函数写法})</script>

案例叮嘱:

1. 注意函数的作用域只在其内部,如果在别处还需要使用,则需将其升级为全局变量,这里的n和random两个全局变量使用let定义

2.要考虑到每次抽取完之后需要将抽取元素删除的情况,使用splice函数时注意语法

数组. splice() 方法 删除指定元素

· start 起始位置: 指定修改的开始位置(从0计数)

· deleteCount: 表示要移除的数组元素的个数

                        可选的。如果省略则默认从指定的起始位置删除到最后

3. 还需要考虑到当数组中只剩下一个值时,必须将两个按钮禁用

表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示,如果为true代表添加了该属性如果是false代表移除了该属性,比如:disabled、checked、selected

http://www.lryc.cn/news/589721.html

相关文章:

  • FreeRTOS中断管理STM32
  • Java-74 深入浅出 RPC Dubbo Admin可视化管理 安装使用 源码编译、Docker启动
  • 【docker】将本地镜像打包部署到服务器上
  • LVS:高性能负载均衡利器
  • CVE-2005-4900:TLS SHA-1 安全漏洞修复详解
  • WIN10系统优化篇(一)
  • Samba服务器
  • 【RTSP从零实践】12、TCP传输H264格式RTP包(RTP_over_TCP)的RTSP服务器(附带源码)
  • Vue 结合 Zabbix API 获取服务器 CPU、内存、GPU 等数据
  • Thymeleaf 基础语法与标准表达式详解
  • [Linux入门] Linux 账号和权限管理入门:从基础到实践
  • 如何通过扫描电镜检测汽车清洁度中的硬质颗粒并获取成分信息
  • 【云原生网络】Istio基础篇
  • 数字IC后端培训教程之数字IC后端项目典型问题解析
  • 轻松将文件从 iPhone 传输到 Mac
  • 记一次大数据量表数据分表
  • 【世纪龙科技】汽车发动机拆装检修仿真教学软件-仿真精进技能
  • 汽车功能安全-在系统层面验证TSR实例
  • 微服务引擎 MSE 及云原生 API 网关 2025 年 5 月产品动态
  • 【龙泽科技】新能源汽车电驱动总成装调与检修仿真教学软件
  • Excel 导入导出工具类文档
  • 维基艺术图片: 对比模型, 小模型 vs 大模型 (4)
  • 【Unity】Mono相关理论知识学习
  • linux服务器traffic control的使用
  • RAG的文档问答系统-PYTHON
  • 微信小程序141~150
  • Swift 条件语句
  • Excel转PDF的三种方法
  • 【iOS】源码阅读(六)——方法交换
  • 数字魔方--玩转魔方的助手