{"version":3,"sources":["cobox.js"],"names":["window","$","B","A","album","W","CoboxOptions","this","outerBorder","minLeft","minTop","fadeSpeed","speed","nextClick","textShow","tpl","main","nav","Cobox","options","init","prototype","constructor","build","isImage","link","type","match","imgLinkfilter","obj","map","index","element","attr","addToAlbum","$link","push","title","$imgLink","parent","start","self","on","append","M","find","mainHeight","height","css","top","getTop","cancel","loadImage","titleText","albumLength","length","windowWidth","width","windowHeight","prev","next","outer","fadeIn","img","Image","onload","showImage","show","hide","titleHeight","imgWidth","imgHeight","parseInt","animate","src","event","target","changeImage","remove","layer","close","cobox","fadeOut","document","scrollTop","jQuery"],"mappings":"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","file":"cobox.min.js","sourcesContent":["/**\r\n * Cobox v1.0.0\r\n *\r\n * License: http://opensource.org/licenses/MIT\r\n * Copyright 2015 Garwi\r\n *\r\n */\r\n\r\n(function(window, $){\r\n \"use strict\";\r\n\r\n var W = $(window), B, A, album;\r\n\r\n var CoboxOptions = (function(){\r\n function CoboxOptions(){\r\n this.outerBorder = 8; //图片边框宽度 *2\r\n this.minLeft = 10; //距离左边或者右边的最小距离 *2\r\n this.minTop = 60; //距离上边的最小距离 *2\r\n this.fadeSpeed = 300; //图片渐变显示的速度\r\n this.speed = 400; //图片宽高伸缩的速度\r\n this.nextClick = true; //上下张图片切换\r\n this.textShow = true; //title 文字显示\r\n\r\n this.tpl = {\r\n main: '
',\r\n nav: ''\r\n };\r\n }\r\n\r\n return CoboxOptions;\r\n })();\r\n\r\n var Cobox = (function(){\r\n function Cobox(options){\r\n this.options = options;\r\n this.init();\r\n }\r\n\r\n Cobox.prototype = {\r\n constructor: Cobox,\r\n init: function(){\r\n this.build();\r\n }, \r\n\r\n build: function(){\r\n B = $('body');\r\n album = [];\r\n \r\n //判断链接是否为图片\r\n function isImage(link){\r\n return $.type(link) === \"string\" && link.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)/i);\r\n }\r\n\r\n //筛选链接为图片的元素\r\n function imgLinkfilter(obj){\r\n var link = obj.map(function(index, element){\r\n if (isImage($(element).attr('href'))) {\r\n addToAlbum($(element));\r\n return element;\r\n }\r\n });\r\n return link;\r\n }\r\n\r\n //添加图片的链接和标题到 Album 数组\r\n function addToAlbum($link) {\r\n album.push({\r\n link: $link.attr('href'),\r\n title: $link.attr('data-title') || $link.attr('title')\r\n });\r\n }\r\n\r\n var $imgLink = $('img').parent('a');\r\n A = imgLinkfilter($imgLink);\r\n\r\n this.start();\r\n },\r\n\r\n start: function(){\r\n var self = this;\r\n\r\n A.on('click', function(){\r\n var index = A.index(this);\r\n B.append(self.options.tpl.main);\r\n\r\n var M = B.find('.cobox-main'),\r\n mainHeight = B.find('.cobox-outer').height();\r\n\r\n M.css({'top': self.getTop(mainHeight) + 'px'});\r\n\r\n if(self.options.nextClick){\r\n self.nav(index);\r\n }\r\n\r\n self.cancel();\r\n self.loadImage(index);\r\n return false;\r\n });\r\n },\r\n\r\n loadImage: function(index){\r\n var self = this,\r\n link = album[index].link,\r\n titleText = album[index].title,\r\n albumLength = album.length,\r\n speed = this.options.speed,\r\n windowWidth = W.width(),\r\n windowHeight = W.height(),\r\n prev = B.find('.cobox-prev'),\r\n next = B.find('.cobox-next'),\r\n M = B.find('.cobox-main'),\r\n outer = B.find('.cobox-outer');\r\n\r\n B.find('.cobox').fadeIn(self.options.fadeSpeed);\r\n\r\n var img = new Image();\r\n img.onload = function(){\r\n if( self.options.textShow && titleText && (B.find('.cobox-title').length === 0)){\r\n M.append('
' + titleText + '
');\r\n }\r\n\r\n var width = img.width,\r\n height = img.height,\r\n title = B.find('.cobox-title'),\r\n titleHeight = title.height(),\r\n imgWidth = windowWidth - self.options.outerBorder - self.options.minLeft,\r\n imgHeight = windowHeight - titleHeight - self.options.outerBorder - self.options.minTop;\r\n \r\n //如果图片宽度大于浏览器可显示的最大宽度,按最大宽度计算图片宽高\r\n if( width > imgWidth ){\r\n height = parseInt((imgWidth * (height / width)), 10);\r\n width = imgWidth;\r\n }\r\n\r\n //如果图片高度大于浏览器可显示的最大高度,按最大高度计算图片宽高\r\n if( height > imgHeight ){\r\n width = parseInt((imgHeight * (width / height)), 10);\r\n height = imgHeight;\r\n }\r\n\r\n var mainHeight = height + titleHeight + self.options.outerBorder;\r\n\r\n M.animate({top: self.getTop(mainHeight)}, speed);\r\n\r\n function showImage(){\r\n title.width(width).show();\r\n B.find('.cobox-loading').hide();\r\n B.find('.cobox-image').attr('src', link);\r\n B.find('.cobox-image').fadeIn();\r\n B.find('.cobox-nav').show();\r\n //如果是载入的图片是第一张,则隐藏 prev 按钮\r\n if(index === 0){\r\n prev.hide();\r\n } else {\r\n prev.show();\r\n }\r\n\r\n //如果是载入的图片是最后一张,则隐藏 next 按钮\r\n if(index == albumLength-1){\r\n next.hide();\r\n } else {\r\n next.show();\r\n }\r\n }\r\n\r\n //如果切换前后两张图片的宽高一样,则直接显示图片,不显示过渡动画\r\n if(outer.height() == height && outer.width() == width){\r\n showImage();\r\n } else {\r\n outer.animate(\r\n {height: height}, \r\n speed,\r\n function(){\r\n outer.animate(\r\n {width: width},\r\n speed,\r\n function(){\r\n showImage();\r\n }\r\n );\r\n }\r\n );\r\n }\r\n\r\n };\r\n //先设置 onload ,再设置 src,兼容旧版本IE。\r\n img.src = link;\r\n },\r\n\r\n nav: function(index){\r\n var self = this,\r\n outer = B.find('.cobox-outer');\r\n\r\n outer.append(self.options.tpl.nav);\r\n\r\n var nav = B.find('.cobox-nav');\r\n nav.on('click', function(event){\r\n if($(event.target).attr('class') == 'cobox-nav cobox-prev'){\r\n index--;\r\n self.changeImage(index);\r\n } else {\r\n index++;\r\n self.changeImage(index);\r\n }\r\n });\r\n },\r\n\r\n changeImage: function(index){\r\n B.find('.cobox-image').hide();\r\n B.find('.cobox-nav').hide();\r\n B.find('.cobox-title').remove();\r\n B.find('.cobox-loading').show();\r\n this.loadImage(index);\r\n },\r\n\r\n cancel: function(){\r\n var self = this,\r\n M = B.find('.cobox-main'),\r\n layer = B.find('.cobox-layer');\r\n\r\n M.on('click', function(event){\r\n if ($(event.target).attr('class') === 'cobox-main') {\r\n self.close();\r\n }\r\n return false;\r\n });\r\n\r\n layer.on('click', function(event){\r\n if ($(event.target).attr('class') === 'cobox-layer') {\r\n self.close();\r\n }\r\n return false;\r\n });\r\n\r\n },\r\n\r\n close: function(){\r\n var cobox = B.find('.cobox');\r\n \r\n cobox.fadeOut(this.options.fadeSpeed, function(){\r\n cobox.remove();\r\n });\r\n },\r\n\r\n //通过主内容高度来计算 top 的大小\r\n getTop: function(mainHeight){\r\n var top = (W.height() - mainHeight) / 2 + $(document).scrollTop();\r\n \r\n if(top > 0){\r\n return top;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n };\r\n return Cobox;\r\n })();\r\n\r\n $(function() {\r\n var options = new CoboxOptions();\r\n var cobox = new Cobox(options);\r\n });\r\n\r\n})(window, jQuery);"],"sourceRoot":"/source/"}