翻越这墙 发表于 2012-12-22 21:12:26

原生js DOM写的类似微博发布的效果

原生js DOM写的类似微博发布的效果

<div class="postText"><div id="cnblogs_post_body">  分享一下以前写的DOM操作的小效果(非常简单的那种),顺便复习一下关于DOM的各个知识点。注释写的还算清楚,这里就不废话了,直接上代码吧。
<div class="cnblogs_code"><!DOCTYPE HTML><html><head><meta charset="utf-8"><title>微博发布</title><meta name="Keywords" content=""><meta name="Description" content=""><style type="text/css">h1{margin:20px auto;font-size:30px;width:200px;text-align:center;color:blue;}#test1{display:block;width:400px;height:70px;margin:20px auto 10px;}#test2{display:block;margin-left:800px;width:60px;height:30px;font-size:20px;}#test3{margin:10px auto;border:1px #444 solid;width:400px;min-height:300px;padding-bottom:10px;overflow:hidden;color:blue;}.test{border:1px blue solid;width:400px;overflow:hidden;}.time{margin-left:240px;color:#666;font-size:16px;}.inf{margin:10px 10px;}.con{margin:10px;min-height:20px;}</style></head><body>    <h1>微博发布</h1>    <input type="text" id="test1" value="" />    <input type="button" id="test2" value="发布"/>    <div id="test3"></div><script type="text/javascript"><!--    var test1=document.getElementById("test1");    var test2=document.getElementById("test2");    var test3=document.getElementById("test3");    var t,r,i=0;      ///////////////点击发布的方法    test2.onclick=move;    function move(){      var test=document.createElement('div');                            //创建一个微博框节点      if(test1.value==""){                                          //如果输入的内容为空,重新输入            alert("亲,请输入内容哦!");            return;      }else{            test.setAttribute("class","test");                            //test的css样式            test.innerHTML ='<p class="con">'+test1.value+'</p>';      //给节点添加内容             test3.insertBefore(test,test3.firstChild);                  //把创建的节点插入到temp3文档中,最新发布的放在第一个            test1.value="";                                                //当发布微博后,输入框里的内容消失      ///////////////微博框运动            var child=document.getElementById("test3").childNodes;      //获取所有test3的所有子节点            var n=-test.offsetHeight;            function run(){                                                //点击按钮时,微博框运动方法                n++;               test.style.marginTop=n+"px";                if(n>=0){n=0;return;clearTimeout(t);}                  ////此处return?????                t=setTimeout(run,20);            }run();            }      ////////创建微博中时间和删除按钮节点      var inf=document.createElement('div');                            //创建一个div节点,此div的目的是包含时间和删除按钮事件            inf.setAttribute("class","inf");                            //inf的css样式            var d=new Date();                                          //设置时间            inf.innerHTML ='<span class="time">'+d.getHours()+"时"+d.getMinutes()+"分"+d.getSeconds()+"秒"+'</span>';//绑定时间             test.appendChild(inf);                                        //把inf节点插入到test中            var del=document.createElement('input');                        //创建删除按钮节点            del.type="button";                                          //input的类型为button            del.value="删除";            del.style.float="right";            inf.appendChild(del);                                        //del节点插入到test中      /////删除按钮事件,删除的动画效果      del.onclick=dele;      function dele(){                //点击按钮,微博消失            var m=test.offsetHeight;                                    //高度的值不能直接赋给变量,所以此处不用test.style.height            function run2(){                m--;                r=setTimeout(run2,20);                test.style.height=m+"px";                if(m<=0)                {m=0;clearTimeout(r);test3.removeChild(test);}            //test3.removeChild(test);//删除test的内容                }run2();      }    }//--></script></body></html>
页: [1]
查看完整版本: 原生js DOM写的类似微博发布的效果