网站建设与管理学什么/plc培训机构哪家最好

网站建设与管理学什么,plc培训机构哪家最好,wix和wordpress,群晖wordpress去除端口《HTML CSS JS 打造炫酷轮播图详解》 一、项目概述 本次项目旨在使用 HTML、CSS 和 JavaScript 实现一个具有基本功能的轮播图,包括图片自动轮播、上一张 / 下一张按钮切换、小圆点指示与切换等功能,以提升网页的交互性和视觉吸引力。 二、实现步骤…

《HTML + CSS + JS 打造炫酷轮播图详解》

一、项目概述

本次项目旨在使用 HTML、CSS 和 JavaScript 实现一个具有基本功能的轮播图,包括图片自动轮播、上一张 / 下一张按钮切换、小圆点指示与切换等功能,以提升网页的交互性和视觉吸引力。

二、实现步骤

(一)图片拼接做出架构

1、HTML 结构搭建

  • 在 HTML 文件中,首先创建一个 div 容器,设置 idbanner,作为轮播图的整体框架。
  • banner 内部,创建一个无序列表 ulidlist,用于存放轮播的图片。每个图片项为 li 元素,li 内部嵌套 img 标签引入图片资源,如:
<div id="banner"><ul id="list"><li><img src="./img/p2.jpg"></li><li><img src="./img/p3.jpg"></li><li><img src="./img/p2 - 副本.jpg"></li><li><img src="./img/p3 - 副本.jpg"></li><li><img src="./img/p2.jpg"></li></ul>
</div>
  • 接着创建另一个无序列表 ulidicolist,用于存放小圆点,每个小圆点为 li 元素,初始内容为数字序号,用于标识对应的图片:
<ul id="icolist"><li>1</li><li>2</li><li>3</li><li>4</li>
</ul>
  • 最后,创建两个 div 元素,分别作为向前和向后的按钮,设置 idprenex,并添加相应的箭头符号作为内容:
<div class="prev" id="pre"></div>
<div class="next" id="nex"></div>

2、CSS 样式设置

  • 使用通配符选择器 * 对所有元素进行初始化,去除默认的 margin、padding 和列表样式:
* {margin: 0;padding: 0;list-style: none;
}
  • banner 容器设置宽度 650px、高度 250px,添加 2px 灰色边框,设置相对定位 position: relative,并隐藏超出部分 overflow: hidden,使其水平居中 margin:100px auto 0;
#banner {width: 650px;height: 250px;border: 2px solid #999;position: relative;overflow: hidden;margin:100px auto 0;
}
  • 对于图片列表 #list,设置宽度 3500px(考虑到图片数量和切换效果,确保足够宽度容纳所有图片移动),高度 250px,使其内部的 li 元素左浮动 float: left,图片宽度 700px、高度 250px 以适应容器:
#list {width: 3500px;height: 250px;
}
#list li {float: left;
}
#list li img {width: 700px;height: 250px;
}
  • 向前按钮 .prev 和向后按钮 .next,设置宽度 30px、高度 40px,背景色为灰色 #999,文字颜色白色 color: aliceblue,水平垂直居中 text-align: center; line-height: 40px,绝对定位在容器底部左右两侧合适位置,设置 cursor: pointer 以显示手型指针:
.prev{width:30px;height:40px;background-color: #999;color: aliceblue;text-align: center;line-height: 40px;position:absolute;bottom:45%;left:5px;cursor: pointer;
}
.next{width:30px;height:40px;background-color: #999;color: aliceblue;text-align: center;line-height: 40px;position:absolute;bottom:45%;right:5px;cursor: pointer;
}
  • 小圆点 #icolist 列表设置绝对定位在容器右下角,li 元素设置宽度 30px、高度 30px,圆形 border-radius: 50%,灰色背景 background: #999,白色文字 color: #fff,水平垂直居中,左浮动并设置一定间距 margin-left: 5px,同样设置 cursor: pointer
#icolist {position: absolute;right:10px;bottom: 10px;
}
#icolist li{width:30px;height:30px;border-radius: 50%;background: #999;color: #fff;text-align: center;line-height: 30px;float: left;margin-left: 5px;cursor: pointer;
}

(二)定时器实现简单轮播效果

1、在 JavaScript 代码中,首先等待页面加载完成,使用 window.onload 事件:

window.onload = function() {// 后续代码将写在此处
}

2、在 window.onload 函数内部,获取图片列表元素 eimglist 和用于控制轮播的变量 left(初始为 0,表示图片列表的初始偏移量),并定义定时器相关变量 timer

