纯javaScript、jQuery实现个性化图片轮播【推荐】
发布时间 - 2026-01-10 22:23:00 点击率:次纯javaScript实现个性化图片轮播
轮播原理说明<如上图所示>:
1. 画布部分(可视区域)属性说明:overflow:hidden使得超出画布部分隐藏或说不可见。position:relative 会导致自身位置的相对变化,而不会影响其他元素的位置、大小的变化。使得使用了position:absolute 元素相对于画布位置进行定位;
absolute元素脱离了文档结构,产生破坏性,导致父元素坍塌,float元素也会脱离文档结构,absolute元素会悬浮在页面上方,遮挡其他部分显示,这点和PhotoShop图层相似,所以要使用z-index控制出现顺序
2.轮播注意点:左右无限滚动
prev-button 第一张图片的前一张是最后一张图片,
next-button 最后一张图片的下一张图片是第一张,
prev-button、next-button位置的偏移是通过设置prev-img-container、next-img-container的left<相对于画布>属性值
click-select-show-button区域,点击该区域小圆圈是通过上一次图片的所在index,当前点击myIndex, 计算公式:(myIndex-index)*(-图片的宽度width)
3.动画过渡注意点:点击prev-button、next-button、click-select-show-button小圆圈,判定当前是否处于动画状态中
4.定时器setTimeout()、clearTimeout
<实现效果图>
Css样式
/**CSS-style**/
/**画布大小*/
#container {
margin:0 auto;
width: 600px;
height: 400px;
overflow: hidden;/*超出画布部分隐藏*/
position: relative;/*相对定位*/
cursor: pointer;
}
/**图片容器*/
#list {
width: 4200px;
height: 400px;
position: absolute;
z-index:1;
}
#list img { float: left; }
/**轮播选中按钮样式*/
#button {
position: absolute;
bottom: 25px;
left: 175px;
width: 250px;
z-index: 2;
}
#button ul li {
list-style: none;
width: 15px;
border-radius: 50%;
padding: 7.5px;
height: 15px;
margin-right: 10px;
background: green;
float: left;
font:15px/15px "microsoft yahei";
text-align: center;
font-weight: bold;
color: white;
cursor: pointer;
}
#button ul li.chos {
background: orange;
}
#container:hover .arrow{
display: block;
}
#pre {
left: 20px;
}
#next {
right: 20px;
}
/**pre next定位*/
.arrow {
position: absolute;
width: 40px;
height: 40px;
background: black;
z-index: 3;
top: 180px;
text-decoration: none;
text-align: center;
line-height: 40px;
font-size: 40px;
color: white;
opacity: 0.3;
filter: alpha(opacity=0.3);
display: none;
}
/**pre next按钮透明度*/
#container a:hover {
opacity: 0.7;
filter: alpha(opacity=0.7);
}
html代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>纯javaScript实现个性化图片轮播</title> <link rel="stylesheet" type="text/css" href="styles/main.css"> <script type="text/javascript" src="scripts/scroImg.js"></script> </head> <body> <div id="container"> <div id="list" style="left:-600px"> <img src="images/5.jpg"> <img src="images/1.jpg"> <img src="images/2.jpg"> <img src="images/3.jpg"> <img src="images/4.jpg"> <img src="images/5.jpg"> <img src="images/1.jpg"> </div> <div id="button"> <ul> <li index='1'>1</li> <li index='2'>2</li> <li index='3'>3</li> <li index='4'>4</li> <li index='5'>5</li> </ul> </div> <a href="#" class="arrow" id="prev"><</a> <a href="#" class="arrow" id="next">></a> </div> </body> </html>
一、javaScript实现图片轮播
window.onload=function(){
var container=document.getElementById('container');
var list=document.getElementById('list');
var buttons=document.getElementById('button').getElementsByTagName('li');
var prev=document.getElementById('prev');
var next=document.getElementById('next');
var index=1;
var interval=1000;
var timer=null;
var animated=false;
//next
next.onclick=function(){
if (!animated) {
animate(-600);
};
index+=1;
if (index>5) {
index=1;
};
showButton();
console.info('next'+index);
}
//prev
prev.onclick=function(){
if(!animated){
animate(600);
}
index-=1;
if(index<1){
index=5;
}
showButton();
console.info('prev'+index);
}
//animate
function animate(offset){
animated=true;
var left=parseInt(list.style.left)+offset;
var animateTime=600;//位移总时间
var interval=10;//时间间隔
var speed=offset/(animateTime/interval);//每次位移量
var go=function(){//animate内部函数
if ((speed<0 && parseInt(list.style.left)>left) || (speed>0 && parseInt(list.style.left)<left)) {//是否位移
list.style.left=parseInt(list.style.left)+speed+'px';
setTimeout(go,interval)
}else{
list.style.left=left+'px';
if (left<-3000) { //最后一张后面
list.style.left=-600+'px'; //显示前一张
};
if(left>-600){//第一张最前面
list.style.left=-3000+'px';//显示最后一张
}
animated=false;
};
}
go();
}
//chos
function showButton(){
for (var i = 0; i < buttons.length; i++) {
buttons[i].className='';
};
buttons[index-1].className='chos';
}
//buttons-click
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick=function(){
if(this.className=='chos'){
return;
}
var myIndex=parseInt(this.getAttribute('index'));
var offset=(myIndex-index)*-600; //偏移量
animate(offset);
index=myIndex;//set Index
showButton();
}
};
function play(){
timer=setTimeout(function(){
next.click();
play();
},interval)
}
function stop(){
clearInterval(timer);
}
play();
container.onmouseover=function(){
stop();
}
container.onmouseout=function(){
play();
}
}
二、jQuery实现图片轮播
$(function () {
var container = $('#container');
var list = $('#list');
var buttons = $('#container').find('li');
var prev = $('#pre');
var next = $('#next');
var index = 1;
var len = 5;
var interval = 3000;
var timer;
function animate (offset) {
var left = parseInt(list.css('left')) + offset;
if (offset>0) {
offset = '+=' + offset;
}
else {
offset = '-=' + Math.abs(offset);
}
list.animate({'left': offset}, 300, function () {
if(left > -200){
list.css('left', -600 * len);
}
if(left < (-600 * len)) {
list.css('left', -600);
}
});
}
function showButton() {
buttons.eq(index-1).addClass('chos').siblings().removeClass('chos');
}
function play() {
timer = setTimeout(function () {
next.trigger('click');
play();
}, interval);
}
function stop() {
clearTimeout(timer);
}
next.bind('click', function () {
if (list.is(':animated')) {
return;
}
if (index == 5) {
index = 1;
}
else {
index += 1;
}
animate(-600);
showButton();
});
prev.bind('click', function () {
if (list.is(':animated')) {
return;
}
if (index == 1) {
index = 5;
}
else {
index -= 1;
}
animate(600);
showButton();
});
buttons.each(function () {
$(this).bind('click', function () {
if (list.is(':animated') || $(this).attr('class')=='chos') {
return;
}
var myIndex = parseInt($(this).attr('index'));
var offset = -600 * (myIndex - index);
animate(offset);
index = myIndex;
showButton();
})
});
container.hover(stop, play);
play();
});
源码下载 http://pan.baidu.com/s/1kVfnGF1
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# js
# jQuery
# 图片轮播
# 原生js和jquery实现图片轮播淡入淡出效果
# 基于jQuery实现淡入淡出效果轮播图
# 原生js和jQuery实现淡入淡出轮播效果
# jQuery实现图片简单轮播功能示例
# jQuery实现的简单图片轮播效果完整示例
# 使用JQuery实现图片轮播效果的实例(推荐)
# jQuery简单自定义图片轮播插件及用法示例
# jQuery实现的图片轮播效果完整示例
# jQuery的图片轮播插件PgwSlideshow使用详解
# jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
# jQuery实现的淡入淡出图片轮播效果示例
# 第一张
# 相对于
# 文档
# 也会
# 上一
# 所示
# 说不
# 图层
# 要使
# 最前面
# 下一张
# 源码下载
# 计算公式
# 使用了
# 偏移量
# 如上图
# ul
# li
# px
# height
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel怎么调用外部API_Laravel Http Client客户端使用
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Laravel模型事件有哪些_Laravel Model Event生命周期详解
Swift开发中switch语句值绑定模式
创业网站制作流程,创业网站可靠吗?
开心动漫网站制作软件下载,十分开心动画为何停播?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Laravel如何创建自定义Artisan命令?(代码示例)
郑州企业网站制作公司,郑州招聘网站有哪些?
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
Python文件异常处理策略_健壮性说明【指导】
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
如何将凡科建站内容保存为本地文件?
如何在阿里云通过域名搭建网站?
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
网站建设要注意的标准 促进网站用户好感度!
Laravel如何与Pusher实现实时通信?(WebSocket示例)
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
php 三元运算符实例详细介绍
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
北京网站制作公司哪家好一点,北京租房网站有哪些?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
微信小程序 闭包写法详细介绍
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在万网ECS上快速搭建专属网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何用PHP快速搭建高效网站?分步指南
Laravel中的withCount方法怎么高效统计关联模型数量
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
大连 网站制作,大连天途有线官网?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Laravel如何创建自定义中间件?(Middleware代码示例)
中国移动官方网站首页入口 中国移动官网网页登录
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何在Tomcat中配置并部署网站项目?
Java垃圾回收器的方法和原理总结
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何在VPS电脑上快速搭建网站?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
手机软键盘弹出时影响布局的解决方法
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
html5audio标签播放结束怎么触发事件_onended回调方法【教程】

