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 相关文章推荐
浅析Prototype的模板类 Template
Dec 07 Javascript
IE的fireEvent方法概述及应用
Feb 22 Javascript
随窗体滑动的小插件sticky源码
Jun 21 Javascript
javascript工厂方式定义对象
Dec 26 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
Aug 18 Javascript
微信小程序 教程之列表渲染
Oct 18 Javascript
JavaScript中定义对象原型的两种使用方法
Dec 15 Javascript
详解VUE中v-bind的基本用法
Jul 13 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
react-router 路由切换动画的实现示例
Dec 03 Javascript
node.js使用stream模块实现自定义流示例
Feb 13 Javascript
Ajax是什么?Ajax高级用法之Axios技术
Apr 21 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
PHP Memcached应用实现代码
2010/02/08 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
python中pass语句用法实例分析
2015/04/30 Python
Python单例模式实例详解
2017/03/01 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
项目管理计划书
2014/01/09 职场文书
秦兵马俑教学反思
2014/02/07 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
今日说法观后感
2015/06/08 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android