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实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
May 02 Javascript
JavaScript内存管理介绍
Mar 13 Javascript
60行js代码实现俄罗斯方块
Mar 31 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
May 25 Javascript
原生javascript实现匀速运动动画效果
Feb 26 Javascript
JavaScript提高网站性能优化的建议(二)
Jul 24 Javascript
jQuery实现微信长按识别二维码功能
Aug 26 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 jQuery
layui使用label标签的方法
Sep 14 Javascript
js实现轮播图特效
May 28 Javascript
vue-router 2.0 跳转之router.push()用法说明
Aug 12 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
Aug 31 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 获取全局变量的代码
2011/04/21 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
php通过session防url攻击方法
2014/12/10 PHP
php四种定界符详解
2017/02/16 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
用jquery来定位
2007/02/20 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
详解Python中的动态属性和特性
2018/04/07 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python动态进度条的实现代码
2019/07/03 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
python scatter函数用法实例详解
2020/02/11 Python
Python sorted对list和dict排序
2020/06/09 Python
简述 Python 的类和对象
2020/08/21 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
酒店行政人事部经理职务说明书
2014/02/26 职场文书
工程承包协议书范本
2014/09/29 职场文书
故宫的导游词
2015/01/31 职场文书
大学班干部竞选稿
2015/11/20 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android