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 相关文章推荐
用JS判别浏览器种类以及IE版本的几种方法小结
Aug 02 Javascript
JavaScript实现广告的关闭与显示效果实例
Jul 02 Javascript
JS实现从连接中获取youtube的key实例
Jul 02 Javascript
用jQuery实现可输入多选下拉组合框实例代码
Jan 18 Javascript
jQuery基于Ajax方式提交表单功能示例
Feb 10 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
Mar 23 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
Aug 09 Javascript
vue环形进度条组件实例应用
Oct 10 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
Feb 18 Javascript
vue组件之间的数据传递方法详解
Apr 19 Javascript
vue实现选中效果
Oct 07 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 cookie 登录验证示例代码
2009/03/16 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
了解JavaScript中的选择器
2019/05/24 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python与Java间Socket通信实例代码
2017/03/06 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
历史学专业推荐信
2013/11/06 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
银行求职信怎么写
2019/06/20 职场文书
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS
vue中data里面的数据相互使用方式
2022/06/05 Vue.js
CSS的calc函数用法小结
2022/06/25 HTML / CSS