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 相关文章推荐
获取当前网页document.url location.href区别总结
May 10 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
Jan 15 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
javascript 构造函数方式定义对象
Jan 02 Javascript
js实现上传图片及时预览
May 07 Javascript
JavaScript常用判断写法大全(推荐)
May 30 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
Jun 14 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
Jul 01 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
vue router 组件的高级应用实例代码
Apr 08 Javascript
vue实例的选项总结
Jun 09 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
透析PHP的配置文件php.ini
2006/10/09 PHP
Banner程序
2006/10/09 PHP
用php解析html的实现代码
2011/08/08 PHP
php正则表达式学习笔记
2015/11/13 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
简单实现php上传文件功能
2017/09/21 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
动态加载iframe
2006/06/16 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
javascript调试说明
2010/06/07 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
浅析return false的正确使用
2013/11/04 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
Python在Console下显示文本进度条的方法
2016/02/14 Python
numpy中索引和切片详解
2017/12/15 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
python 6种方法实现单例模式
2020/12/15 Python
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
会议接待欢迎词
2014/01/12 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