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 相关文章推荐
javascript 传统事件模型构造的事件监听器实现代码
May 31 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
Dec 18 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 Javascript
基于javascript实现checkbox复选框实例代码
Jan 28 Javascript
Javascript this 函数深入详解
Dec 13 Javascript
微信小程序仿知乎实现评论留言功能
Nov 28 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
Apr 17 Javascript
ES6基础之 Promise 对象用法实例详解
Aug 22 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
Jun 10 Javascript
Vue Render函数创建DOM节点代码实例
Jul 08 Javascript
Nuxt的动态路由和参数校验操作
Nov 09 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 和 COM
2006/10/09 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
什么是JavaScript
2009/08/13 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
详解Python字符串对象的实现
2015/12/24 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Python json转字典字符方法实例解析
2020/04/13 Python
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
利用异或运算实现两个无符号数的加法运算
2013/12/20 面试题
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
广播节目策划方案
2014/05/23 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
学校食品安全实施方案
2014/06/14 职场文书
财政局长个人总结
2015/03/04 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android