运用CSS3transition及opacity属性 制作图片轮播动画

自己这两天根据用js来控制触发CSS3中transition属性,从而写出来的以CSS3动画为基础,js控制过程的图片轮播

运用css3的opacity透明度属性和transition动画过度属性,用js对过程加以控制,也实现了js对CSS3中transition动画的触发

实例链接地址:http://pspgbhu.github.io/opacity

今天突然发现这个代码有问题,主要出在html/css上,问题主要是由于使用了position:absolute定位,同时banner这个div中又没有其他元素,因此这个div就无法被正确的撑开,为我们的页面布局带来了困扰。
再其次的问题是,这个轮播图主要意图是用于页面顶部的巨大的横幅广告,但是在写代码时并没有考虑到面对不同分辨率情况下的展现效果,因此还有许多改良的空间。


想了想还是不把之前有问题的代码删掉了,正确代码在最后面

这是之前有问题的代码:

<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title>图片自动切换 图片轮播</title>
<style type="text/css">
/*注意 第一张图片z-index值是5,后面的图片值为1*/
*{margin: 0;padding: 0;}
.banner {
width: 1920px;
height: 493px;
position: relative;
} .banner_slide_1 {
position: absolute;
top: 0;
left: 0;
display: block;
transition: opacity 0.5s;
opacity: 1;
z-index: 5;
} .banner_slide_2 {
position: absolute;
top: 0;
left: 0;
display: none;
transition: opacity 0.5s;
opacity: 0;
z-index: 1;
} .banner_slide_3 {
position: absolute;
top: 0;
left: 0;
display: none;
transition: opacity 0.5s;
opacity: 0;
z-index: 1;
}
</style>
<script type="text/javascript">
window.onload=function bannerSlide() {
var i = 0;
var banner = new Array//将图片创建为一个数组
banner[0] = document.getElementById("banner1");
banner[1] = document.getElementById("banner2");
banner[2] = document.getElementById("banner3");
sli = setInterval(slide, 5000); //轮播间隔时间
function slide() {
if (i == banner.length - 1) {
banner[0].style.display = "block";
banner[0].style.opacity = "1";
banner[i].style.opacity = "0";
setTimeout(function() {
banner[i].style.display = "none";
banner[i].style.zIndex = "1";
banner[0].style.zIndex = "5";
i = 0;
}, 500)
} else {
banner[i + 1].style.display = "block";
banner[i + 1].style.opacity = "1";
banner[i].style.opacity = "0";
setTimeout(function() {
banner[i + 1].style.zIndex = "5";
banner[i].style.display = "none";
banner[i].style.zIndex = "1";
i++;
}, 500)
}
}
}
</script>
</head> <body> <div class="banner">
<div class="banner_slide_1" id="banner1"><img src="img/banner.jpg" alt="" /></div>
<div class="banner_slide_2" id="banner2"><img src="img/banner02_02.jpg" /></div>
<div class="banner_slide_3" id="banner3"> <img src="img/banner3.jpg" /></div>
</div> </body> </html>

以下为改良后的代码:

<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
*{padding: 0;margin: 0;
}
.banner {
width: 100%;
min-width: 1200px;
height: 488px;
overflow: hidden;
} .banner_index {
position: relative;
} .banner_slide_1 {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: block;
transition: opacity 0.5s;
opacity: 1;
z-index: 5;
background: url(img/banner.jpg) no-repeat;
background-position: center 0;
} .banner_slide_2 {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: none;
transition: opacity 0.5s;
opacity: 0;
z-index: 1;
background: url(img/banner02_02.jpg) no-repeat;
background-position: center 0;
} .banner_slide_3 {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: none;
transition: opacity 0.5s;
opacity: 0;
z-index: 1;
background: url(img/banner3.jpg) no-repeat;
background-position: center 0;
}
</style>
<script type="text/javascript">
window.onload=function bannerSlide() {
if (!document.getElementById) return false;
if (!document.getElementsByTagName) return false;
if (!document.getElementById("bannerBox")) return false;
var i = 0;
var box = document.getElementById("bannerBox");
var banner = box.getElementsByTagName("div");
sli = setInterval(slide, 4000); //轮播间隔时间
function slide() {
if (i == banner.length - 1) {
banner[0].style.display = "block";
banner[0].style.opacity = "1";
banner[i].style.opacity = "0";
setTimeout(function() {
banner[i].style.display = "none";
banner[i].style.zIndex = "1";
banner[0].style.zIndex = "5";
i = 0;
}, 500) //动画过渡时间,搭配CSS使用
} else {
banner[i + 1].style.display = "block";
banner[i + 1].style.opacity = "1";
banner[i].style.opacity = "0";
setTimeout(function() {
banner[i + 1].style.zIndex = "5";
banner[i].style.display = "none";
banner[i].style.zIndex = "1";
i++;
}, 500)
}
}
}
</script> </head> <body> <div id="bannerBox" class="banner banner_index">
<div class="banner_slide_1" id="banner1"></div>
<div class="banner_slide_2" id="banner2"></div>
<div class="banner_slide_3" id="banner3"></div>
</div> </body> </html>