var eimglist = document.querySelector('#list');
var left = 0;
var timer;

3、创建run函数,用于实现图片的自动轮播逻辑:

  • 首先判断如果图片向左滚动到最后一张(即 left < -2800,因为每张图片宽度 700px,共 4 张图片循环,总偏移量为 -2800px),则将 left 重置为 0,实现循环效果:
if (left < -2800) {left = 0;
}
  • 计算当前显示图片的序号 m,通过 Math.floor(-left/700),取整得到当前图片是第几张:
var m = Math.floor(-left/700);
  • 处理图片滚动时的特殊情况,当图片刚好滚动完一轮(即 left % 700 == 0),设置一个较小的偏移量 n = 1200,模拟快速切换到下一轮第一张图片的效果,否则设置常规偏移量 n = 10
var n = (left % 700 == 0)? n = 1200 : n = 10;
  • 更新图片列表的 marginLeft 属性,实现图片向左移动:
left -= 10;
list.style.marginLeft = left + 'px'
  • 使用 setTimeout 递归调用 run 函数,实现定时轮播,间隔时间为 n 毫秒:
timer = setTimeout(run,n);

(三)做出上一张下一张按钮

(此时 banner 中 overflow:hidden 需要先注释掉,要不然看不到那两个按钮),此时这个要做决定定位,并给他们添加点击事件)

1、在 CSS 中,由于按钮默认被 overflow:hidden 隐藏,暂时注释掉 banner 容器的 overflow:hidden 属性,以便能看到按钮并调整位置:

/* #banner {overflow: hidden;
} */

2、在 JavaScript 中,获取向前按钮 prev_btn 和向后按钮 next_btn

var prev_btn = document.getElementById('pre');
var next_btn = document.getElementById('nex');

3、给向前按钮添加点击事件处理函数:

  • 计算当前图片的上一张图片序号 prevgo,通过 Math.floor(-left/700)+1,并处理边界情况,当 prevgo == 0(即已经是第一张图片,点击上一张应切换到最后一张),将 prevgo 设置为 3:
prev_btn.onclick = function() {let prevgo = Math.floor(-left/700)+1;if(prevgo == 0) {prevgo = 3;}// 后续调用图片定位函数
}

4、给向后按钮添加点击事件处理函数:

  • 类似地,计算当前图片的下一张图片序号 nextgo,通过 Math.floor(-left/700)+1,并处理边界情况,当 nextgo == 4(即已经是最后一张图片,点击下一张应切换到第一张),将 nextgo 设置为 0:
next_btn.onclick = function() {let nextgo = Math.floor(-left/700)+1;if(nextgo == 4) {nextgo = 0;}// 后续调用图片定位函数
}

(四)实现上一张下一张代码

我们做一个 imgchange() 图片定位函数

1、在 JavaScript 中,创建imgchange函数:

  • 函数接收一个参数 n,表示要切换到的图片序号,根据序号计算图片列表需要的偏移量 lt,通过 -(n*700),并更新图片列表的 marginLeft 属性,同时更新全局变量 left
function imgchange(n) {let lt = -(n*700);list.style.marginLeft = lt + 'px';left = lt;
}

2、在向前按钮和向后按钮的点击事件处理函数中,分别调用 imgchange 函数传入计算好的 prevgonextgo

prev_btn.onclick = function() {let prevgo = Math.floor(-left/700)+1;if(prevgo == 0) {prevgo = 3;}imgchange(prevgo);
}
next_btn.onclick = function() {let nextgo = Math.floor(-left/700)+1;if(nextgo == 4) {nextgo = 0;}imgchange(nextgo);
}

(五)做出轮播图上的四个小圆点

1、在 HTML 结构中的 #icolist 列表已经创建了四个 li 元素作为小圆点,初始内容为数字 1 - 4,用于标识图片序号。

2、在 CSS 样式中,已经对 #icolist 及其内部 li 元素进行了样式设置,使其呈现为圆形、灰色背景、白色文字并在轮播图右下角合理排列,且鼠标悬停时有手型指针效果。

(六)小圆点跟着图片滚动变红,做一个 icochange() 圆点跟随函数

1、在 JavaScript 中,创建icochange函数:

  • 首先使用 for 循环遍历所有小圆点 esico(通过 document.getElementById('icolist').getElementsByTagName('li') 获取),将它们的背景色清空:
function icochange(m) {for(let index = 0; index < esico.length; index++) {esico[index].style.backgroundColor = '';}
  • 然后根据传入的当前图片序号 m,判断如果 m 小于小圆点数量 esico.length,将对应序号的小圆点背景色设置为红色:
if(m < esico.length) {esico[m].style.backgroundColor = 'red';
}
}

