[ javascript ] 司徒正美的fadeOut-fadeIn效果!

简介:

首先感谢司徒正美的文章!

在司徒大神的博客看到一个简单的渐入渐出的效果。全然採用js实现。

例如以下:

<!doctype html>
<html dir="ltr" lang="zh-CN" >
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=8">      
        <title>相冊</title>
    </head>
    <body>
        <div id="album" >
            <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/202906/t_type1.jpg" />
            <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/202906/t_type2.jpg" />
            <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/202906/t_type3.jpg" />
            <img src="http://images.cnblogs.com/cnblogs_com/rubylouvre/202906/t_type4.jpg" />
        </div>
        <style type="text/css">
            #album{
                position:relative;
                border:10px solid #000;
                width:85px;
                height:120px;
                overflow:hidden;
            }
            #album img{
                position:absolute;
                top:0;
                left:0;
                opacity:0;
                filter:alpha(opacity=0);
            }
        </style>
        <script type="text/javascript">
            var album = function(el){
                var node = (typeof el == "string")? document.getElementById(el):el;
                var images = node.getElementsByTagName("img");
                var length = images.length;
                for(var i=1;i<length;i++){
                    images[i].opacity = 0;//为全部图片设置一个自己定义属性opacity
                } 
                images[0].opacity = 0.99;
                images[0].style.display = "block";
                var current = 0;
                (function(){
                    setTimeout(function(){
                        var cOpacity = images[current].opacity,
                            next = images[current+1]?

current+1:0;//下一张图片的索引。假设没有就回到第一张 var nOpacity = images[next].opacity; cOpacity-=.05; nOpacity+=.05; images[current].opacity = cOpacity; images[next].opacity = nOpacity; images[next].style.display = "block";//确保肯定有一张图片是可见的 setOpacity(images[current]); setOpacity(images[next]); if(cOpacity<=0) { images[current].style.display = "none"; current = next; setTimeout(arguments.callee,1000); }else{ setTimeout(arguments.callee,50); } },100); })() } var setOpacity =function(obj) { if(obj.opacity>.99) { obj.opacity = .99; } obj.style.opacity = obj.opacity; obj.style.filter = "alpha(opacity=" + (obj.opacity*100) + ")"; } window.onload = function(){ var el = document.getElementById("album"); album(el); } </script> <p>请稍等4秒………………</p> </body> </html>


我一直非常明确,为什么这里的图片的效果一定须要等待4秒才会出现。于是。研究之,

发现。原来一切都是因为positon所造成的。因为定位是採用的absolute,所以导致了,最后一张图片会覆盖前面的图片。

那么在改变前面的图片的opacity的时候。全部的效果都会被最后的一张图给挡住.

如须要改变这样的情况,仅仅须要在初始化的时候,将全部的图的opacity都重置为0.

例如以下:

 #album img{
    position:absolute;
    top:0;
    left:0;
    opacity:0;
    filter:alpha(opacity=0);
  }

这样重置之后,发现这个世界又開始清静了。

整体来说效果还是蛮简单的。


是的。非常多人会说,干嘛不用jquery。jquery可能就是一句话的问题。

对于这个。不做解释。


偶有所得,以记录之,谨防忘记!







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5197052.html,如需转载请自行联系原作者

相关文章
|
18天前
|
JavaScript 前端开发 数据处理
JavaScript 游戏规则:setTimeout和setInterval的对决
JavaScript 游戏规则:setTimeout和setInterval的对决
16 1
|
6月前
|
机器学习/深度学习 前端开发 JavaScript
JavaScript在科技领域的应用
在当今科技发展的时代,JavaScript(简称JS)已经成为了一门广泛应用的编程语言。它具有跨平台、灵活性强、易于学习等特点,被广泛应用于网页开发、移动应用、物联网和人工智能等领域。本文将深入探索JavaScript在科技领域的各个应用场景。
|
6月前
|
前端开发 JavaScript
CSS + JavaScript 实现八卦太极图
CSS + JavaScript 实现八卦太极图
59 0
|
前端开发 JavaScript
细数 JavaScript 实用黑科技(一)
细数 JavaScript 实用黑科技(一)
118 0
|
存储 JavaScript 前端开发
JavaScript的迷惑行为大赏
JavaScript的迷惑行为大赏
207 0
|
Web App开发 移动开发 前端开发
梅须逊雪三分白,雪却输梅一段香——CSS动画与JavaScript动画
CSS动画并不是绝对比JavaScript动画性能更优越,开源动画库Velocity.js等就展现了强劲的性能。
梅须逊雪三分白,雪却输梅一段香——CSS动画与JavaScript动画
|
JSON Rust JavaScript
几年后的JavaScript会是什么样的?
来看看这些有趣的ECMA提案(stage1/2/3)最近看到了一些很有趣的 ECMAScript 提案,如 Record 与 Tuple 数据类型,借鉴自 RxJS 的Observable,借鉴自函数式编程的 `throw Expressions`,带来更好错误处理能力的 `Error Cause` 等。
几年后的JavaScript会是什么样的?
|
JavaScript 前端开发 测试技术
2018 年最值得关注的 JavaScript 趋势
JavaScript 渗透的范围越来越广,它能做的事情已经远不止前端开发而已。不久前stateofjs.com刚刚发布了 2017 JavaScript 现状报告 ,现在Ryan Chartrand非常应景地推出了 2018年的JavaScript发展趋势 ,把这两份文章一起结合来看,相信作为JS开发者的你一定不再迷茫。
7335 0