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

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

原生js實現照片墻效果

瀏覽:186日期: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嫩草精品| 午夜一级久久| 日本欧美大码aⅴ在线播放| 免费一级欧美片在线观看网站 | 日韩av网站免费在线| 久久不卡日韩美女| 日韩欧美二区| 国产精品久久久久久久久妇女| 免费在线观看一区| 日韩综合精品| 红桃视频欧美| 日本中文字幕一区二区| 国产精品久久久免费| 国产精品一区免费在线| 精品国产一区二区三区噜噜噜| 国产一区国产二区国产三区| 久久久久午夜电影| 免费在线观看日韩欧美| 亚洲精品在线二区| 精品视频在线你懂得| 亚洲国产专区| 欧美伊人影院| 久久在线免费| 欧美在线日韩| 在线人成日本视频| 亚洲精选av| 国产不卡精品| 综合国产在线| 麻豆国产欧美一区二区三区| 亚洲精品在线观看91| 国产精品v日韩精品v欧美精品网站| 欧美激情另类| 日韩精品一区二区三区中文在线| 国产一区不卡| 欧美天堂在线| 亚洲色诱最新| 成人日韩在线| 国产极品模特精品一二| 中文一区二区| 激情久久婷婷| 国产资源在线观看入口av| 色狠狠一区二区三区| 久久久久久美女精品| 天堂精品久久久久| aⅴ色国产欧美| 精精国产xxxx视频在线野外| 欧美亚洲三级| 777久久精品| 日韩三级一区| 亚洲18在线| 亚洲视频国产| 在线观看视频免费一区二区三区| 极品日韩av| 久久精品观看| 久久精品中文| 亚洲国产影院| 欧美日韩国产精品一区二区亚洲| 欧产日产国产精品视频| 亚洲另类av| 亚洲综合中文| 日本成人手机在线| 日韩二区在线观看| 午夜精品影视国产一区在线麻豆| 午夜在线视频一区二区区别| 伊人影院久久| 免费在线观看成人| 在线日韩成人| 国产欧美日韩精品高清二区综合区| 四虎精品一区二区免费| 欧美日韩一区二区国产| 国产亚洲精品精品国产亚洲综合| 国产日韩欧美在线播放不卡| 国产精品亚洲欧美| 欧美激情99| 91偷拍一区二区三区精品| 日本不良网站在线观看| 午夜久久久久| 91伊人久久| 国产精品极品| 国内亚洲精品| 亚洲乱码一区| 成人午夜网址| 蜜桃av一区| 国产精品欧美大片| 亚洲黄色中文字幕| 久久激情中文| 日本va欧美va精品| 日本蜜桃在线观看视频| 婷婷成人在线| 国产精品久久久久9999高清| 久久精品欧美一区| 日韩高清一区二区| 欧美香蕉视频| 日韩精品久久理论片| zzzwww在线看片免费| 亚洲小说春色综合另类电影| 久久久久久色 | 亚洲欧美日韩精品一区二区 | 久久久久国产一区二区| 中文不卡在线| 久久九九99| 久久99视频| 在线免费观看亚洲| 亚洲va在线| 国产极品嫩模在线观看91精品| 99久久99久久精品国产片果冰| 日本一区二区三区视频在线看| av综合电影网站| 国产精品成人国产| 日韩三区四区| 日韩午夜av| 人人草在线视频| 美女视频黄免费的久久| 日韩精选在线| 亚洲欧美日本国产| 国产亚洲高清视频| 九一精品国产| 91精品精品| 亚洲v在线看| 欧美丝袜一区| 久久裸体视频| 天堂资源在线亚洲| 亚洲天堂1区| 久久免费高清| 午夜日本精品| 不卡在线一区| 久久精品99久久无色码中文字幕| 成人在线丰满少妇av| 你懂的亚洲视频| 老司机免费视频一区二区| 国产精品大片免费观看| 国产精品a久久久久| 久久69成人| 久久人人精品| 尤物精品在线| 综合一区在线| 嫩呦国产一区二区三区av| 国产精品黑丝在线播放| 欧美日韩国产高清电影| 一区二区三区网站| 日本久久二区| 成人国产综合| jiujiure精品视频播放| 综合国产在线| 国产精品天堂蜜av在线播放| 久久不卡国产精品一区二区| 97精品国产一区二区三区| 日韩精品欧美| 97久久中文字幕| 国产精品久久久久av电视剧| 免费视频久久| 精品一区视频| av成人国产| 国产成人精品一区二区免费看京| 日本免费一区二区三区四区| 激情六月综合| 日本午夜精品久久久久| 日韩成人亚洲| 欧美天堂一区二区| 欧美日韩精品免费观看视频完整| 天堂va在线高清一区| 超碰99在线| 国产乱论精品| 巨乳诱惑日韩免费av| 激情综合五月| 亚洲影视一区二区三区| 亚洲www免费| 国产福利资源一区| 最新亚洲国产| 国产综合激情| 毛片不卡一区二区| 一区在线观看| 91av亚洲| 高清久久一区| 欧美激情综合| 国产亚洲第一伦理第一区| 午夜免费一区| 欧美日韩一二三四| 日韩中文在线播放| 久久av超碰| 久久这里只有| 青草国产精品| 91精品视频一区二区| 亚洲精品欧美| 噜噜噜躁狠狠躁狠狠精品视频| 神马午夜久久| 成人精品国产亚洲| 欧美久久精品| 日韩国产在线观看一区| 一区二区电影| 在线精品国产亚洲| 国产一区91| 蜜臀久久99精品久久久久宅男 | 一区二区三区四区精品视频| 91久久视频| 国产一区成人| 综合一区av| 天堂精品久久久久| 欧美日韩一区二区三区在线电影| 欧美日韩18|