一. 效果图
二. 功能介绍
1. 支持图片自动轮播和非自动轮播
2. 支持点击和滑动。
三. 简单介绍
代码都有注释,逻辑简单,不做更多赘述。
1. 在你的html中添加一行。
<section class="slider-wrap" style="height:160px" id="banner"></section>
2. 在你的处理页面逻辑的JS代码中添加以下代码:
(1)先是动态加载html。
(2)然后调用slider并且传入参数。
// banner
// bannerList结构:[{image: ..., url: ...}, {...}, {...}]
var bannerList = ...;
var bannerHTML = bannerList ? this.renderBanner(bannerList) : '';
$("#banner").html(bannerHTML);
$("#banner").slider({
"autoScroll": true,
"infinite": true
});
renderBanner: function(bannerList) {
var html = '<ul class="slider-list">';
$.each(bannerList, function(index, item) {
var url = item["url"].match(/./) == '/' ? 'https://simu.dahuo.la' + item["url"] : item["url"];
html += '<li class="slider-item openParam" data-param="' + url + '"' + 'data-baidu-action="banner" data-baidu-label="' + (parseInt(index) + 1) + '">' +
'<div class="img-wrap"><img class="banner-image" src="' + item["image"] + '"/></div></li>';
});
html += '</ul>';
return html;
},
3. css样式代码
注意:部分图片资源需要更换。
.slider-wrap {
width: 100%;
position: relative;
overflow: hidden;
}
.slider-list {
display: -webkit-box;
width: 100%;
height: 100%;
}
.slider-item {
width: 100%;
list-style: none;
}
.slider-item a {
display: block;
}
.slider-item img {
width: 100%;
}
.transitionable {
-webkit-transition: all 0.3s ease-in-out;
}
.slider-page {
width: 100%;
position: absolute;
bottom: 5px;
left: 0;
text-align: center;
}
.slider-page ul {
display: inline-block;
text-align: center;
}
.slider-page ul li {
display: inline-block;
vertical-align: top;
width: 6px;
height: 6px;
margin: 0 5px;
border-radius: 50%;
background: rgba(255, 255, 255, .5)
}
.slider-page ul li.active {
background: #fff
}
.img-wrap {
width: 100%;
height: 100%;
background: #fafafa url("../images/loading.gif") no-repeat center center;
}
4. 插件原代码:
已经测试,jQuery和Zepto都适用。
复制代码
/*
* slider
*/
;
(function($) {
$.extend($.fn, {
slider: function(obj) {
this.each(function() {
// 当前Zepto对象
var $self = $(this);
var dom = {
"wrap": $self.find(".slider-list"),
"item": $self.find(".slider-item"),
"firstItem": $self.find(".slider-item").first(),
"lastItem": $self.find(".slider-item").last(),
"pagelist": null,
"pageItem": null,
};
var settings = {
"len": dom.item.length,
"width": dom.wrap.width(),
"startX": 0,
"startY": 0,
"index": obj ? (obj.infinite ? 1 : 0) : 0,
"distance": 0,
"timer": null,
"autoScroll": obj ? (obj.autoScroll ? true : false) : false,
"infinite": obj ? (obj.infinite ? true : false) : false
};
var funs = {
init: function() {
if (settings.len > 1) {
funs.initUI();
funs.bindEvent();
if (settings.autoScroll) {
settings.timer = setInterval(funs.autoAnimate, 3000);
}
}
},
initUI: function() {
if (settings.infinite) {
var cloneFisrt = dom.firstItem.clone();
var cloneLast = dom.lastItem.clone();
dom.wrap.append(cloneFisrt);
cloneLast.insertBefore(dom.firstItem);
}
funs.creatPage();
dom.item = $self.find(".slider-item");
settings.count = dom.item.length;
settings.distance = settings.width / 5;
if (settings.infinite) {
dom.wrap.css("-webkit-transform", "translate3d(" + -settings.width + "px,0,0)");
}
},
creatPage: function() {
var pagelist = '<div class="slider-page"><ul>';
for (var i = 0; i < settings.len; i++) {
if (i == 0) {
pagelist += '<li class="active"></li>';
} else {
pagelist += '<li></li>';
}
}
pagelist += '</ul></div>';
$self.append(pagelist);
dom.pagelist = $self.find(".slider-page");
dom.pageItem = dom.pagelist.find("li");
},
bindEvent: function() {
$self.off().on({
"touchstart": function(e) {
e.stopPropagation();
clearInterval(settings.timer);
settings.startX = e.touches ? e.touches[0].pageX : e.originalEvent.touches[0].pageX;
settings.startY = e.touches ? e.touches[0].pageY : e.originalEvent.touches[0].pageY;
},
"touchmove": function(e) {
e.stopPropagation();
e.preventDefault();
var curX = e.touches ? e.touches[0].pageX : e.originalEvent.touches[0].pageX;
var curY = e.touches ? e.touches[0].pageY : e.originalEvent.touches[0].pageY;
var moveX = curX - settings.startX;
var moveY = curY - settings.startY;
//避免禁用了下拉事件
if (Math.abs(moveY) > Math.abs(moveX)) {
window.event.returnValue = true;
}
var x = -settings.index * settings.width + moveX;
dom.wrap.css("-webkit-transform", "translate3d(" + x + "px,0,0)");
},
"touchend": function(e) {
e.stopPropagation();
var curX = e.changedTouches ? e.changedTouches[0].pageX : e.originalEvent.changedTouches[0].pageX;
var moveX = curX - settings.startX;
if (Math.abs(moveX) >= settings.distance) {
settings.index = settings.index - Math.abs(moveX) / moveX; //判断是向左还是向右
}
if (settings.index >= settings.count - 1) {
settings.index = settings.count - 1;
}
if (settings.index <= 0) {
settings.index = 0;
}
funs.animate();
if (settings.autoScroll) {
settings.timer = setInterval(funs.autoAnimate, 3000);
}
},
"touchcancel": function(e) {
dom.wrap.css("-webkit-transform", "translate3d(" + -settings.index * settings.width + "px,0,0)");
},
"webkitTransitionEnd": function(e) {
e.stopPropagation();
e.preventDefault();
dom.wrap.removeClass("transitionable");
if (settings.infinite) {
if (settings.index <= 0) {
settings.index = settings.count - 2;
}
if (settings.index >= settings.count - 1) {
settings.index = 1;
}
}
var itemIndex = settings.infinite ? settings.index - 1 : settings.index;
dom.pageItem.removeClass("active");
dom.pageItem.eq("" + itemIndex + "").addClass("active");
dom.wrap.css("-webkit-transform", "translate3d(" + -settings.index * settings.width + "px,0,0)");
}
});
$(window).on({
"resize": function() {
funs.adjustPos();
},
"orientationchange": function() {
funs.adjustPos();
}
})
},
adjustPos: function() {
settings.width = dom.wrap.width();
settings.distance = settings.width / 5;
dom.wrap.css("-webkit-transform", "translate3d(" + -settings.index * settings.width + "px,0,0)");
},
animate: function() {
dom.wrap.addClass("transitionable");
dom.wrap.css("-webkit-transform", "translate3d(" + -settings.index * settings.width + "px,0,0)");
},
autoAnimate: function() {
if (settings.width > 0) {
settings.index++;
funs.animate();
}
}
};
funs.init();
});
return this;
}
});
})(window.jQuery || window.Zepto);
分享到:
相关推荐
"织梦banner轮播图插件"是一款专为织梦内容管理系统(DedeCMS)设计的扩展组件,旨在帮助用户轻松实现网站首页的动态轮播图功能。这款插件允许用户自定义创建多个轮播图分类,每个分类下可以添加多张图片,同时支持...
Axure制作banner轮播图的交互效果Axure制作banner轮播图的交互效果Axure制作banner轮播图的交互效果Axure制作banner轮播图的交互效果Axure制作banner轮播图的交互效果Axure制作banner轮播图的交互效果Axure制作...
一种简单易用的banner实现方式,以单例形式封装,两句代码显示banner轮播图,支持手势滑动,支持首尾循环
里面是我在做网站开发时所用到过的11个不同样式的banner轮播图前端js代码合集,每个都亲测可用,涵盖了当前网上各个网站常用的轮播图样式。 轮播图是网站前端开发几乎必不可少的模块,每个网站项目都会用到。我也...
综上所述,实现"Android Banner轮播图效果实现(带下标)"需要掌握Android组件的使用、网络请求、数据适配、图片加载、动画效果、生命周期管理以及性能优化等多个方面的知识。通过实践这些技术,开发者可以创建出功能...
常用banner图片切换焦点图代码。简单的banner图片切换焦点图代码,兼容IE 6/7/8/9 及其他主流浏览器 使用方法: 1、依次引入slideshow.css与slideshow.js文件; 2、将代码复制到页面中即可。 3、可在代码中的...
【标题】"banner轮播图(内存+硬盘+网络)"涉及的是网页或应用程序中的一个常见设计元素——轮播图的实现技术,它涉及到内存管理、数据存储和网络传输等多个IT领域的知识点。 首先,轮播图(Banner)是互联网产品中...
本Demo "ios-Banner轮播图.zip" 提供了一个简单的轮播图实现,适用于快速集成到你的项目中。主要涉及的知识点有: 1. **自定义视图(Custom View)**: 轮播图的实现通常涉及到自定义UIView子类。在这个案例中,...
在Android应用开发中,Banner轮播图是一种常见的组件,用于展示多张图片或广告内容,通常搭配Indicator指示器以提供用户友好的交互体验。自定义Banner轮播图和自定义Indicator能够更好地满足开发者对界面设计的独特...
本知识点主要探讨的是如何使用jQuery实现一个简洁且兼容主流浏览器的全屏banner图片切换效果。 首先,我们需要了解jQuery的基本用法。jQuery通过"$"符号来引用,它是一个函数,可以用来选择页面中的元素。例如,`$...
在Android应用开发中,轮播图(Banner)是一种常见的组件,用于展示一系列的图片或内容,通常用在首页、广告栏等位置。本教程将详细讲解如何使用自定义的`BannerView`在Java环境中实现一个功能完备且可用的轮播图片...
【支付宝淘宝Banner轮播图效果】是网页设计中常见的元素,尤其在电商平台如支付宝和淘宝上,用于展示促销信息或热门商品。这种效果通常由JavaScript库实现,特别是jQuery,一个广泛使用的JavaScript库,能简化DOM...
在Android应用开发中,Banner广告轮播图是一种常见的展示方式,用于吸引用户的注意力并推广不同的内容,如产品、服务或活动。自定义Banner广告轮播图可以满足开发者对设计和功能的个性化需求,同时,自定义Indicator...
在Banner图片切换场景下,JS可以控制图片的自动轮播、添加过渡动画效果,以及设置用户触发的切换功能。 1. 自动轮播:JS能够定时更改Banner中的图片,让图片在一定时间间隔后自动切换,从而实现轮播效果。这通常...
首先,标题中的"全屏带视频banner轮播图片特效"是指一种网页设计中的常见元素——全屏轮播图,这种元素通常用作网站的首页展示,可以包含静态图片和动态视频,以吸引用户的注意力并传递信息。在实际的网页设计中,...
在Android开发中,Banner轮播图是一种常见的UI组件,它用于展示一组图片或内容,并自动进行无缝循环播放,常用于首页广告或者推荐内容的展示。本篇将详细讲解如何实现Banner轮播图的无限循环轮播功能以及手动滑动...
在网页设计中,JSBanner(JavaScript 幻灯片或轮播图)是一种常见的元素,用于展示多张图片或内容,并通过动态效果进行切换,以吸引用户的注意力。"JSBanner图片切换简单"这个主题主要涉及如何使用JavaScript实现一...