JavaScript实现旋转轮播图
发布时间 - 2026-01-11 02:51:07 点击率:次最近一直在学习JavaScript,然后看到旋转轮播图的案例,就尝试着用js做了一个简单的轮播图,因为无法显示动态效果,所以就放个截图:
这个效果是这样的:一共有7张图片,它们会自动地向左滑动,然后左右箭头也可以控制轮播图的左滑和右滑,同时,如果鼠标停在图片上,那么轮播图会停止自动滑动,当鼠标移开时,将会继续向*播。
首先,我这里封装了两个函数(因为暂且还没有学jQuery,所以用了封装函数的方法来实现),第一个函数是$函数,调用可以获取html中的元素,代码如下:
`function $(select){
if (typeof select != 'string') {
console.log('传入的参数有误');
return null;
}
var firstChar = select.charAt(0);
switch(firstChar){
case '#':
return document.getElementById(select.substr(1));
break;
case '.':
if (document.getElementsByClassName){
return document.getElementsByClassName(select.substr(1));
} else {
var result = [];
var allElemnts = document.getElementsByTagName('*');
console.log(allElemnts);
for (var i = 0; i < allElemnts.length; i++){
var e = allElemnts[i];
var className = e.className;
var classArr = className.split(' ');
for (var j = 0; j < classArr.length; j++){
var c = classArr[j];
if (c == select.substr(1)) {
result.push(e);
break;
}
}
}
return result;
}
break;
default :
return document.getElementsByTagName(select);
}
}`
第二个函数是一个动画函数,用json实现多条样式的动态改变,从而达到一个动画效果,代码如下: `
function animate(element, json, fun) {
clearInterval(element.timer);
function getStyle(element, styleName){
if(element.currentStyle){
//ie浏览器下 直接通过currentstyle来获取
//return element.currentStyle.heigh;
return element.currentStyle[styleName];
}else{
var computedStyle = window.getComputedStyle(element,null);
return computedStyle[styleName];
}
}
var isStop = false;
element.timer = setInterval(function () {
isStop = true;
for (var key in json){
var target = json[key];
var current;
if (key == 'opacity') {
//当动画的类型为透明度时 获取的值应该是浮点类型
current = parseFloat(getStyle(element, key)) || 1;
} else {
//其他情况 用整数类型
current = parseInt(getStyle(element, key)) || 0;
}
var step = (target - current) / 10;
if (key != 'opacity') {
step = step > 0 ? Math.ceil(step) : Math.floor(step);
}
current += step;
if (key == 'opacity') {
if (Math.abs(target - current) > 0.01) {
isStop = false;
} else {
current = target;
}
element.style.opacity = current + '';
} else {
if (Math.abs(target-current) > Math.abs(step)) {
isStop = false;
} else {
current = target;
}
if (key == 'zIndex'){
element.style.zIndex = Math.round(current);
} else {
element.style[key] = current + 'px';
}
}
}
if (isStop) {
clearInterval(element.timer);
console.log('动画完成');
if (typeof fun == 'function') {
fun();
}
}
}, 30);
}`
接下来就要写html的部分了,因为只有几张图片,所以html的部分很简单:
<body> <div class="box"> <div class="content"> <ul> <li><a href="#"><img src="./images/1.jpg"></a></li> <li><a href="#"><img src="./images/2.jpg"></a></li> <li><a href="#"><img src="./images/3.jpg"></a></li> <li><a href="#"><img src="./images/4.jpg" class="current"></a></li> <li><a href="#"><img src="./images/5.jpg"></a></li> <li><a href="#"><img src="./images/6.jpg"></a></li> <li><a href="#"><img src="./images/7.jpg"></a></li> </ul> </div> <div class="control"> <a href="javascript:;" id="prev"></a> <a href="javascript:;" id="next"></a> </div> </div> </body>
css样式的部分也不多做叙述。
下面就是JS是部分啦,代码也很简单,理清楚就好
window.onload = function(){
//定位,并给图片设置大小透明度
var json = [{
width: 630,
top: 23,
left: 0,
zIndex: 2,
opacity: 0
},{
width: 630,
top: 23,
left: 0,
zIndex: 3,
opacity: 0
},{
width: 630,
top: 23,
left: 0,
zIndex: 4,
opacity: 0.6
},{
width: 730,
top: 0,
left: 125,
zIndex: 5,
opacity: 1
},{
width: 630,
top: 23,
left: 350,
zIndex: 4,
opacity: 0.6
},{
width: 630,
top: 23,
left: 350,
zIndex: 3,
opacity: 0
},{
width: 630,
top: 23,
left: 350,
zIndex: 2,
opacity: 0
}];
function refreshImageLocatin(index){
//默认情况下 第i张图对应第i个位置
//index=1时 第i个图对应i-1个位置
//也就是第i个图对应i-index的位置
var liArr = $('li');
for(var i = 0; i < liArr.length; i++){
var li = liArr[i];
var locationIndex = i - index;
console.log('i='+i);
console.log('index='+index);
console.log('locationIndex='+locationIndex);
if(locationIndex < 0){
locationIndex += 7;
}
var locationData = json[locationIndex];
animate(li, locationData, null);
}
}
refreshImageLocatin(0);
var index = 0;
$('#next').onclick = function(){
index++;
if(index == 7){
index = 0;
}
refreshImageLocatin(index);
}
$('#prev').onclick = function(){
index--;
if(index < 0){
index = 6;
}
refreshImageLocatin(index);
}
var nextImage = $('#next').onclick;
var contentBox = $('.content')[0];
//自动播放
var timer = setInterval(nextImage, 3000);
//当鼠标移动到图片上,停止播放
contentBox.onmouseover = function(){
clearInterval(timer);
}
contentBox.onmouseout = function(){
timer = setInterval(nextImage ,3000)
}
}
以上就是旋转轮播图的全部内容了,给自己的学习过程做个简单的记录,也顺便巩固一下。
# js
# 轮播图
# js轮播图之旋转木马效果
# JavaScript实现旋转木马轮播图
# js实现旋转木马轮播图效果
# JS实现旋转木马轮播图
# 原生JS实现旋转轮播图+文字内容切换效果【附源码】
# 原生js实现旋转木马轮播图效果
# JS实现旋转木马式图片轮播效果
# 原生JS实现旋转木马式图片轮播插件
# JS实现旋转木马轮播案例
# 自己的
# 是一个
# 当鼠标
# 也不
# 还没有
# 第一个
# 鼠标
# 将会
# 浮点
# 是这样
# 就好
# 也很
# 用了
# 第二个
# 很简单
# 做个
# 停在
# 几张
# 来实现
# 装了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速使用云服务器搭建个人网站?
如何登录建站主机?访问步骤全解析
如何自定义建站之星模板颜色并下载新样式?
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
如何在万网ECS上快速搭建专属网站?
创业网站制作流程,创业网站可靠吗?
Python制作简易注册登录系统
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Python数据仓库与ETL构建实战_Airflow调度流程详解
如何快速上传自定义模板至建站之星?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
香港服务器租用费用高吗?如何避免常见误区?
Python文件操作最佳实践_稳定性说明【指导】
如何在阿里云ECS服务器部署织梦CMS网站?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel中的withCount方法怎么高效统计关联模型数量
Laravel如何实现API速率限制?(Rate Limiting教程)
javascript基本数据类型及类型检测常用方法小结
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何确认建站备案号应放置的具体位置?
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Laravel如何实现一对一模型关联?(Eloquent示例)
Swift中switch语句区间和元组模式匹配
Laravel如何使用Eloquent进行子查询
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
🚀拖拽式CMS建站能否实现高效与个性化并存?
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
专业商城网站制作公司有哪些,pi商城官网是哪个?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
如何用虚拟主机快速搭建网站?详细步骤解析
如何快速搭建自助建站会员专属系统?
大连 网站制作,大连天途有线官网?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
如何在阿里云部署织梦网站?
如何构建满足综合性能需求的优质建站方案?
网站制作价目表怎么做,珍爱网婚介费用多少?
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
HTML 中如何正确使用模板变量为元素的 name 属性赋值
JavaScript实现Fly Bird小游戏

