自己写的一个banner动画
html
<div class="nav" >
<div class="nav_son" id="nav">
<div class="nav_cont img_1">
<div class="nav_img "><img src="data:images/001_03.png" width="" height="" /></div>
</div>
<div class="nav_cont img_2">
<div class="nav_img "><img src="data:images/001_05.png" width="" height="" /></div>
</div>
<div class="nav_cont img_3">
<div class="nav_img"><img src="data:images/banner1_01.png" width="" height="" /></div>
</div>
<div class="nav_cont img_4">
<div class="nav_img"><img src="data:images/nav005_03.png" width="" height="" /></div>
</div>
</div>
<div class="nav_but">
<ul class="nav_but_ul" id="butUl">
<li class="check"></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div>
css
*{ margin:; padding:;}
ul ,li { list-style:none;}
.nav {
height: 525px;
width: 100%;
position:relative;
overflow:hidden;
}
.nav_cont {
background-repeat: no-repeat;
background-position: center top;
position:absolute;
top:0px;
width:100%; height:100%;
left:-100%;
}
.nav_son {width: 100%; height:100%; position:absolute;left:100%; }
.img_1 { background-image:url(images/003_006bg.jpg)}
.img_2 { background-image:url(images/003_005bg.jpg)}
.img_3 { background-image:url(images/banner1.jpg)}
.img_4 { background-image:url(images/nav005.jpg)}
.nav_img { position:absolute; left:50%; margin-left:-600px; }
.nav .nav_but {
width: 100%;
position: absolute;
bottom: 10px;
z-index:;
}
.nav_but_ul { overflow:auto; width:120px; margin:0 auto;height: 20px;}
.nav_but_ul li { float:left; width:14px; height:14px; background:url(images/1CdeO2mZF63.PNG); text-indent:-9999px; cursor:pointer; margin-right:5px ;background-position:-14px 0px;}
.nav_but_ul li.check { background-position:0px 0px;}
js
var nav = document.getElementById("nav");
var list = document.querySelectorAll("#nav>div");
var nowNum = 0 ;
var start = 4 ;
var butList = document.querySelectorAll("#butUl>li");
var timer = null;
window.onload = function (){
list[nowNum].style.zIndex = 9 ;
for (var i=0; i<butList.length;i++){
butList[i].setAttribute("index",i);
}
isAddEvent(1);
setTimeout(init,7000)
} ;
function func (e){
e = e || window.event ;
if(e.target){ var ele = e.target}
else if (e.srcElement){
var ele = e.srcElement
}
var num = parseInt( ele.getAttribute("index"));
init(num);
}
function init(num){
if(num != null){
goImg =num ;
if (goImg == nowNum ){
return ;
}
}
else {
goImg = nowNum+1 ; }
if(goImg == 4){goImg= 0 ;}
list[goImg].style.left = "0px";
move(goImg);
if(timer){clearTimeout(timer);timer = setTimeout(init,7000); }
else {
timer = setTimeout(init,7000);
}
}
function isAddEvent (isBut){
for (var i=0; i<butList.length;i++){
if(isBut){listenEvent(butList[i],"click",func);}
else {stopListening(butList[i],"click",func);}
}
}
function move (goImg){
isAddEvent(0);
this.goImg = goImg;
var sonImg = list[nowNum].getElementsByTagName("div")[0];
var sonNowPos = GetCurrentStyle(sonImg,"left");
var nex = /%$/g ;
var nowPosition = GetCurrentStyle(nav,"left");
if(nex.test(sonNowPos)){
sonNowPos = parseInt(sonNowPos)/100 * document.body.clientWidth;
} else { sonNowPos = parseInt(sonNowPos);}
if(nex.test(nowPosition)){
nowPosition =parseInt(nowPosition)/100 * document.body.clientWidth;
} else { nowPosition = parseInt(nowPosition);}
//console.log(nowNum,goImg);
var butList = document.querySelectorAll("#butUl>li");
for (var i=0; i<butList.length;i++){butList[i].className = "" }
butList[goImg].className = "check ";
start*= 1.5 ;
sonNowPos =Math.floor(sonNowPos-start);
sonImg.style.left = sonNowPos+"px";
time = setTimeout("move(this.goImg)",100);
if(sonNowPos<300){
nowPosition-=document.body.clientWidth/10;
nav.style.left = nowPosition+"px";
}
console.log(nowPosition);
if(nowPosition<=0){
nav.style.left = "100%"
sonImg.style.left = "50%";
sonImg.removeAttribute("style");
list[nowNum].style.zIndex = 0 ;
list[nowNum].removeAttribute("style");
list[goImg].removeAttribute("style");
list[goImg].style.zIndex = 9 ;
nowNum = goImg;
start=4;
isAddEvent(1);
clearTimeout(time);
}
}
// 侦听
function listenEvent(eventTarget,eventType,eventHandler){
if(eventTarget.addEventListener){
eventTarget.addEventListener(eventType,eventHandler)
}
else if (eventTarget.attachEvent){
eventType = "on" +eventType ;
eventTarget.attachEvent(eventType,eventHandler)
}
else {
eventTarget["on"+eventType]=eventHandler;
}
}
// 停止侦听
function stopListening(eventTarget,eventType,eventHandler){
if(eventTarget.removeEventListener){
eventTarget.removeEventListener(eventType,eventHandler);
}
else if (eventTarget.detachEvent){
eventType = "on" +eventType ;
eventTarget.detachEvent(eventType,eventHandler);
}
else {
eventTarget["on"+eventType]=null;
}
}
//获得样式
function GetCurrentStyle (obj, prop)
{
if (obj.currentStyle) //IE
{
return obj.currentStyle[prop];
}
else if (window.getComputedStyle) //非IE
{
propprop = prop.replace (/([A-Z])/g, "-$1");
propprop = prop.toLowerCase ();
return document.defaultView.getComputedStyle(obj,null)[propprop];
}
return null;
}
ps:可能有点小BUG,但是我目前看不出来哪里出问题了。求高手解决。
自己写的一个banner动画的更多相关文章
- 用C3中的animation和transform写的一个模仿加载的时动画效果
用用C3中的animation和transform写的一个模仿加载的时动画效果! 不多说直接上代码; html标签部分 <div class="wrap"> <h ...
- C# WPF 低仿网易云音乐(PC)Banner动画控件
原文:C# WPF 低仿网易云音乐(PC)Banner动画控件 由于技术有限没能做到一模一样的动画,只是粗略地做了一下.动画有点生硬,还有就是没做出网易云音乐的立体感.代码非常简单粗暴,而且我也写有很 ...
- 如何在RCP程序中添加一个banner栏
前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力.以前有个客户提出要在RCP程序中添加一个bann ...
- 原生js写的一个弧形菜单插件
弧形菜单是一种半弧式或者全弧形菜单,是一种不同于传统横向或者竖向菜单形式的菜单.最近在网上看到好多人写出了这种效果,于是也尝试自己写了一个. 实现方式:原生态js 主要结构: 1.参数合并 var d ...
- 开源自己写的一个拖拽库,兼容到IE8+
github地址:https://github.com/qiangzi7723/draggable 目前这个库的兼容做到了兼容IE8,所以如果需要兼容IE8的朋友不妨试试.库里面写了很多的注释,对于想 ...
- Android给ListView添加一个入场动画
动画是一个App体现良好交互的一种手段,通常的我们会看到很多App的ListView的Item都有一个入场动画例如: 可以看到,当进入界面加载ListView的Item的时候有一个向左滑动显示,并且淡 ...
- iOS-如何写好一个UITableView
如何写好一个UITableView 字数5787 阅读3745 评论25 喜欢69 本文是直播分享的简单文字整理,直播共分为上.下两部分.第一部分:优酷 Or YouTube,第二部分:优酷 Demo ...
- 用css3+js写了一个钟表
有一天看到css3旋转这个属性,突发奇想的写了一个钟表(没做浏览器兼容),来一起看看是怎么写的吧! 先给个成品图,最终结果是个样子的(动态的). 首先,思考了一下页面的布局,大致需要4层div,最底层 ...
- 写了一个迷你toast提示插件,支持自定义提示文字和显示时间
写了一个迷你toast提示插件,支持自定义提示文字和显示时间,不想用其他第三方的ui插件,又想要toast等小效果来完善交互的同学可以试试, 代码中还贡献了一段css能力检测js工具函数,做项目的时候 ...
随机推荐
- 【HDOJ】1247 Hat’s Words
字典树. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 50005 #d ...
- Linux on Power 上的调试工具和技术
Linux on Power 上的调试工具和技术 简介: 调试是一项主要的软件开发活动,作为应用程序开发人员,您无法避免对程序进行调试.有效的调试不仅能缩短软件开发周期,而且可以节省成本.本文简要介 ...
- 构造函数语义学之Copy Constructor构建操作(2)
二.详述条件 3 和 4 那么好,我又要问大家了,条件1 和 2比较容易理解.因为member object或 base class 含有copy constructor.那么member objec ...
- AlgorithmsI PA2: Randomized Queues and Deques Deque
本次作业考察利用array 或者linked list 实现规定时间复杂度的queue 和stack, 不能使用java 自带的stack 和queue. 目的是让我们掌握自己设计的函数的复杂度. D ...
- Keepalived实现Redis Failover
一.环境说明 操作系统版本:RHEL 5.4_64 redis版本:2.8.17 keepalived版本:1.1.15 master:10.142.130.81 slave: 10.142.130 ...
- IIS 启用或关闭目录浏览
如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在. 使用 IIS 管理器启用目录浏览. 打开 IIS 管理器. 在“功能”视图中,双击“目录浏览”. 在“目录浏览”页上,在“操作”窗格中单击 ...
- Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法
一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install gcc-arm-linux-gnueabi 前提是你的Ubuntu系统版本是官网支持的最新的版本, ...
- [Locked] Flip Game I & II
Flip Game I You are playing the following Flip Game with your friend: Given a string that contains o ...
- python 解析xml 文件: DOM 方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- Power Strings - POJ 2406(求循环节)
题目大意:叙述的比较高大上,其实就是一个字符串B = AAAAAAA,求出来这个A最短有多长 分析:注意如果这个串不是完全循环的,那么循环节就是就是它本身. 代码如下: #include< ...