js实现类似新浪微博首页内容渐显效果的方法


Posted in Javascript onApril 10, 2015

本文实例讲述了js实现类似新浪微博首页内容渐显效果的方法。分享给大家供大家参考。具体分析如下:

要点一:

if(list_li.length>=1){
list.insertBefore(li,list_li[0]);
}else{
list.appendChild(li);
}

从在前面插入新内容,如果没有新内容,就是在后面插入新内容。

要点二:

var height=li.offsetHeight;
li.style.height='0';

取得li的高度,然后再li的高度设置为0,因为高度的变化是从0到现有高度。

要点三:

startrun(li,"height",height,function(){
startrun(li,"opacity","100");
})

先是高度变化,再是透明度变化

最后,上代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>无标题文档</title>
<style>
<!--
body,ul,li{margin:0; padding:0; font:12px/1.5 arial;}
#list{width:400px; margin:10px auto;}
#list li{list-style:none; padding:5px 0 ;
overflow:hidden; border-bottom:1px dotted #ccc;
filter:alpha(opacity:0); opacity:0; vertical-align:middle;}
-->
</style>
<script>
<!--
window.onload = function(){
 var btn = document.getElementById("btn");
 var con = document.getElementById("con");
 var list = document.getElementById("list");
 var list_li = list.getElementsByTagName("li");
 btn.onclick = function(){
  var li = document.createElement("li");
  li.innerHTML = con.value;
  con.value='';
  if(list_li.length>=1){
   list.insertBefore(li,list_li[0]);
  }else{
   list.appendChild(li);
  }
  var height=li.offsetHeight;
  li.style.height='0';
  startrun(li,"height",height,function(){
   startrun(li,"opacity","100");
  })
 }
}
function getstyle(obj,name){
 if(obj.currentStyle){
  return obj.currentStyle[name];
 }else{
  return getComputedStyle(obj,false)[name];
 }
}
function startrun(obj,attr,target,fn){
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
  var cur = 0;
  if(attr == "opacity"){
   cur = Math.round(parseFloat(getstyle(obj,attr))*100);
  }else{
   cur = parseInt(getstyle(obj,attr));
  }
  var speed = (target-cur)/8;
  speed = speed>0?Math.ceil(speed):Math.floor(speed);
  if(cur == target){
   clearInterval(obj.timer);
   if(fn){
    fn();
   }
  }else{
   if(attr == "opacity"){
    obj.style.filter = "alpha(opacity="+(cur+speed)+")";
    obj.style.opacity = (cur+speed)/100;
   }else{
   obj.style[attr] = cur + speed + "px";
   }
  }
 },30)
}
//-->
</script>
</head>
<body>
<textarea id="con" cols="50" rows="5"></textarea>
<input id="btn" name="" type="button" value="发布">
<ul id="list">
</ul>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
javascript TextArea动态显示剩余字符
Oct 22 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
Nov 21 Javascript
js获取指定的cookie的具体实现
Feb 20 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
日常收藏的jquery技巧
Dec 02 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
Nov 21 Javascript
浅析js中mvvm模式实现的原理
Oct 06 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
Jul 29 Javascript
vue源码nextTick使用及原理解析
Aug 13 Javascript
通过layer实现可输入的模态框的例子
Sep 27 Javascript
vue组件暴露和.js文件暴露接口操作
Aug 11 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
Apr 10 #Javascript
js简单的点击返回顶部效果实现方法
Apr 10 #Javascript
浅谈JavaScript正则表达式分组匹配
Apr 10 #Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 #Javascript
JavaScript 变量、作用域及内存
Apr 08 #Javascript
JavaScript Function函数类型介绍
Apr 08 #Javascript
JavaScript 模块化编程(笔记)
Apr 08 #Javascript
You might like
PHP调用三种数据库的方法(3)
2006/10/09 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
理解JavaScript中的事件
2006/09/23 Javascript
一个用js实现的页内搜索代码
2007/05/23 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
python 发送json数据操作实例分析
2019/10/15 Python
pytorch之添加BN的实现
2020/01/06 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Python 使用office365邮箱的示例
2020/10/29 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
英文版区域经理求职信
2013/10/23 职场文书
求职自荐信
2013/12/14 职场文书
项目经理任命书
2014/06/04 职场文书
优秀团支部申报材料
2014/12/26 职场文书
史上最牛辞职信
2015/05/13 职场文书
校园安全教育心得体会
2016/01/15 职场文书