基于javascript实现图片滑动效果
今天看了别人写的图片滑动,看起来很酷,读源码时,似乎有些困难,就模仿着写了一个,实现的效果与原网页相同,不过自己的js代码,逻辑简单,有待改进。
ps:前两天写了旋转木马,那个兼容性不好,今天写这个网页的时候,也是按照这个思路,在谷歌浏览器上运行很好,火狐很多功能不能实现,由于wrap——panel使用了绝对定位,就将translate平移改为了left。改动后,各个浏览器运行的效果不错。
具体代码如下
html代码(没写注释)
<divclass="container"> <h1>ParallaxSlider</h1> <divclass="wrap"> <divclass="bg-img"> <divid="bg_1"class="bgbg-1"style="left:0px;"></div> <divid="bg_2"class="bgbg-2"style="left:0px;"></div> <divid="bg_3"class="bgbg-3"style="left:0px;"></div> </div> <divid="wrap_panel"class="wrap-panel"style="left:0px;"> <divclass="panelpanel-1"> <imgid="img_1"src="images/1.jpg"> </div> <divclass="panelpanel-2"> <imgsrc="images/2.jpg"> </div> <divclass="panelpanel-3"> <imgsrc="images/3.jpg"> </div> <divclass="panelpanel-4"> <imgsrc="images/4.jpg"> </div> <divclass="panelpanel-5"> <imgsrc="images/5.jpg"> </div> <divclass="panelpanel-6"> <imgsrc="images/6.jpg"> </div> </div> <divclass="navigation-button"> <spanid="perv_btn"class="perv-button"></span> <spanid="next_btn"class="next-button"></span> </div> <divid="show_small"class="show-small"> <ul> <li><imgsrc="images/thumbs/1.jpg"></li> <li><imgsrc="images/thumbs/2.jpg"></li> <li><imgsrc="images/thumbs/3.jpg"></li> <li><imgsrc="images/thumbs/4.jpg"></li> <li><imgsrc="images/thumbs/5.jpg"></li> <li><imgsrc="images/thumbs/6.jpg"></li> </ul> </div> </div> </div>
css代码(自己对应着看):
*{margin:0;padding:0;} html,body,.container{width:100%;height:100%;font-family:'MicrosoftYahei';} .container{background-color:#222;overflow-x:hidden;} .containerh1{font-size:50px;color:#ccc;text-align:center;font-weight:bolder;height:120px;line-height:120px;} .wrap{position:relative;width:600%;height:400px;border-top:10pxsolid#333;border-bottom:10pxsolid#333;margin-top:20px;} .bg{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-transition:all1s;-moz-transition:all1s;-ms-transition:all1s;-o-transition:all1s;transition:all1s;} .bg-1{background:url(images/bg1.png);} .bg-2{background:url(images/bg2.png);} .bg-3{background:url(images/bg3.png);} .wrap-panel{position:absolute;width:100%;height:100%;-webkit-transition:all1s;-moz-transition:all1s;-ms-transition:all1s;-o-transition:all1s;transition:all1s;} .panel{width:16.66%;height:100%;float:left;} .panelimg{display:block;margin:0auto;margin-top:35px;border-radius:10px;border:10pxsolidrgba(143,143,143,0.6);} .navigation-buttonspan:hover{opacity:0.8} .perv-button,.next-button{position:absolute;width:30px;height:60px;background-color:#344133;border-radius:10px;cursor:pointer;opacity:0.4;} .perv-button{background:#000url(images/prev.png)centercenterno-repeat;} .next-button{background:#000url(images/next.png)centercenterno-repeat;} .show-small{position:absolute;width:680px;bottom:20px;} .show-smallul{list-style:none;} .show-smallulli{float:left;margin:010px;border:5pxsolid#fff;opacity:0.7;cursor:pointer;-webkit-transition:all.3s;-moz-transition:all.3s;-ms-transition:all.3s;-o-transition:all.3s;transition:all.3s;} .show-smallulli:hover{margin-top:-15px;}
js代码(小demo):
window.onload=function(){ //得到元素 vargetDOM=function(id){ returntypeofid==="string"?document.getElementById(id):id; } //得到对象 varimg=getDOM('img_1'); varprev=getDOM("perv_btn"); varnext=getDOM("next_btn"); varwrap_panel=getDOM('wrap_panel'); varbg_1=getDOM("bg_1"); varbg_2=getDOM("bg_2"); varbg_3=getDOM("bg_3"); varshow_small=getDOM("show_small"); varlist=show_small.getElementsByTagName("li"); varwwidth; //为元素绑定事件 varaddEvent=function(id,event,fn){ varel=getDOM(id)||document; if(el.addEventListener){ el.addEventListener(event,fn,false); }elseif(el.attachEvent){ el.attachEvent('on'+event,fn); } } functioninit(){ //对按钮进行定位 //向前按钮的左边距离=图片的左距离+边框 prev.style.left=img.offsetLeft+10+'px'; //向前按钮的上边距离=图片的上距离+图片高度的一半-按钮高度的一半 prev.style.top=img.offsetTop+img.clientHeight/2-prev.clientHeight/2+'px'; next.style.left=img.offsetLeft+img.clientWidth+10-next.clientWidth+'px'; next.style.top=prev.style.top; //对小图片的容器进行定位 wwidth=document.documentElement.clientWidth||document.body.clientWidth; show_small.style.left=(wwidth-show_small.clientWidth)/2+'px'; } //小图片的处理 functionsmall_img(){ //对图片进行旋转处理 for(vari=0;i<list.length;i++){ //旋转方向 vardirection=Math.pow(-1,parseInt(Math.random()*10)); list[i].style="transform:rotate("+(Math.random()*20*direction)+"deg)"; } list[0].style.opacity=1; } functiononly_one(el,num){ for(vari=0;i<el.length;i++){ el[i].style.opacity=0.7; } //console.log(num); el[num].style.opacity=1; } //浏览器缩放时 window.onresize=function(){ init(); } //执行函数 init(); small_img(); addEvent(prev,'click',function(){ //改变wrap-panel的left varoldPos=parseInt(wrap_panel.style.left); if(oldPos==0){ //背景平移图片容器平移 bg_1.style.left=bg_2.style.left=bg_3.style.left=wrap_panel.style.left=-wwidth*(list.length-1)+'px'; //更改对应小图片透明度 only_one(list,list.length-1); }else{ //背景平移图片容器平移 wrap_panel.style.left=(oldPos+wwidth)+'px'; bg_1.style.left=(oldPos+wwidth-parseInt(-(oldPos/wwidth+1))*100)+'px'; bg_2.style.left=(oldPos+wwidth-parseInt(-(oldPos/wwidth+1))*300)+'px'; bg_3.style.left=(oldPos+wwidth-parseInt(-(oldPos/wwidth+1))*500)+'px'; //更改对应小图片透明度 only_one(list,parseInt(-(oldPos/wwidth+1))); } }); addEvent(next,'click',function(){ //改变wrap-panel的left varoldPos=parseInt(wrap_panel.style.left); if(oldPos==-wwidth*(list.length-1)){ //背景平移图片容器平移 bg_1.style.left=bg_2.style.left=bg_3.style.left=wrap_panel.style.left='0px'; //更改对应小图片透明度 only_one(list,0); }else{ //背景平移图片容器平移 wrap_panel.style.left=(oldPos-wwidth)+'px'; bg_1.style.left=(oldPos-wwidth+parseInt(-(oldPos/wwidth+1))*100)+'px'; bg_2.style.left=(oldPos-wwidth+parseInt(-(oldPos/wwidth+1))*300)+'px'; bg_3.style.left=(oldPos-wwidth+parseInt(-(oldPos/wwidth+1))*500)+'px'; //更改对应小图片透明度 only_one(list,parseInt(-(oldPos/wwidth-1))); } }); }
以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。