123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- (function($) {
- var defaults = {
- prefix: 'album'
- };
- var pre = '';
- $.fn.album = function(options) {
- options = $.extend({}, defaults, options);
- pre = options.prefix;
- // 底部预览图移动
- (function() {
- var i = 0;
- var count = $('.' + pre + '-list li').length - 4;
- var width = $('.' + pre + '-list li:first').width();
- var left = true;
- var right = false;
- $('.' + pre + '-btn-left').click(function() {
- if (left) {
- return false;
- }
- --i;
- move();
- });
- $('.' + pre + '-btn-right').click(function() {
- if (right) {
- return false;
- }
- ++i;
- move();
- });
- function move() {
- left = i === 0;
- right = i === count - 1;
- $('.' + pre + '-list ul').stop(false, true).animate({marginLeft: -i * width + 'px'}, 600);
- }
- })();
- // 滑过小图查看大图
- (function () {
- var mid = $('.' + pre + '-mid');
- var mask = $('.' + pre + '-mask');
- var big = $('.' + pre + '-big');
- var img = $('.' + pre + '-big-img');
- // 鼠标经过盒子 显示遮罩和大图
- mid.mouseover(function() {
- mask.show();
- big.show();
- });
- // 鼠标离开盒子 隐藏遮罩和大图
- mid.mouseout(function() {
- //隐藏遮罩和大图
- mask.hide();
- big.hide();
- });
- // 鼠标在盒子上移动的时候
- // 让遮罩跟着鼠标移动
- mid.mousemove(function(event) {
- //鼠标在页面中的坐标
- var pageX = event.pageX;
- var pageY = event.pageY;
- // 计算鼠标的位置 距 盒子 的距离
- var boxX = pageX - mid.offset().left;
- var boxY = pageY - mid.offset().top;
- // 计算遮罩的位置
- var maskX = boxX - mask.outerWidth() / 2;
- var maskY = boxY - mask.outerHeight() / 2;
- // 限定遮罩可移动范围
- if (maskX < 0) {
- maskX = 0;
- }
- if (maskX > mid.outerWidth() - mask.outerWidth()) {
- maskX = mid.outerWidth() - mask.outerWidth();
- }
- if (maskY < 0) {
- maskY = 0;
- }
- if (maskY > mid.outerHeight() - mask.outerHeight()) {
- maskY = mid.outerHeight() - mask.outerHeight();
- }
- // 修改遮罩的显示位置
- mask.css({left: maskX, top: maskY});
- // 按照比例移动大图 大图片能够移动的总距离 = 大图的宽度 - 大盒子的宽度
- var bigImgToMove = img.outerWidth() - big.outerWidth();
- // 遮罩能够移动的总距离 = 小盒子的宽度 - 遮罩的宽度
- var maskToMove = mid.outerWidth() - mask.outerWidth();
- // 计算移动比例rate = 大图片能够移动的总距离/遮罩能够移动的总距离
- var rate = bigImgToMove / maskToMove;
- // 设置大图片当前的位置 = rate * 遮罩当前的位置
- img.css({left: -rate * maskX, top: -rate * maskY});
- });
- })();
- // 单击小图切换大图
- (function() {
- $('.' + pre + '-list li').click(function() {
- var src = $(this).find('img').attr('src');
- $('.' + pre + '-mid-img').attr('src', src.replace('small', 'mid'));
- $('.' + pre + '-big-img').attr('src', src.replace('small', 'big'));
- $(this).addClass(pre + '-curr').siblings().removeClass(pre + '-curr');
- });
- $('.' + pre + '-list li:first').click();
- })();
- };
- $.fn.album.defaults = defaults;
- })(jQuery);
|