2、在 run 函数中,每次图片切换时调用 icochange 函数传入当前图片序号 m,实现小圆点跟随图片变色:

function run() {// 其他代码...icochange(m);// 其他代码...
}

(七)点击小圆点切图,完成最终效果

1、在 JavaScript 中,给小圆点列表eicolist

添加点击事件处理函数:

  • 获取点击的目标元素 tg,通过 event.target,并从目标元素的 innerHTML 中获取点击的小圆点序号 ico,注意要减 1 以匹配图片序号(因为小圆点内容从 1 开始,而图片序号从 0 开始):
eicolist.onclick = function () {var tg = event.target;var ico = tg.innerHTML - 1;// 后续调用图片定位和小圆点变色函数
}

2、在点击事件处理函数中,分别调用 imgchange 函数传入 ico 实现图片切换,调用 icochange 函数传入 ico 实现对应小圆点变色:

eicolist.onclick = function () {var tg = event.target;var ico = tg.innerHTML - 1;imgchange(ico);icochange(ico);
}

3、最后,为了优化用户体验,当鼠标悬停在图片列表上时,停止轮播,移开后继续轮播:

  • 给图片列表 eimglist 添加 onmouseover 事件处理函数,在其中使用 clearTimeout 停止定时器:
eimglist.onmouseover = function() {clearTimeout(timer);
}
  • 给图片列表 eimglist 添加 onmouseout 事件处理函数,在其中调用 run 函数重新启动轮播:
eimglist.onmouseout = function() {run();
}

三、全部代码

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style type="text/css">* {margin: 0;padding: 0;list-style: none;}#banner {width: 650px;height: 250px;border: 2px solid #999;position: relative;overflow: hidden;margin:100px auto 0;}/* 轮播图列表图片 */#list {width: 3500px;height: 250px;}#list li {float: left;}#list li img {width: 700px;height: 250px;}/* 向前的按钮 */.prev{width:30px;height:40px;background-color: #999;color: aliceblue;text-align: center;line-height: 40px;position:absolute;bottom:45%;left:5px;cursor: pointer;}/* 向后按钮 */.next{width:30px;height:40px;background-color: #999;color: aliceblue;text-align: center;line-height: 40px;position:absolute;bottom:45%;right:5px;cursor: pointer;}/* 小圆点 */#icolist{position: absolute;right:10px;bottom: 10px;}#icolist li{width:30px;height:30px;border-radius: 50%;background: #999;color: #fff;text-align: center;line-height: 30px;float: left;margin-left: 5px;cursor: pointer;}</style><script>window.onload = function() {var prev_btn=document.getElementById('pre')var next_btn=document.getElementById('nex')// 获取小圆点的li标签var esico=document.getElementById('icolist').getElementsByTagName('li');var eicolist=document.querySelector('#icolist');// 获取图片列表元素var eimglist=document.querySelector('#list');var left = 0;var timer;run()function run() {// 如果滚动完,重新开始if (left < -2800) {left = 0;}// 常见变量m获取当前图片序号var m=Math.floor(-left/700);// 此时轮播图尾部有一张空白,我们需要补接第一张才不会有空,我们添加一张图片,修改图片列表宽度var n = (left % 700== 0) ? n = 1200 : n = 10;left -= 10;list.style.marginLeft = left + 'px'timer = setTimeout(run,n);// 调用icochange进行小圆点变化icochange(m);}// 我们做一个图片定位函数function imgchange(n){let lt=-(n*700);list.style.marginLeft=lt+'px';left=lt;}prev_btn.onclick=function(){let prevgo=Math.floor(-left/700)+1;if(prevgo==0){prevgo=3;}imgchange(prevgo)}next_btn.onclick=function(){let nextgo=Math.floor(-left/700)+1;if(nextgo==4){nextgo=0;}imgchange(nextgo)}// icochange()圆点跟随函数function icochange(m){// 通过for循环所有li元素背景色清空for(let index=0;index<esico.length;index++){esico[index].style.backgroundColor='';}// 当图片所在的小圆点设置背景色为红色if(m<esico.length){esico[m].style.backgroundColor='red';}}// 创建列表元素点击事件eicolist.onclick=function (){// tg获取事件目标元素var tg=event.target;// 通过ico获取点击的序号var ico=tg.innerHTML-1;imgchange(ico);icochange(ico);}// 鼠标在图片列表上时轮播停止,移开后又启动eimglist.onmouseover=function(){clearTimeout(timer);}eimglist.onmouseout=function(){run();}}</script></head><body><div id="banner"><ul id="list"><li><img src="./img/p2.jpg"></li><li><img src="./img/p3.jpg"></li><li><img src="./img/p2 - 副本.jpg"></li><li><img src="./img/p3 - 副本.jpg"></li><li><img src="./img/p2.jpg"></li></ul><!-- 小圆点 --><ul id="icolist"><li>1</li><li>2</li><li>3</li><li>4</li></ul><!-- 向前向后按钮 --><div class="prev" id="pre"></div><div class="next" id="nex"></div></div></body>
</html>

