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(jQuery)获取时间的方法及常用时间类搜集
Oct 23 Javascript
jQuery的each终止或跳过示例代码
Dec 12 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
Apr 02 Javascript
javascript去除字符串左右两端的空格
Feb 05 Javascript
js获取所有checkbox的值的简单实例
May 30 Javascript
javascript 将共享属性迁移到原型中去的实现方法
Aug 31 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
jQuery EasyUI 页面加载等待及页面等待层
Feb 06 Javascript
Vue项目分环境打包的实现步骤
Apr 02 Javascript
react build 后打包发布总结
Aug 24 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
Apr 14 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 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/03 咖啡文化
php中var_export与var_dump的区别分析
2010/08/21 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
php时间戳转换代码详解
2019/08/04 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
js调用flash的效果代码
2008/04/26 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
微信小程序云开发详细教程
2019/05/16 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python中join和split用法实例
2015/04/14 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
在Python中使用正则表达式的方法
2015/08/13 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电