转载请注明出处: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模仿微博发布效果的更多相关文章

  1. 点滴积累【JS】---JS小功能(JS实现模仿微博发布效果)

    效果: 思路: 利用多功能浮动运动框架实现微博效果,首先,将textarea中的属性添加到新创建的li里面然后,再将li添加到ul里面,再利用浮动运动框架将数据动态的显示出来. 代码: <hea ...

  2. VUE实现微博发布效果

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 微博发布效果jq版

    大家都看过新浪微博的发状态功能,我模拟了一下类似的效果,包括发布时间,删除效果等.代码如下: <!DOCTYPE HTML> <html> <head> <m ...

  4. JS学习笔记 - 微博发布效果

    <script> window.onload = function() { var oTxt = document.getElementById('txt1'); var oBtn = d ...

  5. window.requestAnimationFrame与Tween.js配合使用实现动画缓动效果

    window.requestAnimationFrame 概述 window.requestAnimationFrame()这个方法是用来在页面重绘之前,通知浏览器调用一个指定的函数,以满足开发者操作 ...

  6. js控住DOM实现发布微博简单效果

    这段代码的效果具体是输入标题和内容,点击发布把消息发布出去,并使最新的消息始终在内容的最上面,代码为: <!DOCTYPE html> <html lang="en&quo ...

  7. 原生JavaScript 全特效微博发布面板效果实现

    javaScript实现微博发布面板效果.---转载白超华 采用的js知识有: 正则表达式区分中英文字节.随机数生成等函数 淡入淡出.缓冲运动.闪动等动画函数 onfocus.onblur.oninp ...

  8. js模仿ios select效果

    github:https://github.com/zhoushengmufc/iosselect webapp模仿ios下拉菜单 html下拉菜单select在安卓和IOS下表现不一样,iossel ...

  9. js微博发布框的实现

    观察了微博发布框, 1.发现他的剩余文字是动态改变的, 2.且文字为零时 发布框颜色为暗色 3.文字不符合标准时提交不通过 整理了一下思路 js会主要用到的方法 1.onclick() //点击发布时 ...

随机推荐

  1. IndexedDB

    http://www.tfan.org/indexeddb/ http://fnvfox.appspot.com/thankyou.html http://www.tfan.org/wechat-on ...

  2. 在Windows下读取Ext4分区

    转自在Windows下读取Ext4分区 本文介绍两个能在 Windows 下读取ext4分区的软件. 第一个是 Ext2Read.它能查看 ext2/3/4 分区并从中拷贝文件和目录,支持 LVM2 ...

  3. 几个字符串的误区,以及setlocale函数的使用

    转自 http://www.blogjava.net/baicker/archive/2007/08/09/135642.html 转自 http://witmax.cn/character-enco ...

  4. magic c c++ unix 注册机 注册码 破解版 下载

    说起来都是伤心的事情前段时间,忙于找工作,面试的公司和入职的公司,想想都觉得很奇葩,其中有一家叫什么湖南普天科技有限公司的,他们是从国防科大接项目做的,那天他们叫我去面试,面试完了,说我们这里有个c+ ...

  5. wcf双工通讯遇到的问题

    1.向ChannelFactory提供的InstanceContext包含未实现CallbackContractType的问题 通过添加服务引用生成的客户端代码, public class Callb ...

  6. [LeetCode#276] Paint Fence

    Problem: There is a fence with n posts, each post can be painted with one of the k colors. You have ...

  7. bzoj2821

    其实和bzoj2724是一样的都是先处理多个块的答案,然后多余部分暴力空间要注意一下,还是O(nsqrt(n)); ..,..] of longint; g:..,..] of longint; a, ...

  8. 跨浏览器读取XML

    这里跨浏览器,但是只能读取字符串XML文档,可以通过Ajax方式load一个XML文档,将文件XML转变为字符串 // 跨浏览器返回XML DOM对象 function getXMLDOM(xmlSt ...

  9. 谷歌浏览器怎么调试js

    首先我们打开开发者工具,你可以直接在页面上点击右键,然后选择审查元素或者在Chrome的工具中找到或者你直接记住这个快捷方式: Ctrl+Shift+I (或者Ctrl+Shift+J直接打开控制台) ...

  10. 20140704笔试面试总结(java)

    1.java数组定义 1.与其他高级语言不同,Java在数组声明时并不为数组分配存储空间,因此,在声明的[]中不能指出数组的长度 2.为数组分配空间的两种方法:数组初始化和使用new运算符 3.未分配 ...