原生JS+tween.js模仿微博发布效果
转载请注明出处:http://www.cnblogs.com/zhangmingze/p/4816865.html
1、先看效果吧,有效果才有动力:
2、html结构:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>模仿微博发布效果</title>
<link rel="stylesheet" href="css/index.css" />
</head>
<body>
<div id="container">
<form action="">
<p class="name-text">
<label>用户 : <input type="text" id="username" /></label>
</p>
<textarea id="content"></textarea>
<p class="tip">
<span class="left-tip" id="warn">还可以输入<span id="num">140</span>个字</span>
<a href="javascript:void(0);" id="submit">发布</a>
</p>
</form>
<ul id="list"></ul>
</div>
<script src="js/tween.js"></script>
<script src="js/app.js"></script>
</body>
</html>
2、css样式这个就不贴了,看图敲效果,不会可以找我要源码
3、js部分不复杂,最主要是理解运动过程,运动过程每个运动都可以用这个方法思路,谁用谁知道
var sBtn = document.getElementById('submit');
var username = document.getElementById('username');
var content = document.getElementById('content');
var list = document.getElementById('list');
var num = document.getElementById('num');
sBtn.onclick=function(){
if(username.value &&content.value){
//创建li节点
var li = document.createElement('li');
//本来要用createElement,为了省事,直接用innerHTML
li.innerHTML = '<div class="head-img">'+
'<img src="img/1.gif" alt="" />'+'</div>'+
'<div class="user-info">'+'<p class="user-name"><span>'+
username.value+'</span><a href="javascript:void(0);" id="del">删除</a></p>'
+'<p class="text">'+content.value+'</p></div>';
//添加在头部
list.insertBefore(li,list.children[0]);
//下面是运动过程,步长,起点,终点,使用定时器
var timer = null;
var end = li.offsetHeight;
var start = 0;
var t=0;
var maxT=30
li.style.height = 0; //初始让li标签高度为0,不然高度会初始化,导致闪一下
timer = setInterval(function(){
t++;
if(t>maxT){
clearInterval(timer);
li.style.height = end + 'px';
}
//不用tween.js即为线性运动
//li.style.height = end/maxT*t + start + 'px';
//碰撞效果,使用tween.js动画插件
li.style.height = Tween.Bounce.easeOut(t,start,end,maxT) + 'px';
},30); username.value = content.value = ""; var del = document.getElementById('del');
//删除内容按钮
del.onclick=function(){
var start = li.offsetHeight; //初始的高度
var end = 0; //最后高度为0,然后删除节点
var change = end - start; //间隔距离
var t=0;
var maxT=30;
var uptimer = null;
uptimer = setInterval(function(){
t++;
if(t>=maxT){
clearInterval(uptimer);
li.parentNode.removeChild(li); //当高度为0时清除定时器并删除节点
}
//同上
//li.style.height = change/maxT*t + start + 'px';
//同上
li.style.height = Tween.Bounce.easeOut(t,start,change,maxT)+ 'px';
},30);
};
}
else{
(!username.value)?username.focus():content.focus();
}
};
//oninput是html5事件,IE8以上
content.oninput=function(){
num.innerHTML = 140 - this.value.length;
};
//IE4 - IE10,IE专有,兼容IE
content.onpropertychange=function(e){
var e = e||window.event;
if(e.propertyName.toLowerCase()=="value"){
num.innerHTML = 140 - this.value.length;
}
};
这样就差不多了,tween.js插件比较容易使用,只需要一行代码
Tween.Bounce(还有其他效果).easeOut(有easeIn,easeInOut)(t,start,change,maxT) //每次步长,开始位置,相隔距离,总步长
tween.js就是贝塞尔曲线啦,楼主只会用,不会贝塞尔曲线
tip:需要源码的回复找我拿,挺简单的,不放上来了,楼主新手刚学。
原生JS+tween.js模仿微博发布效果的更多相关文章
- 点滴积累【JS】---JS小功能(JS实现模仿微博发布效果)
效果: 思路: 利用多功能浮动运动框架实现微博效果,首先,将textarea中的属性添加到新创建的li里面然后,再将li添加到ul里面,再利用浮动运动框架将数据动态的显示出来. 代码: <hea ...
- VUE实现微博发布效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 微博发布效果jq版
大家都看过新浪微博的发状态功能,我模拟了一下类似的效果,包括发布时间,删除效果等.代码如下: <!DOCTYPE HTML> <html> <head> <m ...
- JS学习笔记 - 微博发布效果
<script> window.onload = function() { var oTxt = document.getElementById('txt1'); var oBtn = d ...
- window.requestAnimationFrame与Tween.js配合使用实现动画缓动效果
window.requestAnimationFrame 概述 window.requestAnimationFrame()这个方法是用来在页面重绘之前,通知浏览器调用一个指定的函数,以满足开发者操作 ...
- js控住DOM实现发布微博简单效果
这段代码的效果具体是输入标题和内容,点击发布把消息发布出去,并使最新的消息始终在内容的最上面,代码为: <!DOCTYPE html> <html lang="en&quo ...
- 原生JavaScript 全特效微博发布面板效果实现
javaScript实现微博发布面板效果.---转载白超华 采用的js知识有: 正则表达式区分中英文字节.随机数生成等函数 淡入淡出.缓冲运动.闪动等动画函数 onfocus.onblur.oninp ...
- js模仿ios select效果
github:https://github.com/zhoushengmufc/iosselect webapp模仿ios下拉菜单 html下拉菜单select在安卓和IOS下表现不一样,iossel ...
- js微博发布框的实现
观察了微博发布框, 1.发现他的剩余文字是动态改变的, 2.且文字为零时 发布框颜色为暗色 3.文字不符合标准时提交不通过 整理了一下思路 js会主要用到的方法 1.onclick() //点击发布时 ...
随机推荐
- iOS7新特性-NSURLSession详解
前言:本文由DevDiv版主@jas 原创翻译,转载请注明出处!原文:http://www.shinobicontrols.com/b ... day-1-nsurlsession/ 大家都知道,过去 ...
- GCD介绍(一): 基本概念和Dispatch Queue
什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许 ...
- 如何对 Android 库进行依赖管理?
Android 开发人员为项目选择库的时候,考虑的因素不仅仅是功能.可用性.性能.文档丰富度和技术支持情况.他们还关心库的大小,以及要添加的方法数量.因为项目越大,依赖也越多,要把应用的方法数量控制在 ...
- [wikioi]数字三角形
http://wikioi.com/problem/1220/ 最基本经典的DP题目,唯一有点意思的是,自底向上计算会更简洁.另外对这种+方式累计的DP,可以直接把原来的存进去,然后再加,本质是不用在 ...
- mac下设置命令别名
项目使用了gerrit,每次push代码都需要执行 git push origin HEAD:refs/for/master 为了简便,使用了alias命令来控制台下使用下面的命令简化了提交. ali ...
- 启用VSFTPD日志及其解读
启用vsftpd日志及其解读(转贴)在vsftpd.conf中有如下内容定义了日志的记录方式:# 表明FTP服务器记录上传下载的情况xferlog_enable=YES# 表明将记录的上传下载情况写在 ...
- 并行HASH JOIN小表广播问题
SQL语句: SELECT /*+parallel(t1 16)*/ T1.DATA_DATE, T1.ACCT_NO, T1.ACCT_ORD, T1.ACCT_NO_PK, T1.ACCT_BAL ...
- WordPress ‘get_allowed_mime_types’函数安全漏洞
漏洞名称: WordPress ‘get_allowed_mime_types’函数安全漏洞 CNNVD编号: CNNVD-201309-170 发布时间: 2013-09-13 更新时间: 2013 ...
- (转载)Android开发者必知的开发资源
(转载)http://www.importnew.com/3988.html 随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮.如果您是一位2013 ...
- java基础(八) 面向对象(三)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...