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 对象的创建与使用
Mar 09 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
Jun 30 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
jquery 实现两Select 标签项互调示例代码
Sep 25 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
Mar 03 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
分享几种比较简单实用的JavaScript tabel切换
Dec 31 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
Oct 13 Javascript
jQuery动态移除与增加onclick属性的方法详解
Jun 07 jQuery
jQuery的Ajax接收java返回数据方法
Aug 11 jQuery
JavaScript中的this基本问题实例小结
Mar 09 Javascript
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
php中的一个中文字符串截取函数
2007/02/14 PHP
php 文件上传实例代码
2012/04/19 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
python数据封装json格式数据
2018/03/04 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
Python变量访问权限控制详解
2019/06/29 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
Delphi软件工程师试题
2013/01/29 面试题
创先争优演讲稿
2014/09/15 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
运动会开幕式主持词
2015/07/01 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技