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重要知识更新
Jul 08 Javascript
JavaScript 的继承
Oct 01 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
Mar 01 Javascript
jQuery中prevUntil()方法用法实例
Jan 08 Javascript
jquery动态导航插件dynamicNav用法实例分析
Sep 06 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
Aug 05 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 Javascript
JavaScript生成简单等差数列
Nov 28 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
Oct 31 Javascript
vue 实现单选框设置默认选中值
Nov 07 Javascript
js实现打字小游戏
Dec 17 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
php验证码生成器
2017/05/24 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
chrome原生方法之数组
2011/11/30 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
Java程序员常见面试题
2015/07/16 面试题
门卫班长岗位职责
2013/12/15 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
工作检讨书大全
2015/01/26 职场文书
2015年教育实习工作总结
2015/04/24 职场文书