作者博客:[pspgbhu](http://ghosertblog.github.com)

作者GitHub:https://github.com/pspgbhu

欢迎转载,但请注明出处,谢谢!

 

原生js+css3实现图片自动切换,图片轮播的更多相关文章

  1. 原生 JS 实现 VS Code 自动切换输入法状态!这次没有AHK

    上一篇文章:使用 AHK 在 VS Code 中根据上下文自动切换输入法状态 给出一个使用 ahk 在 VSCode 自动切换输入法的方法.不过这个方法实际上很蹩脚,一点都不优(zhuang)雅(bi ...

  2. js实现图片自动切换效果。

    js实现图片自动切换效果,简单实用,原谅我只是一只小菜鸟还在学大神天天写博文装逼. <script language="javascript"> setInterval ...

  3. jquery 图片自动切换

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

  4. JQury自动切换图片

    [标签]Jquery图片自动切换<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  5. tab切换效果 网站中的图片自动切换

    网站中的图片自动切换 今天上一套tab切换效果的代码 动图就自己实现吧! 下面贴HTML代码,大体分两部分,图片div和按钮div,代码很容易看懂~ <!DOCTYPE html> < ...

  6. Js实现图片点击切换与轮播

    Js实现图片点击切换与轮播 图片点击切换 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...

  7. Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片

    Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片 自定义ADPager 自定义水平滚动的ScrollView效仿ViewPager 当遇到要在Vie ...

  8. 分别用css3、JS实现图片简单的无缝轮播功效

    本文主要介绍分别使用CSS3.JS实现图片简单无缝轮播功效: 一.使用CSS3实现:利用animation属性 (实现一张一张的轮播,肉眼只看见一张图片) HTML部分比较简单,两个div下包着几个i ...

  9. 从零开始手把手教你使用原生JS+CSS3实现幸运水果机游戏

    项目体验地址 免费视频教程 游戏介绍 幸运水果机是一款街机游戏,游戏界面由24个方格拼接成一个正方形,每个方格中都有一个不同的水果图形,方格下都有一个小灯.玩家使用游戏币选择希望押注的目标,按下开始后 ...

随机推荐

  1. HTML5 语义元素(二)文本内容

    上一篇介绍的是关于页面结构方面的语义元素,本篇介绍文本内容方面,包含:<bdi>.<details>.<summary>.<mark>.<outp ...

  2. Android和JavaScript相互调用的方法

    转载地址:http://www.jb51.net/article/77206.htm 这篇文章主要介绍了Android和JavaScript相互调用的方法,实例分析了Android的WebView执行 ...

  3. 学习ASP.NET Core, 怎能不了解请求处理管道[4]: 应用的入口——Startup

    一个ASP.NET Core应用被启动之后就具有了针对请求的处理能力,而这个能力是由管道赋予的,所以应用的启动同时意味着管道的成功构建.由于管道是由注册的服务器和若干中间件构成的,所以应用启动过程中一 ...

  4. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  5. QT5利用chromium内核与HTML页面交互

    在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...

  6. python笔记(持续更新)

    1.编译python遇到下面的编码问题:     SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on lin ...

  7. [C#] C# 知识回顾 - 特性 Attribute

    C# 知识回顾 - 特性 Attribute [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5911289.html 目录 特性简介 使用特性 特性 ...

  8. jdb调试scala代码的简单介绍

    在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...

  9. http status code

    属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...

  10. Android MVP+Retrofit+RxJava实践小结

    关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava ...