JS 阶段练习~ 仿flash的图片轮换效果
结合了所学的简单运动框架~ 做这样一个综合小实例~~
-------------------------主要问题:
1、getByClassName IE低版的兼容性
2、DOM不够严谨 … 各种跳出和bug
3、实现方法麻烦~ 代码完全与精简不挨边……
-------------------------解决方法:
- - 目前只能做到这样,慢慢学,慢慢进步了~
-------------------------要实现功能如下:
1、鼠标移入大图,左右按钮显示(控制opaicty)
2、当前显示的大图,对应小图全显,其他为半透明(控制opacity)
3、每张切换的大图窗格切换效果 (控制height运动)
4、小图的滚动播放,大图跟随(小图整个部分left的值)
5、自动播放,鼠标移入移出,停止 继续~(setInterval)

大致布局:
由外到内allWrap 从上到下topWrap bottomWrap
topWrap里div里放大图, 按钮和其他显隐单独布出
bottomWrap里给个不设宽的ul~ 让其宽度为li宽度*li的个数
------------------------------------------------------ javascript代码如下 --------------------------------
//这是上次的综合运动框架~ 就不再写了
<script src="js/sports.js"></script>
<script>
// 执行函数
window.onload = function(){
	  // 控制声明变量
	  // 按钮效果
	  var oAllWrap    = document.getElementById('allWrap');
	  var oBtn_LW     = oAllWrap.getElementsByClassName('btnLeftWrap')[0];
	  var oBtn_L      = oAllWrap.getElementsByClassName('btnLeft')[0];
	  var oBtn_RW     = oAllWrap.getElementsByClassName('btnRightWrap')[0];
	  var oBtn_R      = oAllWrap.getElementsByClassName('btnRight')[0];
  // 大图切换
	  var oPlace      = oAllWrap.getElementsByClassName('placeholder')[0];
	  var aP_img      = oPlace.getElementsByTagName('img');
	  var oB_Wrap     = oAllWrap.getElementsByClassName('bottomWrap')[0];
	  var oGallery    = oB_Wrap.getElementsByClassName('gallery')[0];
	  var aG_li       = oGallery.getElementsByTagName('li');
	  var oNowzIndex  = 2;
	  var oNowClick   = 0;
  // 封装函数
	  function tab(){
		    // 1、点击小图,实现大图切换
		    aP_img[oNowClick].style.zIndex = oNowzIndex++;
		    // 2、点击后,当前点击小图透明度100%
		    for(var j=0; j<aG_li.length; j++){
			    moveStart(aG_li[j],'opacity',30);
		    }			
		    moveStart(aG_li[oNowClick],'opacity',100);		
		    // 3、点击后,实现大图伸缩播放
		    aP_img[oNowClick].style.height = 0;
		    moveStart(aP_img[oNowClick],'height',400);
    // 4、点击后,图片的滚动播放特效
		    // 若为第0张,不要变位置
		    if( oNowClick == 0 ){
			      moveStart(oGallery,'left',0);
		    }
		    // 若是最后张,位置变为倒数第二张一样
		    else if( oNowClick == aG_li.length-1 ){
			      moveStart(oGallery,'left',-aG_li[0].offsetWidth*(oNowClick-2) );
		    }
		    // 其他情况下才变动位置
		    else{
			      moveStart(oGallery,'left',-aG_li[0].offsetWidth*(oNowClick-1) );
		    }
	  }
/* -------------------------添加事件--------------------------------- */
  // 按钮效果
	  oBtn_LW.onmouseover = oBtn_L.onmouseover = function(){
		    moveStart(oBtn_L,'opacity',80);
	  }
	  oBtn_LW.onmouseout  = function(){
		    moveStart(oBtn_L,'opacity',0);
	  }
  oBtn_RW.onmouseover = oBtn_R.onmouseover = function(){
		    moveStart(oBtn_R,'opacity',80);
	  }
	  oBtn_RW.onmouseout  = function(){
		    moveStart(oBtn_R,'opacity',0);
	  }
	  //大图切换
	  for(var i=0; i<aG_li.length; i++){
    // 让小图ul的宽度 等于 li宽度*li个数
		    oGallery.style.width = aG_li[0].offsetWidth * aG_li.length + 'px';
    // 添加自定义属性 序号 index = i;
		    aG_li[i].index = i;
		    aG_li[i].onclick = function(){
// 组合特效--------------1大图切换 2透明度 3伸缩播放 4滚动播放
    if(this.index == oNowClick)return;
			    oNowClick = this.index;
tab();
}
    //小图移入移出透明度变化
		    aG_li[i].onmouseover = function(){			
			    moveStart(this,'opacity',100);			
		    }
    aG_li[i].onmouseout  = function(){
			      if(this.index != oNowClick){
				        moveStart(this,'opacity',30);
			      }			
		    }		
	  }
  //左右按钮点击后效果
	  oBtn_L.onclick = function(){
		    oNowClick--;
		    if(oNowClick == -1){
			      oNowClick = aG_li.length-1;
		    }
		    tab();
	  }
  oBtn_R.onclick = function(){
		    oNowClick++;
		    if(oNowClick == aG_li.length){
			      oNowClick = 0;
		    }
		    tab();
	  }
  // 设置自动播放~
	  var timer_autoPlay = null;
	  timer_autoPlay = setInterval(oBtn_R.onclick,3000);
  oAllWrap.onmouseover = function(){
		    clearInterval(timer_autoPlay);
	  }
	  oAllWrap.onmouseout  = function(){
		    timer_autoPlay = setInterval(oBtn_R.onclick,3000);
	  }
}
</script>
JS 阶段练习~ 仿flash的图片轮换效果的更多相关文章
- 仿FLASH的图片轮换效果
		css布局代码(test.css): body { background: #ccc;} ul { padding: 0; margin: 0;} li { list-style: none;} im ... 
- 仿flash实现图片轮换播放
		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ... 
- jQuery仿迅雷图片轮换效果
		jQuery仿迅雷图片轮换效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ... 
- Jquery实现图片轮换效果
		最近在看jquery书时,看到一个比较有趣的东西:图片轮换.这里和大家分享下我看完后写的一个demo.实现图片轮换要完成三部分模块:html部分.css部分.jqury部分.下面分步详细说明.1.ht ... 
- Magnifier.js - 支持鼠标滚轮缩放的图片放大镜效果
		Magnifier.js 是一个 JavaScript 库,能够帮助你在图像上实现放大镜效果,支持使用鼠标滚轮放大/缩小功能.放大的图像可以显示在镜头本身或它的外部容器中.Magnifier.js 使 ... 
- jquery带小图的图片轮换效果
		右边显示大图,左边显示小图 <style> ul{ list-style:none; padding:0px; margin:0px;} li{ list-style:none; padd ... 
- 仿flash的文字动画效果
		.tips{ font-size: 24px; font-family: sans-serif; font-weight: 600; text-shadow: 1px 1px #ffb700; col ... 
- DeWeb : 制作图片轮换效果
		演示:http://www.web0000.com/slide.dw源代码:http://www.web0000.com/media/source/slide.zip一.新建一个DLL二.除第一行外, ... 
- 使用纯生js实现图片轮换
		效果图预览. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ... 
随机推荐
- MVC5 网站开发之四 业务逻辑层的架构和基本功能
			业务逻辑层在Ninesky.Core中实现,主要功能封装一些方法通过调用数据存储层,向界面层提供服务. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 ... 
- EF Core 数据库迁移(Migration)
			工具与环境介绍 1.开发环境为vs 2015 2.mysql EF Core支持采用 Pomelo.EntityFrameworkCore.MySql 源代码地址(https://github. ... 
- 从零开始编写自己的C#框架(16)——Web层后端父类
			本章节讲述的各个类是后端系统的核心之一,涉及到系统安全验证.操作日志记录.页面与按键权限控制.后端页面功能封装等内容,希望学习本系列的朋友认真查看新增的类与函数,这对以后使用本框架进行开发时非常重要. ... 
- JVM学习(4)——全面总结Java的GC算法和回收机制
			俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的 ... 
- git 版本回退
			由于操作失误,需要将代码进行版本回退,首先在本地仓库执行了“git reset --hard HEAD^”命令,这样只会回退本地仓库的代码,但是我的代码之前已经push到了远程库中,查看远程仓库,发现 ... 
- LCS记录
			如题:求两个序列的最长公共序列.(如:"ABCBDAB"与"BCDB"最长公共序列为"BCDB")代码如下: #define MAX_SIZ ... 
- 1.【使用EF Code-First方式和Fluent API来探讨EF中的关系】
			原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/relationship-in-entity-framework-using-code-firs ... 
- MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)
			最近帮忙公司的几个项目组进行了不同方面的性能优化,发现几个项目都出现了一些共性的问题.这里写一篇文章,总结一下这几类问题,以及其对应的解决方案.方便其它项目组参考. 常见问题一:打开页面非常慢,有 ... 
- IIS 如何设置多个Access-Control-Allow-Origin
			1,跨域请求ajax,可以增加请求Header,动态添加 System.Collections.Generic.List<string> lHost = new System.Collec ... 
- 文字处理控件TX Text Control的使用
			这几天一直在研究TX Text Control的使用,由于这方面的资料相对比较少,主要靠下载版本的案例代码进行研究,以及官方的一些博客案例进行学习,使用总结了一些心得,特将其总结出来,供大家分享学习. ... 
