JSFiddle - React, Tailwind, and code Playground
by tu genhua
HTML
<h1>多张图片旋转互不影响,点击小图变大图,然后往左转,往右转</h1>
<ul class="imgList">
<li class="parentCls"> <a class="artZoom" href="http://m1.img.srcdd.com/farm5/d/2014/0718/21/EDEF32A674C1217FB6F80851514C124E_B250_400_250_278.jpeg"><img src="http://m1.img.srcdd.com/farm4/d/2014/0718/21/31789C10D628913054C9B7F3A11D3519_B250_400_150_108.jpeg" /></a> </li>
<li class="parentCls"> <a class="artZoom" href="http://m1.img.srcdd.com/farm5/d/2014/0718/21/EDEF32A674C1217FB6F80851514C124E_B250_400_250_278.jpeg"><img src="http://m1.img.srcdd.com/farm4/d/2014/0718/21/31789C10D628913054C9B7F3A11D3519_B250_400_150_108.jpeg" /></a> </li>
</ul>
CSS
body { font-size:75%; font-family:'微软雅黑'; }
img { border:0 none; }
p, ul { padding:0; margin:0; }
ul, ol, li { list-style:none; }
#about { width:550px; margin:0 auto;padding-bottom:20px; border-bottom:1px solid #CCC; }
#about .planeart, #about .planeart a { color:#CCC; }
ul.imgList { width:550px; margin:0 auto;}
ul.imgList li { margin-top:10px; }
.tool a{padding:0 10px;}
JavaScript
/**
* 缩略图
*/
function ArtZoom(options,callback){
var self = this;
self.options = $.extend({},defaults,options || {});
self._init();
self.callback = callback;
this.cache = {
minStep : 0,
maxStep : 3
};
};
$.extend(ArtZoom.prototype,{
// 初始化
_init: function(){
var self = this,
cfg = self.options;
if($(cfg.targetCls).length <= 0) {
return;
}
$(cfg.targetCls).each(function(){
$(this).unbind('click').bind('click',function(e){
e.preventDefault();
var maxImage = $(this).attr('href');
self._imgTool($(this),maxImage);
});
});
},
/*
* 点击小图变大图 先隐藏小图 再生成大图显示
* @param {$this,maxImage} 当前点击的元素 当前大图
*/
_imgTool: function($this,maxImage) {
var self = this,
cfg = self.options;
var width = 0,
height = 0,
maxWidth = $this.closest(cfg.parentCls).outerWidth();
// 图片预先加载
var loadImg = function (url, fn) {
var img = new Image();
img.src = url;
if (img.complete) {
fn.call(img);
} else {
img.onload = function () {
fn.call(img);
};
};
};
loadImg(maxImage, function () {
width = this.width;
height = this.height;
tool();
});
function tool(){
var $thisParent = $($this).closest(cfg.parentCls);
// 当前图片隐藏掉
$this.hide();
if($('.artZoomBox',$thisParent).length > 0 && $('.artZoomBox',$thisParent).css('display') == "none"){
$('.artZoomBox',$thisParent).show();
}
// 图片等比例缩放
if (width > maxWidth) {
height = maxWidth / width * height;
width = maxWidth;
};
// 页面只创建一次
if($('.artZoomBox',$thisParent).length <= 0) {
var html = '<div class="artZoomBox">'+
'<div class="tool">'+
'<a class="hideImg" href="#" title="收起">收起</a>'+
'<a class="imgRight" href="#" title="向右转">向右转</a>'+
'<a class="imgLeft" href="#" title="向左转">向左转</a>'+
'<a class="viewImg" href="' +...