JS实现模仿微博发布效果实例代码


Posted in Javascript onDecember 16, 2013

效果:

JS实现模仿微博发布效果实例代码

思路:

利用多功能浮动运动框架实现微博效果,首先,将textarea中的属性添加到新创建的li里面然后,再将li添加到ul里面,再利用浮动运动框架将数据动态的显示出来。

代码:

<head runat="server">
    <title></title>
    <style type="text/css">
        *
        {
            margin: 0;
            padding: 0;
        }
        #ul1
        {
            width: 300px;
            height: 300px;
            border: 1px solid black;
            margin: 10px auto;
            overflow: hidden;
        }
        #ul1 li
        {
            list-style: none;
            padding: 4px;
            border-bottom: 1px #999 dashed;
            overflow: hidden;
            opacity: 0;
        }
    </style>
    <script type="text/javascript">
        window.onload = function () {
            var btn = document.getElementById('btn');
            var txt = document.getElementById('t1');
            var oUl = document.getElementById('ul1');
            btn.onclick = function () {
                var cLi = document.createElement('li');
                cLi.innerHTML = txt.value;      //将数据添加到li里面
                txt.value = '';
                if (oUl.children.length > 0) {      //判断是否已经有li,如果有那么就插入,如果没有那么就新建
                    oUl.insertBefore(cLi, oUl.children[0]);
                } else {
                    oUl.appendChild(cLi);
                }
                var iHeight = cLi.offsetHeight;     //获得li的高度
                cLi.style.height = '0';
                move(cLi, { height: iHeight }, function () {        //然后利用浮动运动将数据显示出来
                    move(cLi, { opacity: 100 });
                });
            }
        }
        //------------------------------------------------------------------------------------
        //获取非行间样式
        function getStyle(ojb, name) {
            if (ojb.currentStyle) {
                return ojb.currentStyle[name];
            }
            else {
                return getComputedStyle(ojb, false)[name];
            }
        }
        //缓冲运动json的应用
        //json{attr,finsh}
        //json{width:200,height:200}
        function move(obj, json, fnName) {      //obj是对象,Json是对象的属性, fnName是函数
            clearInterval(obj.timer);           //关闭之前的计时器
            obj.timer = setInterval(function () {
                var timeStop = true;        //记录属性是否都已经执行完成
                for (var attr in json) {        //遍历json中的数据
                    var oGetStyle = 0;
                    if (attr == 'opacity') {  //判断透明度
                        oGetStyle = Math.round(parseFloat(getStyle(obj, attr)) * 100);      //透明度取整,然后转换完后赋值
                    }
                    else {
                        oGetStyle = parseInt(getStyle(obj, attr));
                    }
                    var speed = (json[attr] - oGetStyle) / 5;       //求速度
                    speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);  //进位取整
                    if (oGetStyle != json[attr])
                        timeStop = false;
                    if (attr == 'opacity') {    //透明度
                        obj.style.filter = 'alpha(opacity:' + (oGetStyle + speed) + ')';    //给透明度赋值
                        obj.style.opacity = (oGetStyle + speed) / 100;
                    }
                    else {
                        obj.style[attr] = oGetStyle + speed + 'px';     //移动div
                    }
                }
                if (timeStop) {     //如果所有属性都已经执行完成,那么就关闭计时器
                    clearInterval(obj.timer);
                    if (fnName) {       //当关闭计时器后要执行的函数
                        fnName();
                    }
                }
            }, 30)
        }
        //------------------------------------------------------------------------------------
    </script>
</head>
<body>
    <textarea id="t1"></textarea>
    <input type="button" id="btn" value="发布" />
    <ul id="ul1">
        <li style="display: none;"></li>
    </ul>
</body>
Javascript 相关文章推荐
关于B/S判断浏览器断开的问题讨论
Oct 29 Javascript
jquery 图片截取工具jquery.imagecropper.js
Apr 09 Javascript
JS比较2个日期间隔的示例代码
Apr 15 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
利用Angular.js限制textarea输入的字数
Oct 20 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
全选复选框JavaScript编写小结(附代码)
Aug 16 Javascript
vue2.0与bootstrap3实现列表分页效果
Nov 28 Javascript
浅析js实现网页截图的两种方式
Nov 01 Javascript
JS数据类型STRING使用实例解析
Dec 18 Javascript
JSON无限折叠菜单编写实例
Dec 16 #Javascript
使用JSLint提高JS代码质量方法分享
Dec 16 #Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 #Javascript
利用js动态添加删除table行的示例代码
Dec 16 #Javascript
js判断undefined类型,undefined,null, 的区别详细解析
Dec 16 #Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
Dec 16 #Javascript
js AppendChild与insertBefore用法详细对比
Dec 16 #Javascript
You might like
PHP用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
PHP 观察者模式的实现代码
2013/05/10 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
Python Process多进程实现过程
2019/10/22 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
python在协程中增加任务实例操作
2021/02/28 Python
介绍一下Ruby的特点
2013/01/20 面试题
就业自我评价
2014/02/04 职场文书
元旦晚会主持词
2014/03/24 职场文书
篮球比赛策划方案
2014/06/05 职场文书
绿色环保口号
2014/06/12 职场文书
小学生环保标语
2014/06/13 职场文书
2014年校长工作总结
2014/12/11 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
小平小道观后感
2015/06/09 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
Redis命令处理过程源码解析
2022/02/12 Redis
Nginx速查手册及常见问题
2022/04/07 Servers