jquery中$.fn和图片滚动效果实现的必备知识总结

2020-05-27 18:04:28易采站长站整理

低配版图片特效js代码

很多都加了注释:如果jquery、js上文的知识掌握扎实,肯定不是很难。


//$()调用jquery对象 ,IIFE
$(function () {
$.fn.ScrollPic = function (params) {
//
return this.each(function () {
var defaults = {
ele: '.slider',//切换对象
Time: '2000',//自动切换时间
speed: '1000',//图片切换速度
scroll: true,//是否滚动图片,虽然肯定是让它滚动的,但是我们还是设置一个意思一下。
arrow: false,//是否设置箭头
number: true//是否添加右下角数字
};
//定义默认参数,其中若在html页面设置了param是,这里的params会替换defaults
var par = $.extend({}, defaults, params);
var scrollList = $(this).find('ul');//找到ul标签元素
var listLi = $(this).find('li');//找到li标签元素
var index = 0;
var pWidth = $(this).width();
var pHeight = $(this).height();
var len = $(this).find("li").length;//<li>标签数量
//设置li标签和img的宽、高
listLi.css({ "width": pWidth, "height": pHeight });
listLi.find('img').css({ "width": pWidth, "height": pHeight });
//设置ul标签的宽值为li的len倍/overflow:hidden
scrollList.css("width", pWidth * len);
//图片循环滚动的关键所在
function picTimer() {
index++;
if (index == len) { index = 0; }
showPics(index);
}
//自动切换函数
if (par.scroll)
{
var time = setInterval(picTimer, par.Time);
} else {
$(".page-btn").hide();
}
function showPics(index) {
var nowLeft = -index * pWidth;
//添加向左移动的特效
$(this).find(scrollList).animate({ "left": nowLeft }, par.speed);
//找到与index相等的那个按钮,添加类名current,并将每个同胞元素移除类名current
$(this).find(paging).eq(index).addClass('current').siblings().removeClass('current');
}
//鼠标经过数字按钮的效果
if (par.number) {
$(this).append('<div class="page-btn"></div>');
for (i = 1; i <= len; i++) {
$(this).find('.page-btn').append('<span>' + i + '</span>')
}
var paging = $(this).find(".page-btn span");
paging.eq(index).addClass('current');
$(this).find(paging).on('mouseup mouseover',function (e) {
e.preventDefault();
//获取按钮之间的相对位置,注意这里的$(this)。
index = $('div').find(paging).index($(this));
showPics(index)
});
}
//上一张,下一张效果
if (par.arrow) {
$(this).append('<span class="leftarrow"></span><span class="rightarrow"></span>')
var prev = $(this).find('span.leftarrow');
var next = $(this).find('span.rightarrow');
prev.on('click',function (e){
e.preventDefault();
index -= 1;
if (index == -1) { index = len - 1; }