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 相关文章推荐
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
Mar 14 Javascript
关于JavaScript与HTML的交互事件
Apr 12 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
Feb 02 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
jQuery插件scroll实现无缝滚动效果
Apr 27 Javascript
6种javascript显示当前系统时间代码
Dec 01 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
Jan 04 Javascript
Boostrap入门准备之border box
May 09 Javascript
获取JS中网页各种高宽与位置的方法总结
Jul 27 Javascript
js中this对象用法分析
Jan 05 Javascript
vue router的基本使用和配置教程
Nov 05 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
Apr 02 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最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
php设计模式 Template (模板模式)
2011/06/26 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
Python实现多线程抓取妹子图
2015/08/08 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
Python 多线程实例详解
2017/03/25 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
python在每个字符后添加空格的实例
2018/05/07 Python
Python selenium自动化测试模型图解
2020/04/15 Python
五四青年节优秀演讲稿范文
2014/05/28 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
校园安全广播稿范文
2014/09/25 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
Go 中的空白标识符下划线
2022/03/25 Golang
golang操作rocketmq的示例代码
2022/04/06 Golang