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. ...
随机推荐
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(31)-MVC使用RDL报表
系列目录 这次我们来演示MVC3怎么显示RDL报表,坑爹的微软把MVC升级到5都木有良好的支持报表,让MVC在某些领域趋于短板 我们只能通过一些方式来使用rdl报表. Razor视图不支持asp.ne ...
- 《Head First 设计模式》之策略模式
作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5915202.html 模式名称 策略模式(Strategy Pattern) 需求 模拟鸭子游戏,游戏 ...
- STM32 NVIC配置详解
例程: /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1) ...
- Node学习笔记(三):基于socket.io web版你画我猜(一)
经过惨淡的面试,也是知道了自己的不足,刚好最近在学习node,心中便有了做一个web版的你画我猜的想法 首先说下思路,在做准备工作的时候,有两个大概的思路: 1.规定一块div,捕捉鼠标事件,动态生成 ...
- 『.NET Core CLI工具文档』(二).NET Core 工具遥测(应用信息收集)
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Tools Telemetry 翻译:.NET Core 工具遥测(应用信息收集) .NET Cor ...
- c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】
字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...
- jquery动态生成的元素添加事件的方法
动态生成的元素如果要添加事件,要写成 $(document).on("click", "#txtName", function() { alert(this.v ...
- c语言实现输入一组数自动从大到小排列
#include <stdio.h>main(){ int x; printf("请输入要排序数字个数:"); scanf("%d" ...
- Java微信公众平台接口封装源码分享
前言: 这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...
- JVM调优总结
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操作 ...