四、总结

通过以上步骤,逐步构建了一个完整的轮播图功能。从最初的 HTML 结构搭建,到 CSS 样式美化,再到 JavaScript 实现复杂的交互逻辑,包括定时器控制自动轮播、按钮点击切换、小圆点指示与交互等。在实现过程中,需要注意变量的管理、边界情况的处理以及元素的样式和定位协调,以确保轮播图的流畅运行和良好展示效果。同时,这种实现方式也为进一步扩展轮播图功能,如添加动画效果、响应式设计等提供了基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

257. 二叉树的所有路径(递归+回溯)

257. 二叉树的所有路径 力扣题目链接(opens new window) 给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 思路&#xff1a;在叶子节点收割结果&#xff0c;如果不是叶子节点&#xff0c;则依次处理左右子树&a…

CSDN博客:Markdown编辑语法教程总结教程(中)

❤个人主页&#xff1a;折枝寄北的博客 Markdown编辑语法教程总结 前言1. 列表1.1 无序列表1.2 有序列表1.3 待办事项列表1.4 自定义列表 2. 图片2.1 直接插入图片2.2 插入带尺寸的图片2.3 插入宽度确定&#xff0c;高度等比例的图片2.4 插入高度确定宽度等比例的图片2.5 插入居…

RK3588部署YOLOv8(2):OpenCV和RGA实现模型前处理对比

目录 前言 1. 结果对比 1.1 时间对比 1.2 CPU和NPU占用对比 2. RGA实现YOLO前处理 2.1 实现思路 2.2 处理类的声明 2.3 处理类的实现 总结 前言 RK平台上有RGA (Raster Graphic Acceleration Unit) 加速&#xff0c;使用RGA可以减少资源占用、加速图片处理速度。因此…

SNIPAR:快速实现亲缘个体的基因型分离与推断

SNIPAR&#xff1a;快速实现亲缘个体的基因型分离与推断 近日&#xff0c;英国剑桥大学研究团队在Nature Genetics上发表了最新研究成果——SNIPAR&#xff08;SNP-based Inference of Pedigree relationship, Ancestry, and Recombination&#xff09;。这一强大的工具可以帮助…

阿里云操作系统控制台评测:国产AI+运维 一站式运维管理平台

阿里云操作系统控制台评测&#xff1a;国产AI运维 一站式运维管理平台 引言 随着云计算技术的飞速发展&#xff0c;企业在云端的运维管理面临更高的要求。阿里云操作系统控制台作为一款集运维管理、智能助手和系统诊断等多功能于一体的工具&#xff0c;正逐步成为企业高效管理…

大语言模型学习--向量数据库Milvus实践

Milvus是目前比较流行的开源向量数据库&#xff0c;其官网地址 Milvus 是什么&#xff1f; | Milvus 文档 1.Milvus简介 Milvus 是一种高性能、高扩展性的向量数据库。Milvus 提供强大的数据建模功能&#xff0c;能够将非结构化或多模式数据组织成结构化的 Collections。它支…

Visual Studio 安装及使用教程(Windows)【安装】

文章目录 一、 Visual Studio 下载1. 官网下载2. 其它渠道 二、Visual Studio 安装三、Visual Studio 使用四、Visual Studio 其它设置1. 桌面快捷方式2. 更改主题、字体大小 软件 / 环境安装及配置目录 一、 Visual Studio 下载 1. 官网下载 安装地址&#xff1a;https://vi…

关于ngx-datatable no data empty message自定义模板解决方案

背景&#xff1a;由于ngx-dataable插件默认没有数据时显示的文案是no data to display&#xff0c;且没有任何样式。这里希望通过自定义模板来实现。但目前github中有一个案例是通过设置代码&#xff1a; https://swimlane.github.io/ngx-datatable/empty** <ngx-datatable…

