结合了所学的简单运动框架~  做这样一个综合小实例~~

-------------------------主要问题:

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的图片轮换效果的更多相关文章

  1. 仿FLASH的图片轮换效果

    css布局代码(test.css): body { background: #ccc;} ul { padding: 0; margin: 0;} li { list-style: none;} im ...

  2. 仿flash实现图片轮换播放

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. jQuery仿迅雷图片轮换效果

    jQuery仿迅雷图片轮换效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  4. Jquery实现图片轮换效果

    最近在看jquery书时,看到一个比较有趣的东西:图片轮换.这里和大家分享下我看完后写的一个demo.实现图片轮换要完成三部分模块:html部分.css部分.jqury部分.下面分步详细说明.1.ht ...

  5. Magnifier.js - 支持鼠标滚轮缩放的图片放大镜效果

    Magnifier.js 是一个 JavaScript 库,能够帮助你在图像上实现放大镜效果,支持使用鼠标滚轮放大/缩小功能.放大的图像可以显示在镜头本身或它的外部容器中.Magnifier.js 使 ...

  6. jquery带小图的图片轮换效果

    右边显示大图,左边显示小图 <style> ul{ list-style:none; padding:0px; margin:0px;} li{ list-style:none; padd ...

  7. 仿flash的文字动画效果

    .tips{ font-size: 24px; font-family: sans-serif; font-weight: 600; text-shadow: 1px 1px #ffb700; col ...

  8. DeWeb : 制作图片轮换效果

    演示:http://www.web0000.com/slide.dw源代码:http://www.web0000.com/media/source/slide.zip一.新建一个DLL二.除第一行外, ...

  9. 使用纯生js实现图片轮换

    效果图预览. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

随机推荐

  1. JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)

    1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...

  2. .NET Core的文件系统[2]:FileProvider是个什么东西?

    在<读取并监控文件的变化>中,我们通过三个简单的实例演示从编程的角度对文件系统做了初步的体验,接下来我们继续从设计的角度来继续认识它.这个抽象的文件系统以目录的形式来组织文件,我们可以利用 ...

  3. ASP.NET Core 阶段性总结

    自从年前用 ASP.NET 5 磕磕绊绊重写了一个项目后 (2015.12),就没怎么关注 ASP.NET 5 相关内容了,为啥?因为实际应用问题太多,而且不是正式版本,变化实在太快,可能你今天了解的 ...

  4. DotNet 资源大全中文版(Awesome最新版)

    Awesome系列的.Net资源整理.awesome-dotnet是由quozd发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. 算法与数据结构 ...

  5. 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)

    Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  6. 使用代码向一个普通的类注入Spring的实例

    转载请在页首注明作者与原文地址 一:应用场景 什么是普通的类,就是没有@Controller,@Service,@Repository,@Component等注解修饰的类,同时xml文件中,也没有相应 ...

  7. C#基础知识七之const和readonly关键字

    前言 不知道大家对const和readonly关键字两者的区别了解多少,如果你也不是很清楚的话,那就一起来探讨吧!探讨之前我们先来了解静态常量和动态常量. 静态常量 所谓静态常量就是在编译期间会对变量 ...

  8. WPF 自定义Grid双击事件

    先设置Grid_MouseDown事件函数,然后在函数内增加如下代码 ) { //双击执行 } 更改数字可以区别单击和双击 感谢@一 定 会 去 旅 行

  9. asp.net记录错误日志的方法

    1.说明 在调试发布后的asp.net项目时有可能会遇到意想不到的错误,而未能及时的显示.这就需要记录日志来跟踪错误信息,所以写了个简单的记录信息的方法,记录简单的文本信息也可以使用.此方法是以生成文 ...

  10. Live555流媒体服务器编译(Windows下)

    最近在回顾之前做过的相关项目,其中包括live555流媒体服务器相关,今天先把live555开源框架在Windows下的编译方法记录一下. live555是一套使用使用开放的标准协议(RTP/RTCP ...