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 相关文章推荐
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
Oct 08 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
Nov 05 Javascript
实例讲解javascript注册事件处理函数
Jan 09 Javascript
javascript中异常处理案例(推荐)
Oct 03 Javascript
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
JS非空验证及邮箱验证的实例
Aug 11 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
详解vue 数据传递的方法
Apr 19 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
在vue项目实现一个ctrl+f的搜索功能
Feb 28 Javascript
es6数组之扩展运算符操作实例分析
Apr 25 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 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读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
谈谈jQuery之Deferred源码剖析
2016/12/19 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
微信小程序模板(template)使用详解
2018/01/31 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
Python httplib模块使用实例
2015/04/11 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
python使用多进程的实例详解
2018/09/19 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
python3调用windows dos命令的例子
2019/08/14 Python
python递归下载文件夹下所有文件
2019/08/31 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
Python新手学习raise用法
2020/06/03 Python
上课睡觉检讨书
2014/01/28 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers