JQuery插件开发初探——图片轮播
在熟悉了插件开发的结构以后,自己尝试着做了一个稍微复杂一点的小功能:图片轮播插件。
由于之前使用的一款图片轮播插件,性能不高,页面加载的时候需要载入全部的图片,因此速度很慢。
通过自己做这个小插件,能控制一下图片的加载,每次只加载一张图片。当然翻转的特效肯定没有人家的绚丽。
之前尝试了在div中内嵌img标签的方式,但是左右两侧的翻页按钮不容易摆放,于是采用了3个div的方式,最外面一个大的div,背景图片为照片图片,其中左右各两个小div,放翻页按钮。
由于开始的时候需要频繁调样式,因此大div中的代码都是写死的,等到调试成功后,再放到js里去append。
参数中定义了需要展示的照片列表和div的宽高:
var defaults = {
height: '300px',
width: '1000px',
imgs: ['images/photo/1.JPG', 'images/photo/2.JPG', 'images/photo/3.JPG', 'images/photo/4.JPG', 'images/photo/5.JPG']
};
图片拉伸用了比较新的CSS属性:"background-size", '100% 100%'
核心思想就是每次随机一直图片作为背景,随机的原则是不和上一张重复。
以下是完整的js代码:
/***************************************************
* DannyImagesShow
* 图片轮播
* Ver:1.0
* Author:DannyWang
* Date:2013-10-15
* 图片轮播
Example:
var opt = {
height: '500px',
width: '100%',
imgs: ['images/photo/6.JPG', 'images/photo/7.JPG', 'images/photo/8.JPG', 'images/photo/9.JPG']
};
$("#imgDiv").dannyImagesShow(opt);
****************************************************/
(function ($) {
$.fn.dannyImagesShow = function (options) {
//定义默认值
var defaults = {
height: '300px',
width: '1000px',
imgs: ['images/photo/1.JPG', 'images/photo/2.JPG', 'images/photo/3.JPG', 'images/photo/4.JPG', 'images/photo/5.JPG']
};
//合并用户自定义属性,默认属性
var options = $.extend(defaults, options);
var gNumber=0;
this.each(function () {
var imgDiv = $(this);
imgDiv.css("height", options.height);
imgDiv.css("width", options.width);
imgDiv.css("background-image", 'url("' + options.imgs[1] + '")');
imgDiv.css("background-position", 'center');
imgDiv.css("background-size", '100% 100%'); var pagerHTML = '';
pagerHTML += '<div id="leftbar" style="float: left; height: ' + (options.height.replace('px', '') - (options.height.replace('px', '') / 2 - 15)) + 'px' + '; width: 30px; padding-left:10px; padding-top: ' + (options.height.replace('px', '') / 2 - 15) + 'px' + ';">';
pagerHTML += '<a id="leftbarButton" class="left">prev</a>';
pagerHTML += '</div>';
pagerHTML += '<div id="rightbar" style="float: right; height: ' + (options.height.replace('px', '') - (options.height.replace('px', '') / 2 - 15)) + 'px' + '; width: 30px;padding-right:10px; padding-top: ' + (options.height.replace('px', '') / 2 - 15) + 'px' + ';">';
pagerHTML += '<a id="rightbarButton" class="right">next</a>';
pagerHTML += '</div>'; imgDiv.append(pagerHTML); var btnPrev = $(".left");
var btnNext = $(".right"); btnPrev.click(function () {
var n = getImagesNum(1, options.imgs.length);
while (n === gNumber) {
n = getImagesNum(1, options.imgs.length);
}
gNumber = n;
$("#imgDiv").hide();
imgDiv.css("background-image", 'url("' + options.imgs[n - 1] + '")');
$("#imgDiv").slideDown();
}); btnNext.click(function () {
var n = getImagesNum(1, options.imgs.length);
while (n === gNumber) {
n = getImagesNum(1, options.imgs.length);
}
gNumber = n;
$("#imgDiv").hide();
imgDiv.css("background-image", 'url("' + options.imgs[n - 1] + '")');
$("#imgDiv").slideDown();
}); $("#leftbar").bind("mouseover", function () {
$("#leftbarButton").show();
});
$("#leftbar").bind("mouseout", function () {
$("#leftbarButton").hide();
}); $("#rightbar").bind("mouseover", function () {
$("#rightbarButton").show();
});
$("#rightbar").bind("mouseout", function () {
$("#rightbarButton").hide();
}); $(".left").hide();
$(".right").hide();
}); //获取随机数
var getImagesNum = function (under, over) {
switch (arguments.length) {
case 1: return parseInt(Math.random() * under + 1);
case 2: return parseInt(Math.random() * (over - under + 1) + under);
default: return 0;
}
}
}
})(jQuery);
JQuery插件开发初探——图片轮播的更多相关文章
- jQuery轻量级京东图片轮播代码等
http://sc.chinaz.com/jiaoben/jiaodiantu.html jQuery轻量级京东图片轮播代码 查看全图点击预览 顶(17)踩(4)报错评论(0)下载地址 更新时间: ...
- 使用javascript,jquery实现的图片轮播功能
使用javascript,jquery实现的图片轮播功能本功能采用最基础的javascript和一些简单的jquery技术实现,易理解,以修改使用,代码简易,适合刚开始接触到网站开发的朋友们参考.可以 ...
- 纯javaScript、jQuery实现个性化图片轮播
纯javaScript实现个性化图片轮播 轮播原理说明<如上图所示>: 1. 画布部分(可视区域)属性说明:overflow:hidden使得超出画布部分隐藏或说不可见.position: ...
- JQuery slidebox实现图片轮播
jQuery图片轮播(焦点图)插件jquery.slideBox,简单设置下参数就可以多个多种动画效果,左右,上下,速度,还可指定默认显示第N张,点击的按钮在现代浏览中可以实现圆形或圆角效果,插件代码 ...
- JQuery插件之图片轮播插件–slideBox
来源:http://www.ido321.com/852.html 今天偶然发现了一个比较好用的图片轮播插件—slideBox 先看看效果:http://slidebox.sinaapp.com/ 代 ...
- js/jquery中实现图片轮播
一,jquery方法 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...
- JQuery简单实现图片轮播效果
很多页面都需要用到界面轮播,但是用原生js相对来说比较复杂,用jQuery实现效果比较迅速,写个简单的demo 1.首先在HTML页面要放置轮播图案位置插入div,这里写了轮播图片数量为3张,所以定义 ...
- jquery视频展示 图片轮播
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Jquery实现简单图片轮播
html代码: <div class="show"> <div class="left"> <div class="sh ...
随机推荐
- Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
1.错误叙述性说明 2014-7-10 23:12:23 org.apache.catalina.core.StandardContext filterStart 严重: Exception star ...
- Visual Studio 有哪些好用的插件?
推荐一批绝大部分都是免费的能较好增强写代码舒适度的. .NET Demon -- (非免费)安装后可以连续编译, 如果不买License的话过期后也还有代码改动后自动保存的上好功能, 安装它之后再也不 ...
- 玩转web之ajax(一)---使用表单的serialize()方法中文乱码解决
有时候我们需要使用ajax提交去提交form的值,这样就需要使用serialize()去获取form的值,但这样获取的值如果有中文,会乱码,原因和解决方法如下: 原因:.serialize()自动调用 ...
- 【Leetcode】Pascal's Triangle II
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3 ...
- Nginx+Varnish
Nginx+Varnish 实现动静分离,为服务器分流,降低服务器负载 相必大家在看加快网站响应速度方面的文章时,都提过这么一条:动静分离.那怎样实现动静分离呢,这里笔者就亲自搭建相关服务实现动静分离 ...
- i++和i--运算符优先级
1.问题背景 /** * 測试i++和i-- */ package com.you.model; /** * @author YouHaiDong * @date 2014-08-16 */ @Sup ...
- oracle
转让日期格式字符串
字符串传递日期格式 SELECT trunc(to_date(SALE_MON,'yyyy-mm'),'y'),trunc(to_date(SALE_MON,'yyyy-mm'),'mm') FRO ...
- lua、groovy嵌入到java中的性能对比(转)
lua和groovy都是可以嵌入到java中的脚本语言.lua以高性能著称,与C/C++在游戏开放中有较多使用,groovy是一个基于Java虚拟机(JVM)的敏捷动态语言,在jvm下有着不错的性能. ...
- JavaScript的"类"
1. 基本创建“类”方式 var Class = function(){ var klass = function(){ this.init.apply(this, arguments); }; kl ...
- Android:创建耐磨应用 - 语音操作
加入语音处理能力(Adding Voice Capabilities) 语音操作为用户体验可穿戴的重要组成部分,它允许用户快速.免提方式来运行操作. Wear它提供了两种类型的语音操作的: 该系统提供 ...