Matlab 双线性插值(二维)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 双线性插值是一种 二维插值方法,用于计算 栅格(Grid) 或 像素点 之间的插值值。它主要用于 图像缩放、旋转、变换 等操作,以在新像素位置估算灰度值或颜色值。 如上图所示,假设存在一个二维离散函数(如图像)…

coding ability 展开第二幕(双指针——巩固篇)超详细!!!!

文章目录 前言有效的三角形个数思路 查找总价格为目标值的两个商品思路 两数之和思路 三数之和思路 四数之和思路 总结 前言 本专栏的上篇&#xff0c;讲述了双指针的一些基础的算法习题 今天我们来学习更进一步的双指针用法吧 其实也是大相径庭&#xff0c;和前面的差不多&…

项目实操分享:一个基于 Flask 的音乐生成系统,能够根据用户指定的参数自动生成 MIDI 音乐并转换为音频文件

在线体验音乐创作&#xff1a;AI Music Creator - AI Music Creator 体验者账号密码admin/admin123 系统架构 1.1 核心组件 MusicGenerator 类 负责音乐生成的核心逻辑 包含 MIDI 生成和音频转换功能 管理音乐参数和音轨生成 FluidSynth 集成 用于 MIDI 到音频的转换 …

计算机:基于深度学习的Web应用安全漏洞检测与扫描

目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 网络爬虫 1.2 漏洞检测 二、 数据集 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 最后 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,…

win32汇编环境,网络编程入门之二

;运行效果 ;win32汇编环境,网络编程入门之二 ;本教程在前一教程的基础上,研究一下如何得到服务器的返回的信息 ;正常的逻辑是连接上了,然后我发送什么,它返回什么,但是这有一个很尴尬的问题。 ;就是如何表现出来。因为网络可能有延迟,这个延迟并不确定有多久。 ;而程序是顺…

【高分论文密码】AI大模型和R语言的全类型科研图形绘制,从画图、标注、改图、美化、组合、排序分解科研绘图每个步骤

在科研成果竞争日益激烈的当下&#xff0c;「一图胜千言」已成为高水平SCI期刊的硬性门槛——数据显示很多情况的拒稿与图表质量直接相关。科研人员普遍面临的工具效率低、设计规范缺失、多维数据呈现难等痛点&#xff0c;因此科研绘图已成为成果撰写中的至关重要的一个环节&am…

大语言模型-1.2-大模型技术基础

简介 本博客内容是《大语言模型》一书的读书笔记&#xff0c;该书是中国人民大学高瓴人工智能学院赵鑫教授团队出品&#xff0c;覆盖大语言模型训练与使用的全流程&#xff0c;从预训练到微调与对齐&#xff0c;从使用技术到评测应用&#xff0c;帮助学员全面掌握大语言模型的…

uni-app打包成H5使用相对路径

网上找了一圈&#xff0c;没用&#xff0c;各种试&#xff0c;终于给试出来了&#xff0c;主要是网络上的没有第二步&#xff0c;只有第一步&#xff0c;导致打包之后请求的路径没有带上域名 运行的基础路径设置为./ config.js文件里面的baseUrl路径改成空字符&#xff0c;千万…

【Linux内核系列】:文件系统

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz ★★★ 本文前置知识&#xff1a; 文件系统初识 那么在我们此前关于文件的学习中&#xff0c;我们学习的都是进程与打开的文件之间的关系&#xff0c;以及打开的文件如何进行管理…

git commit messege 模板设置 (规范化管理git)

配置方法 git config --global core.editor vim &#xff08;设置 Git 的默认编辑器为 Vim&#xff09;在用户根目录下&#xff08;~&#xff09;&#xff0c;创建一个.git_commit_msg文件&#xff0c;然后把下面的内容拷贝到文件中并保存。 [version][模块][类型]{解决xxx问题…

ChatGPT4.5详细介绍和API调用详细教程

OpenAI在2月27日发布GPT-4.5的研究预览版——这是迄今为止OpenAI最强大、最出色的聊天模型。GPT-4.5在扩大预训练和微调规模方面迈出了重要的一步。通过扩大无监督学习的规模&#xff0c;GPT-4.5提升了识别内容中的模式、建立内容关联和生成对于内容的见解的能力&#xff0c;但…

AI 中对内存的庞大需求

刚接触AI时&#xff0c;只知道AI对显存的要求很高&#xff0c;但慢慢发现&#xff0c;AI对内存的要求也越来越高了。 最近尝试玩下 wan 2.1 &#xff0c;进行图生视频&#xff0c;使用comfyui官方工作流&#xff0c;720p&#xff08;720*1280&#xff09;53帧&#xff0c;结果…