<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS实现百叶窗</title>
<!--原理:
首先,主要是根据li里的div是保存每一行所有要变化的信息,定时改变div的高度,溢出部分隐藏来实现。
通过2个setInterval来实现,外层setInterval用来控制多长时间改变一次内容,里层setInterval用来控制如何改变。-->
<style>
*{ margin:0; padding:0;}
li{ list-style:none;}
#ul1,#ul2{ width:300px; height:auto; float:left; border-top:1px #000000 solid; margin:20px;}
li{ width:100%; height:30px; overflow:hidden; position:relative; border-bottom:1px #333333 dashed; line-height:30px;}
li div{ position:absolute; top:-30px;}
li div p { height:30px;}
</style>
<script type="text/javascript" src="move.js"></script>
<script>
window.onload = function(){
    var oUl = document.getElementById('ul1');
    var oUl2 = document.getElementById('ul2');

  //先对左侧UL标签实行百叶窗效果;
    toShow(oUl);

//两秒延迟后,对右侧UL标签实行百叶窗效果;
    setTimeout(function(){
        toShow(oUl2);
    },2000);  ࡣ
    
    //实现百叶窗函数
    function toShow(obj){
        var aDiv = obj.getElementsByTagName('div');
        var iNow = 0;//共有的内容行数;
        var timer = null;//setInterval的返回值,用于clearInterval;
        var bBtn = true;
        //UL定时每4秒变换1次
        setInterval(function(){
        
            toChange();
        
        },4000);
        
        //UL变换1次
        function toChange(){
            //通过setInterval来对每一个li依次改变
            timer = setInterval(function(){
            //如果UL的每个li都变换过了,则停止,等待外层toShow()再次调用toChange()函数;
                if(iNow==aDiv.length){
                    clearInterval(timer);
                    iNow = 0;
                    bBtn = !bBtn;//用于从上往下信息滚完了,再从下往上回滚;
                }
                else if(bBtn){
                    startMove(aDiv[iNow],{top:0});
                    iNow++;   //为了下次定时执行时变为操作下一条内容的变换
                }
                else{
                    startMove(aDiv[iNow],{top:-30});
                    iNow++;
                }
                    
            },100);
            
        }
        
    }
    
};
</script>
</head>

<body>
<ul id="ul1">
    <li>
        <div>
            <p>1111111111</p>
            <p>2222222222</p>
        </div>
    </li>
    <li>
        <div>
            <p>3333333333</p>
            <p>4444444444</p>
        </div>
    </li>
    <li>
        <div>
            <p>5555555555</p>
            <p>6666666666</p>
        </div>
    </li>
    <li>
        <div>
            <p>7777777777</p>
            <p>8888888888</p>
        </div>
    </li>
    <li>
        <div>
            <p>9999999999</p>
            <p>aaaaaaaaaa</p>
        </div>
    </li>
    <li>
        <div>
            <p>bbbbbbbbbb</p>
            <p>cccccccccc</p>
        </div>
    </li>
</ul>

<ul id="ul2">
    <li>
        <div>
            <p>1111111111</p>
            <p>2222222222</p>
        </div>
    </li>
    <li>
        <div>
            <p>3333333333</p>
            <p>4444444444</p>
        </div>
    </li>
    <li>
        <div>
            <p>5555555555</p>
            <p>6666666666</p>
        </div>
    </li>
    <li>
        <div>
            <p>7777777777</p>
            <p>8888888888</p>
        </div>
    </li>
    <li>
        <div>
            <p>9999999999</p>
            <p>aaaaaaaaaa</p>
        </div>
    </li>
    <li>
        <div>
            <p>bbbbbbbbbb</p>
            <p>cccccccccc</p>
        </div>
    </li>
</ul>
</body>
</html>

JS实现百叶窗效果的更多相关文章

  1. javascript实例学习之六—百叶窗效果

    一.要结合布局才能形成百叶窗的效果 二.开启两个定时器,第一个定时器控制的是百叶窗整体一次上翻,一次下翻:另一个控制百叶窗中的各页逐次翻转,形成层次效果.否则就成了普通的滚动广告的效果了 本实现借助于 ...

  2. React.js实现原生js拖拽效果及思考

    一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...

  3. 用js实现动画效果核心方式

    为了做好导航菜单,有时候需要在菜单下拉的时候实现动画效果,所以这几天就研究了研究如何用js实现动画效果,实现动画核心要用到两个函数,一个是setTimeOut,另一个是setInterval. 下边我 ...

  4. js拖拽效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 原生JS实现分页效果2.0(新增了上一页和下一页,添加当前元素样式)

    虽然写的很烂,但至少全部都是自己写的,因为这个没有固定的顺序,所以就没有封装,如果你技术好的话,可以你写的分享给我,谢谢. <!DOCTYPE html><html lang=&qu ...

  6. 原生JS实现分页效果1.0

    不太完整,写的太急,等等加上完整注释,写起来还是有些难度的,写的有点水,后面再改进改进. <!DOCTYPE html><html lang="en">&l ...

  7. 使用JS实现手风琴效果

    想要实现简单的手风琴切换效果,需要使用JS实现,如下是使用javascript源码实现,后续会更新使用jQuery实现. 1. 先进行简单的布局:我们可以再ul下添加几个li实现html的简单布局,再 ...

  8. js弹窗登录效果(源码)--web前端

    1.JS弹窗登录效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  9. 原生JS实现弹幕效果

    纯属无聊写的,可能有很多问题,欢迎批评指教. 效果图:图一是预设的一些弹幕,图二是自己发射的弹幕,效果是一样的.   首先是弹幕的位置,是要从最右滑到最左,为了防止随机高度弹幕会覆盖的问题,设置了通道 ...

随机推荐

  1. Lucene索引数计算

    Elasticsearch默认在创建索引结束时得到5个分片及1个副本: 分片是有0-n个副本,“5个分片及1个副本”即“5个分片及5个相应分片副本”:共10个Lucene索引 副本数:指的是“单个分片 ...

  2. Python打印一个等边三角形

    如图所示: * *** ***** ******* ********* #想要几层就输入数字几, num = int(input('请输入一个奇数数字:')) for i in range(num,0 ...

  3. P2P-BT对端管理协议(附BT协议1.0)

    对端管理 指的是远端peer集合的管理(尽管自身client也能够视为一个peer.但对端管理不包括自身peer) 一个client(client)必须维持与每一个远程peer连接的状态信息,即1V1 ...

  4. [Idea]安装avtiviti插件以及 插件中文乱码

    安装插件 打开IDEA,按ctrl+alt+S,打开Pluging 乱码问题 idea 安转activiti插件后,编辑流程图发现保存后中文乱码,并且idea的字符集(Settings—>Edi ...

  5. 集成富文本编辑器XSS预防过滤措施

    # https://github.com/phith0n/python-xss-filter import re import copy from html.parser import HTMLPar ...

  6. hadoop学习第二天-了解HDFS的基本概念&&分布式集群的搭建&&HDFS基本命令的使用

    一.HDFS的相关基本概念 1.数据块 1.在HDFS中,文件诶切分成固定大小的数据块,默认大小为64MB(hadoop2.x以后是128M),也可以自己配置. 2.为何数据块如此大,因为数据传输时间 ...

  7. 剑指offer 面试30题

    面试30题: 题目:包含min函数的栈 题:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数.在该栈中,调用min.push.pop的时间复杂度都是O(1) 解题思路:1)如果每次 ...

  8. HDF及HDF-EOS数据格式简介

    HDF-EOS数据格式介绍 HDF(Hierarchy Data Format )数据格式是美国伊利诺伊大学国家超级计算应用中心(NCSA ,National Central for Super co ...

  9. 学习小程序第三天 WXML语言特性

    WXML语言特性     1.数据绑定   Musstache 语法 获取json中指定键值:变量名加双括号的绑定语法 如下: (1)绑定文本 注意所有组件和属性 都要小写 (2)绑定属性     ( ...

  10. iOS UIWindow 与 windowLevel 学习

    Pop几个关键点 KeyWindow :”The key window is the one that is designated to receive keyboard and other non- ...