电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

原生js實(shí)現(xiàn)照片墻效果

瀏覽:113日期: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>照片墻一多實(shí)例演示</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} };//創(chuàng)建照片墻對象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; //生成圖片數(shù)據(jù) for (i = 0; i < 20; i++) aData[aData.length] = 'http://js.alixixi.com/img/mm/' + i + '.jpg'; //循環(huán)創(chuàng)建多個(gè)實(shí)例 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'>隨機(jī)排序</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'>隨機(jī)排序</a></h2> <ul></ul></div></body></html>

效果:

原生js實(shí)現(xiàn)照片墻效果

以上就是原生js實(shí)現(xiàn)照片墻效果的詳細(xì)內(nèi)容,更多關(guān)于js 照片墻的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 解放卡车|出口|济南重汽|报价大全|山东三维商贸有限公司 | TPM咨询,精益生产管理,5S,6S现场管理培训_华谋咨询公司 | 硫酸钡厂家_高光沉淀硫酸钡价格-河南钡丰化工有限公司 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | 镀锌钢格栅_热镀锌格栅板_钢格栅板_热镀锌钢格板-安平县昊泽丝网制品有限公司 | 税筹星_灵活用工平台_企业财务顾问_财税法薪综合服务平台 | 最新范文网_实用的精品范文美文网| 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 牛奶检测仪-乳成分分析仪-北京海谊 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 电渗析,废酸回收,双极膜-山东天维膜技术有限公司 | 壹作文_中小学生优秀满分作文大全 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 置顶式搅拌器-优莱博化学防爆冰箱-磁驱搅拌器-天津市布鲁克科技有限公司 | 罐体电伴热工程-消防管道电伴热带厂家-山东沃安电气 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 高温热泵烘干机,高温烘干热泵,热水设备机组_正旭热泵 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 活性氧化铝|无烟煤滤料|活性氧化铝厂家|锰砂滤料厂家-河南新泰净水材料有限公司 | 家庭教育吧-在线家庭教育平台,专注青少年家庭教育 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | 仿古建筑设计-仿古建筑施工-仿古建筑公司-汉匠古建筑设计院 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 煤粉取样器-射油器-便携式等速飞灰取样器-连灵动 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 小学教案模板_中学教师优秀教案_高中教学设计模板_教育巴巴 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 |