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中eval()函数用法详解
Dec 14 Javascript
JavaScript常用判断写法大全(推荐)
May 30 Javascript
BootStrap实现树形目录组件代码详解
Jun 21 Javascript
JS判断浏览器是否安装flash插件的简单方法
Sep 13 Javascript
jQuery 局部div刷新和全局刷新方法总结
Oct 05 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
Angular2 PrimeNG分页模块学习
Jan 14 Javascript
详谈构造函数加括号与不加括号的区别
Oct 26 Javascript
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
关于layui 弹出层一闪而过就消失的解决方法
Sep 09 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
Apr 13 Javascript
uni-app实现获取验证码倒计时功能
Nov 01 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
smtp邮件发送一例
2006/10/09 PHP
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
JS 实现双色表格实现代码
2009/11/24 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
python定时器(Timer)用法简单实例
2015/06/04 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python怎么对数字进行过滤
2020/07/05 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
北京SQL新华信咨询
2016/09/30 面试题
社团活动总结模板
2014/06/30 职场文书
骨干教师申报材料
2014/12/17 职场文书
雨花台导游词
2015/02/06 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
golang中的struct操作
2021/11/11 Golang