日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

原生js實現照片墻效果

瀏覽:183日期:2024-04-17 08:35:06

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns='http://www.w3.org/1999/xhtml'><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><title>照片墻一多實例演示</title><style type='text/css'>body,div,h2,ul,li{margin:0;padding:0;}body{font:12px/1.5 Arail;}.box{width:860px;margin:10px auto;background:#eee;border:1px solid #b8b8b8;overflow:hidden}.title{height:30px;line-height:30px;font-size:14px;padding:0 15px 0 35px;border-bottom:1px solid #b8b8b8;background:#fafafa url(http://js.alixixi.com/img/mm/ico.gif) 5px 50% no-repeat;}.title span{float:left;}.title a{float:right;color:#06f;outline:none;}.title a:hover{color:red;}.box ul{float:left;padding:0 15px 15px 0;}.box li{float:left;width:140px;height:105px;padding:6px;background:#fff;border:1px solid #c3c3c3;display:inline;margin:15px 0 0 15px;list-style:none;}.box li img{float:left;width:140px;height:105px;}.box li.hig{padding:5px;border:2px dashed #f30;opacity:0.5;filter:alpha(opacity=50);}</style><script type='text/javascript'>//獲取IDvar $ = function (id) {return typeof id === 'string' ? document.getElementById(id) : id};//獲取tagNamevar $$ = function (tagName, oParent) {return (oParent || document).getElementsByTagName(tagName)};//獲取classvar $$$ = function (sClass, oParent) { var aClass = [], i = 0, reClass = new RegExp('(s|^)' + sClass + '($|s)'), aElement = $$('*', oParent); for (i = 0; i < aElement.length; i++)reClass.test(aElement[i].className) && aClass.push(aElement[i]); return aClass};//獲取元素位置function getPos(obj) { var iTop = obj.offsetTop; var iLeft = obj.offsetLeft; while (obj.offsetParent) { iTop += obj.offsetParent.offsetTop; iLeft += obj.offsetParent.offsetLeft; obj = obj.offsetParent; } return {top:iTop, left:iLeft} };//創建照片墻對象var PhotoWall = function () {this.initialize.apply(this, arguments)};PhotoWall.prototype = { initialize: function (obj, aData) { var oThis = this; this.oParent = $(obj); this.oUl = $$('ul', this.oParent)[0]; this.oBtn = $$('a', this.oParent)[0]; this.zIndex = 1; this.aPos = []; this.aData = aData; this.dom = document.documentElement || document.body; this.create(); this.oBtn.onclick = function () {oThis.randomOrder()} }, create: function () { var aFrag = document.createDocumentFragment(); var i = 0; for (i = 0; i < this.aData.length; i++) { var oLi = document.createElement('li'); var oImg = document.createElement('img'); oImg.src = this.aData[i]; oLi.appendChild(oImg); aFrag.appendChild(oLi) } this.oUl.appendChild(aFrag); this.aLi = $$('li', this.oParent); this.changeLayout() }, changeLayout: function () { var i = 0; this.oParent.style.height = this.oParent.offsetHeight - 2 + 'px'; this.aPos.length = 0; for (i = 0; i < this.aLi.length; i++) this.aLi[i].style.cssText = ''; for (i = 0; i < this.aLi.length; i++) { this.aLi[i].index = i; this.aLi[i].style.top = getPos(this.aLi[i]).top + 'px'; this.aLi[i].style.left = getPos(this.aLi[i]).left + 'px'; this.aPos.push({left:getPos(this.aLi[i]).left, top:getPos(this.aLi[i]).top}) } for (i = 0; i < this.aLi.length; i++) { this.aLi[i].style.position = 'absolute'; this.aLi[i].style.margin = '0'; this.drag(this.aLi[i]) } }, drag: function (obj, handle) { var oThis = this; var handle = handle || obj; handle.style.cursor = 'move'; handle.onmousedown = function (event) { var event = event || window.event; var disX = event.clientX - this.offsetLeft; var disY = event.clientY - this.offsetTop; var oNear = null; handle.style.zIndex = oThis.zIndex++; document.onmousemove = function (event) { var event = event || window.event; var iL = event.clientX - disX; var iT = event.clientY - disY; var maxL = Math.max(oThis.dom.clientWidth, oThis.dom.scrollWidth) - handle.offsetWidth; var maxT = Math.max(oThis.dom.clientHeight, oThis.dom.scrollHeight) - handle.offsetHeight; iL < 0 && (iL = 0); iT < 0 && (iT = 0); iL > maxL && (iL = maxL); iT > maxT && (iT = maxT); handle.style.left = iL + 'px'; handle.style.top = iT + 'px'; oNear = oThis.findNearest(obj); for (var i = 0; i < oThis.aLi.length; i++) oThis.aLi[i].className = ''; oNear && (oNear.className = 'hig'); return false }; document.onmouseup = function () { document.onmousemove = null; document.onmouseup = null; if (oNear) { handle.index = [handle.index, oNear.index]; oNear.index = handle.index[0]; handle.index = handle.index[1]; oNear.style.zIndex = oThis.zIndex++; oThis.doMove(handle, oThis.aPos[handle.index]); oThis.doMove(oNear, oThis.aPos[oNear.index]); oNear.className = ''; } else { oThis.doMove(handle, oThis.aPos[handle.index]) } handle.releaseCapture && handle.releaseCapture() }; this.setCapture && this.setCapture(); return false }; }, doMove: function (obj, iTarget, callback) { var oThis = this; clearInterval(obj.timer); obj.timer = setInterval(function () { var iCurL = getPos(obj).left; var iCurT = getPos(obj).top; var iSpeedL = (iTarget.left - iCurL) / 5; var iSpeedT = (iTarget.top - iCurT) / 5; iSpeedL = iSpeedL > 0 ? Math.ceil(iSpeedL) : Math.floor(iSpeedL); iSpeedT = iSpeedT > 0 ? Math.ceil(iSpeedT) : Math.floor(iSpeedT); if (iCurL == iTarget.left && iCurT == iTarget.top) { clearInterval(obj.timer); callback && callback() } else { obj.style.left = iCurL + iSpeedL + 'px'; obj.style.top = iCurT + iSpeedT + 'px' } }, 30) }, findNearest: function (obj) { var aDistance = []; var i = 0; for (i = 0; i < this.aLi.length; i++) aDistance[i] = this.aLi[i] == obj ? Number.MAX_VALUE : this.getDistance(obj, this.aLi[i]); var minNum = Number.MAX_VALUE; var minIndex = -1; for (i = 0; i < aDistance.length; i++) aDistance[i] < minNum && (minNum = aDistance[i], minIndex = i); return this.isButt(obj, this.aLi[minIndex]) ? this.aLi[minIndex] : null }, getDistance: function(obj1, obj2) { var a = (obj1.offsetLeft + obj1.offsetWidth / 2) - (obj2.offsetLeft + obj2.offsetWidth / 2); var b = (obj1.offsetTop + obj1.offsetTop / 2) - (obj2.offsetTop + obj2.offsetTop / 2); return Math.sqrt(a * a + b * b) }, isButt: function (obj1, obj2) { var l1 = obj1.offsetLeft; var t1 = obj1.offsetTop; var r1 = l1 + obj1.offsetWidth; var b1 = t1 + obj1.offsetHeight; var l2 = obj2.offsetLeft; var t2 = obj2.offsetTop; var r2 = l2 + obj2.offsetWidth; var b2 = t2 + obj2.offsetHeight; return !(r1 < l2 || b1 < t2 || r2 < l1 || b2 < t1) }, randomOrder: function () { this.aPos.sort(function () {return Math.random() > 0.5 ? 1 : -1}); for (var i = 0; i < this.aLi.length; i++) { this.aLi[i].index = i; this.doMove(this.aLi[i], this.aPos[i]) } }};window.onload = function (){ var aBox = $$$('box'); var aData = []; var aExample = []; var i = 0; //生成圖片數據 for (i = 0; i < 20; i++) aData[aData.length] = 'http://js.alixixi.com/img/mm/' + i + '.jpg'; //循環創建多個實例 for (i = 0; i < aBox.length; i++) { var oExample = new PhotoWall(aBox[i], aData); aExample.push(oExample) } this.onresize = function () { for (var p in aExample) aExample[p].changeLayout() }; this.onresize()};</script></head><body><div class='box'> <h2 class='title'><span>一堆90后</span><a href='javascript:;' rel='external nofollow' rel='external nofollow' class='order'>隨機排序</a></h2> <ul></ul></div><div class='box'> <h2 class='title'><span>一堆90后</span><a href='javascript:;' rel='external nofollow' rel='external nofollow' class='order'>隨機排序</a></h2> <ul></ul></div></body></html>

效果:

原生js實現照片墻效果

以上就是原生js實現照片墻效果的詳細內容,更多關于js 照片墻的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品亚洲| 日韩精品视频在线看| 国产乱人伦精品一区| 在线看片一区| 久久美女精品| 亚洲韩日在线| 国产高清一区二区| 亚洲深夜影院| 中文不卡在线| 日韩欧美中文字幕电影| 日本精品一区二区三区在线观看视频| 日韩有吗在线观看| 欧美一区网站| 国产精品多人| 国产精品成人一区二区不卡| 国产91欧美| 久久久久欧美精品| 久久视频国产| 免费欧美日韩| 久久香蕉精品| 亚洲+小说+欧美+激情+另类| 国产日韩三级| 精品国产第一福利网站| 久久久久一区| 国产女优一区| 日韩av成人高清| 久久精品五月| 久久久影院免费| 久久午夜视频| 国产亚洲精品精品国产亚洲综合| 麻豆高清免费国产一区| 日韩国产专区| 在线亚洲激情| 国产精品一区亚洲| 久久精品国产免费| 日韩中文欧美| 亚洲欧美日本日韩| 国产精品亚洲片在线播放| 日韩伦理在线一区| 午夜亚洲一区| 国产精品成人自拍| 日韩欧美不卡| 免费成人av在线播放| 国产探花一区| 在线手机中文字幕| 久久福利精品| 美女国产一区二区三区| 成人久久久久| 日韩高清不卡在线| 国产一区精品福利| 国产亚洲欧洲| 精品一区二区三区免费看 | 三级在线看中文字幕完整版| 在线视频亚洲| 久久超级碰碰| 99国产精品久久久久久久| 欧美精品福利| 免费观看不卡av| 国产区精品区| 欧美美女一区| 久久精品伊人| 丝袜美腿成人在线| 日韩精品91亚洲二区在线观看| 国产成人免费| 日本亚洲三级在线| 久久国产主播| 国产精品magnet| 黄色亚洲大片免费在线观看| 欧美精品99| 国产亚洲精品v| 波多野结衣久久精品| 18国产精品| 日韩午夜av| 精品国产不卡一区二区| 免费在线观看精品| 欧美日韩免费看片| 国产精品草草| 亚洲免费观看| 欧产日产国产精品视频| 国产免费av国片精品草莓男男| 一本色道久久精品| 国产成人精品一区二区三区视频 | 91偷拍一区二区三区精品| 日韩中文字幕无砖| 欧美 日韩 国产精品免费观看| 国产激情久久| 一区二区国产在线观看| 日韩精品免费一区二区三区| 麻豆精品av| 青草国产精品久久久久久| 狠狠久久婷婷| 精品三级久久| 美女尤物国产一区| 日韩一区二区三免费高清在线观看 | 国产日韩欧美一区二区三区在线观看| 婷婷亚洲五月| 日韩久久精品网| 欧美a一区二区| 日本不卡视频在线观看| 视频在线观看91| 99久精品视频在线观看视频| 精品福利久久久| 久久a爱视频| 国产亚洲高清一区| 日韩精品欧美大片| 日韩中文字幕91| 亚洲免费播放| 欧美精品一区二区三区精品| 精品亚洲a∨| 欧美aⅴ一区二区三区视频| 欧美日韩视频免费看| 亚洲精品乱码日韩| 日韩精品一二三| 视频一区在线播放| 欧美专区在线| 亚洲专区一区| 久久午夜影视| 一区二区三区国产在线| 一区二区国产在线| 亚洲在线久久| 亚洲欧洲专区| 四虎精品永久免费| 日韩中出av| 日韩在线视频一区二区三区| 中文字幕一区二区av| 免费看日韩精品| 亚洲1区在线| 欧美另类中文字幕| 国产精品亚洲综合久久| 国产精品白丝一区二区三区| 欧美国产另类| 丰满少妇一区| 国产精品亚洲一区二区三区在线观看| av免费不卡国产观看| 日本在线高清| 99久久精品国产亚洲精品| 久久国产影院| 国产美女精品| 久久午夜精品| 日韩精选在线| 国产精品一区二区av日韩在线| 久久字幕精品一区| 日韩国产一区二区| 午夜av一区| 一区二区三区国产盗摄| 欧美日韩亚洲一区二区三区在线| 欧美国产视频| 久久久夜精品| 国产亚洲在线| 日韩国产欧美在线视频| 国产精品成人**免费视频| 91免费精品| 免费精品国产的网站免费观看| 免费黄色成人| 亚洲开心激情| 免费在线观看一区| 亚洲国产综合在线看不卡| 亚洲欧美视频| 久久精品99久久久| 日韩大片免费观看| 爽好多水快深点欧美视频| 国产免费播放一区二区| 亚洲成人不卡| 亚洲精品看片| 精品视频在线你懂得| 伊人久久亚洲热| 欧美在线不卡| 日韩欧美1区| 免费精品视频最新在线| 国产美女视频一区二区| 91精品xxx在线观看| 免费成人av在线播放| 欧美国产日韩电影| 婷婷丁香综合| 国产劲爆久久| 尹人成人综合网| 国产精品a级| 国产精品毛片在线| 久久亚洲国产精品尤物| 九色精品91| 国产欧美亚洲一区| 婷婷综合激情| 老司机精品视频网| 欧美精品一区二区三区精品| 欧美天堂一区| 99国产精品一区二区| 欧美日韩亚洲一区二区三区在线| 另类中文字幕国产精品| 青草av.久久免费一区| 久久久久99| 国产欧美精品久久| 在线一区视频| 国产96在线亚洲| 四虎精品永久免费| 久久青草久久| 国产精品网址| 国产精品婷婷| 国产伦久视频在线观看| 蜜桃久久久久久| 成人国产精品一区二区网站|