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 相关文章推荐
jquery 插件 人性化的消息显示
Jan 21 Javascript
很多人都是用下面的js刷新站IP和PV
Sep 05 Javascript
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
返回对象在当前级别中是第几个元素的实现代码
Jan 20 Javascript
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
Dec 14 Javascript
详解Vue-基本标签和自定义控件
Mar 24 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
元素全屏的设置与监听实例
Nov 28 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
vue中使用props传值的方法
May 08 Javascript
vue-cli3中vue.config.js配置教程详解
May 29 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
用js解决数字不能换行问题
2010/08/10 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
初探nodeJS
2017/01/24 NodeJs
js仿淘宝评价评分功能
2017/02/28 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
Python简单进程锁代码实例
2015/04/27 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
Python中tell()方法的使用详解
2015/05/24 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Python函数参数分类原理详解
2020/05/28 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
自主实习接收函
2014/01/13 职场文书
夏季奶茶店创业计划书
2014/01/16 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
2015年工商所工作总结
2015/05/21 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers