javascript与CSS复习(二)


Posted in Javascript onJune 29, 2010

visibility:在切换元素可见性的同时会保持元素在普通流中的位置和空间。它有两个值:visible(默认的)和hidden(不可见的),
例如:

<p>Hello <b>John</b>, how are you today?</p>

浏览器中是:Hello John, how are you today? 接着我们把John所在b的visibility设置为hidden后,就会变成这样
Hello , how are you today?
display:为我们控制元素的布局提供了更丰富的选择。可以是inline、block或是none(它完全从文档中隐藏了元素,结果跟从文档中删除了该元素的情形看起来一样)。还是上面的例子,如果我们用了display:none。那么结果是
Hello , how are you today?
下面给出书中两个简单函数用于显示和隐藏元素
//使用display隐藏元素 
function hide(elem) { 
//找出元素display的当前状态 
var curDisplay = getStyle(elem, 'display'); 
//记录它的display状态 
if(curDisplay != 'none') 
elem.$oldDisplay = curDisplay; 
//设置display为none 
elem.style.display = 'none'; 
} 
//使用display显示元素 
function show(elem) { 
//设置display属性为它的原始值 
elem.style.display = elem.$oldDisplay || ' '; 
}

接下来我们来研究下透明度opacity,这可以给元素添加一个很cool的效果...看下下面这个设置元素透明度的函数。
//设置元素的透明度(级别从0-100) 
function setOpacity(elem, level) { 
//如果存在filters这个属性,则它是IE 
if(elem.filters) { 
elem.style.filters = 'alpha(opacity=' + level + ')'; 
} else { //否则,使用W3C的opacity属性 
elem.style.opacity = level / 100; 
} 
}

有了这些调整元素位置、尺寸和可见性的方法,我们就能把它们结合起来创建动画。
function slideDown(elem) { 
//从0高度开始滑动 
elem.style.height = '0px'; 
//先显示元素(但是看不到它,因为它的高度为0) 
show(elem); 
//找到元素的完整的潜在高度 
var h = fullHeight(elem); 
//我们在1秒钟内执行一个20帧的动画 
for(var i = 0; i <= 100; i += 5) { 
//保证我们能够保持正确的'i'的闭包函数 
(function() { 
var pos = i; 
//设置timeout以让它能在指定的时间点运动 
setTimeout(function() { 
//设置元素新的高度 
elem.style.height = (pos / 100) * h + 'px'; 
}, (pos + 1) * 10); 
})(); 
} 
}

这里有个闭包的概念,理解起来可能有些难度,感兴趣深入的园友可以去Google下,这里就不多讨论了。
接下来用setOpacity函数写个"渐显"函数:
function fadeIn(elem) { 
//从0透明度开始 
setOpacity(elem, 0); 
//先显示元素(但是看不到它,因为它的透明度是0) 
show(elem); 
//我们在1秒钟内执行一个20帧的动画 
for(var i = 0; i < 100; i += 5) { 
//保证我们能够保持正确的'i'的闭包函数 
(function(){ 
var pos = i; 
//设置timeout以让它能在指定的事件内运行 
setTimeout(function() { 
setOpacity(elem, pos); 
}, (pos + 1) * 10); 
})(); 
} 
}

为了代码的正确性,我写完后都去测试一下,因为发现书中会有些小错误,刚测试完上面的slideDown方法,应该把var h = fullHeight(elem);放到函数内容的第一句,不然没效果....
第二部分的复习就到这里,慢慢消化,学东西可不能急于求成哦。
Javascript 相关文章推荐
JavaScript 克隆数组最简单的方法
Feb 12 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
Nov 11 Javascript
对Jquery中的ajax再封装,简化操作示例
Feb 12 Javascript
JavaScript实现在页面间传值的方法
Apr 07 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
Dec 06 Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 Javascript
JS创建Tag标签的方法详解
Jun 09 Javascript
JS检测是否可以访问公网服务器功能代码
Jun 19 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
javascript与CSS复习(《精通javascript》)
Jun 29 #Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
Jun 29 #Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
Jun 29 #Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 #Javascript
javascript hasFocus使用实例
Jun 29 #Javascript
jquery photoFrame 图片边框美化显示插件
Jun 28 #Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
Jun 28 #Javascript
You might like
PHP+MYSQL的文章管理系统(二)
2006/10/09 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
thinkPHP查询方式小结
2016/01/09 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
Python读写docx文件的方法
2018/05/08 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
Linux机考试题
2015/07/17 面试题
HR喜欢的自荐信格式
2013/10/08 职场文书
大学生就业推荐信范文
2013/11/29 职场文书
求职推荐信范文
2013/12/01 职场文书
工厂实习感言
2014/01/14 职场文书
高一数学教学反思
2014/02/07 职场文书
银行给客户的感谢信
2015/01/23 职场文书
员工福利申请报告
2015/05/15 职场文书
SQL Server删除表中的重复数据
2022/05/25 SQL Server