Team:LZU-China/tempfortest
From 2014.igem.org
(Difference between revisions)
Line 1: | Line 1: | ||
- | <html> | + | <!DOCTYPE HTML> |
+ | <html lang="en-US"> | ||
<head> | <head> | ||
- | + | <meta charset="UTF-8"> | |
- | <meta charset= | + | <title>JS图片放大展示效果</title> |
- | <style | + | <style> |
- | body,ul,li | + | * {margin:0; padding:0} |
- | + | body {font:12px/20px "Consolas", "Microsoft YaHei"; color:#333;background:#EFEFEF; overflow:hidden} | |
- | . | + | ul, li {list-style:none} |
- | + | .cf {zoom:1} | |
- | + | .cf:after {clear:both; content:"."; display:block; visibility:hidden; height:0} | |
- | + | .wrap {width:980px; margin:0 auto; padding:100px 0 0} | |
- | + | #banner {width:800px; margin:0 auto; position:relative; background:#FFF; height:400px; overflow:hidden} | |
- | . | + | #banner ul {} |
+ | #banner li {float:left; width:190px; height:190px; cursor:pointer;padding:5px} | ||
+ | #banner li img {width:190px; height:190px; position:absolute; z-index:4; left:5px; top:5px} | ||
+ | #banner li span {display:block; width:170px; height:170px; border:10px solid #000; position:absolute; background:#CCC; opacity:0.5; filter:alpha(opacity=50);left:5px; top:5px; z-index:5} | ||
+ | #banner li span:hover {opacity:0.3; filter:alpha(opacity=30); border:10px solid #000; background:#fff;} | ||
+ | .btn_wrap {position:absolute; left:820px; top:150px; height:100px; width:37px} | ||
+ | #goUp {background:url(images/nav.png) no-repeat 4px 4px; width:37px; height:22px; display:block; text-indent:-9999px;position:absolute; left:0; top:0;} | ||
+ | #goUp:hover {background-position:-34px 4px} | ||
+ | #goDown {background:url(images/nav.png) no-repeat 4px -52px; width:37px; height:22px; display:block; text-indent:-9999px;position:absolute; left:0; bottom:0;} | ||
+ | #goDown:hover {background-position:-34px -52px} | ||
</style> | </style> | ||
</head> | </head> | ||
<body> | <body> | ||
- | <div class= | + | <div class="wrap"> |
- | <div | + | <div id="banner"> |
- | <img src= | + | <ul class="cf"> |
- | + | <li><span></span><img src="/jscss/demoimg/wall1.jpg" alt="" /></li> | |
- | + | <li><span></span><img src="/jscss/demoimg/wall2.jpg" alt="" /></li> | |
- | + | <li><span></span><img src="/jscss/demoimg/wall3.jpg" alt="" /></li> | |
+ | <li><span></span><img src="/jscss/demoimg/wall4.jpg" alt="" /></li> | ||
+ | <li><span></span><img src="/jscss/demoimg/wall5.jpg" alt="" /></li> | ||
+ | <li><span></span><img src="/jscss/demoimg/wall6.jpg" alt="" /></li> | ||
+ | <li><span></span><img src="/jscss/demoimg/wall7.jpg" alt="" /></li> | ||
+ | <li><span></span><img src="/jscss/demoimg/wall8.jpg" alt="" /></li> | ||
+ | <li><span></span><img src="/jscss/demoimg/wall9.jpg" alt="" /></li> | ||
+ | <li><span></span><img src="/jscss/demoimg/wall10.jpg" alt="" /></li> | ||
+ | </ul> | ||
+ | <div class="btn_wrap"> | ||
+ | <a href="javascript:;" id="goUp">向上走着</a> | ||
+ | <a href="javascript:;" id="goDown">向下走着</a> | ||
+ | </div> | ||
</div> | </div> | ||
</div> | </div> | ||
- | |||
<script type="text/javascript"> | <script type="text/javascript"> | ||
- | var | + | var JSHELPER = { |
- | + | initi: function() { | |
- | $(this). | + | }, |
- | }); | + | animate: function(obj, attrList, callback) { |
+ | clearInterval(obj.timer); | ||
+ | obj.timer = setInterval(function() { | ||
+ | var isStop = true; | ||
+ | for(var attr in attrList) { | ||
+ | var curAttr = attr === "opacity" ? Math.round(parseFloat(JSHELPER.getStyle(obj, attr) * 100)) : parseInt(JSHELPER.getStyle(obj, attr)); | ||
+ | var speed = (attrList[attr] - curAttr) / 8; | ||
+ | speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); | ||
+ | if(attr === "opacity") { | ||
+ | obj.style.filter = "alpha(opacity=" + (curAttr + speed) + ")"; | ||
+ | obj.style.opacity = (curAttr + speed) / 100; | ||
+ | } else { | ||
+ | obj.style[attr] = curAttr + speed + "px"; | ||
+ | } | ||
+ | curAttr != attrList[attr] && (isStop = false); | ||
+ | } | ||
+ | if(isStop) { | ||
+ | clearInterval(obj.timer); | ||
+ | !!callback && callback(); | ||
+ | } | ||
+ | }, 15); | ||
+ | }, | ||
+ | $: function(params) { | ||
+ | switch (params.charAt(0)) { | ||
+ | case "#": | ||
+ | return document.getElementById(params.substring(1)); | ||
+ | break; | ||
+ | case ".": | ||
+ | return this.getByClass(document, params.substring(1)); | ||
+ | default: | ||
+ | return document.getElementsByTagName(params); | ||
+ | } | ||
+ | }, | ||
+ | getStyle: function(obj, attr) { | ||
+ | return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, false)[attr]; | ||
+ | }, | ||
+ | getByClass: function(pn, cn) { | ||
+ | var ae = pn.getElementsByTagName("*"), | ||
+ | rent = [], | ||
+ | re = new RegExp('\\b' + cn + '\\b', 'i'); | ||
+ | for(var i = 0, len = ae.length; i < len; i++) { | ||
+ | ae[i].className.search(re) != -1 && rent.push(ae[i]); | ||
+ | } | ||
+ | return rent; | ||
+ | } | ||
+ | }; | ||
+ | window.onload = function() { | ||
+ | var btnDown = JSHELPER.$("#goDown"), | ||
+ | btnUp = JSHELPER.$("#goUp"), | ||
+ | wrap = JSHELPER.$("#banner"), | ||
+ | liList = wrap.children[0].children, | ||
+ | len = liList.length; | ||
+ | wrap.style.overflow = "visible"; | ||
+ | //设置 left 和 top | ||
+ | for(var i = 0; i < len; i++) { | ||
+ | liList[i].style.left = liList[i].offsetLeft + "px"; | ||
+ | if(i >= 12) { | ||
+ | liList[i].style.top = "400px"; | ||
+ | } else { | ||
+ | liList[i].style.top = liList[i].offsetTop + "px"; | ||
+ | } | ||
+ | } | ||
+ | //添加 position:absolute | ||
+ | for(var i = 0; i < len; i++) { | ||
+ | liList[i].style.position = "absolute"; | ||
+ | } | ||
+ | //把容器外的设置为透明 | ||
+ | for(var i = 8; i < len; i++) { | ||
+ | liList[i].style.filter = "alpha(opacity=0)"; | ||
+ | liList[i].style.opacity = 0; | ||
+ | liList[i].style.display = "none"; | ||
+ | } | ||
+ | |||
+ | var now = 0; | ||
+ | //上一个 | ||
+ | btnUp.onclick = function() { | ||
+ | if(now == 0) { | ||
+ | return; | ||
+ | } | ||
+ | var i = now + 8; | ||
+ | i = i >= len ? (len-1) : i; | ||
+ | var timerDo = setInterval(function() { | ||
+ | if(i < now) { | ||
+ | liList[i].style.display = "block"; | ||
+ | JSHELPER.animate(liList[i], {top: 0, opacity: 100}); | ||
+ | } else if(i < now + 4) { | ||
+ | JSHELPER.animate(liList[i], {top: 200}); | ||
+ | } else { | ||
+ | JSHELPER.animate(liList[i], {top: 400, opacity: 0}); | ||
+ | } | ||
+ | i--; | ||
+ | if( i == now - 5 ) { | ||
+ | now -= 4; | ||
+ | for(var m = len-1; m > now+7; m--) { | ||
+ | liList[m].style.display = "none"; | ||
+ | } | ||
+ | clearInterval(timerDo); | ||
+ | } | ||
+ | }, 50); | ||
+ | }; | ||
+ | //下一个 | ||
+ | btnDown.onclick = function() { | ||
+ | if(now >= len - 8) { | ||
+ | return; | ||
+ | } | ||
+ | var i = now; | ||
+ | var timerDo = setInterval(function() { | ||
+ | if(i < now + 4) { | ||
+ | JSHELPER.animate(liList[i], {top: -200, opacity: 0}); | ||
+ | } else if(i < now + 8) { | ||
+ | JSHELPER.animate(liList[i], {top: 0}); | ||
+ | } else { | ||
+ | liList[i].style.display = "block"; | ||
+ | JSHELPER.animate(liList[i], {top: 200, opacity: 100}); | ||
+ | } | ||
+ | i++; | ||
+ | if( i == now + 12 ) { | ||
+ | now += 4; | ||
+ | for(var m = 0; m < now; m++) { | ||
+ | liList[m].style.display = "none"; | ||
+ | } | ||
+ | clearInterval(timerDo); | ||
+ | } | ||
+ | }, 50); | ||
+ | }; | ||
+ | |||
+ | //放大镜 | ||
+ | for(var i = 0; i < len; i++) { | ||
+ | (function(i) { | ||
+ | liList[i].children[0].onmouseover = function() { | ||
+ | liList[i].style.zIndex = 100; | ||
+ | JSHELPER.animate(liList[i].children[0], {width:280, height: 280, left: -50, top: -50}); | ||
+ | JSHELPER.animate(liList[i].children[1], {width:300, height: 300, left: -50, top: -50}); | ||
+ | }; | ||
+ | liList[i].children[0].onmouseout = function() { | ||
+ | liList[i].style.zIndex = 10; | ||
+ | JSHELPER.animate(liList[i].children[0], {width:170, height: 170, left: 5, top: 5}); | ||
+ | JSHELPER.animate(liList[i].children[1], {width:190, height: 190, left: 5, top: 5}); | ||
+ | }; | ||
+ | })(i); | ||
+ | } | ||
+ | |||
+ | }; | ||
</script> | </script> | ||
</body> | </body> | ||
</html> | </html> |
Revision as of 08:26, 6 September 2014
<!DOCTYPE HTML>