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常用对象的方法和属性小结
Jan 24 Javascript
在jquery中combobox多选的不兼容问题总结
Dec 24 Javascript
node.js集成百度UE编辑器
Feb 05 Javascript
详解AngularJS中module模块的导入导出
Dec 10 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
JS使用插件cryptojs进行加密解密数据实例
May 11 Javascript
微信小程序开发之toast提示插件使用示例
Jun 08 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
vue自定义filters过滤器
Apr 26 Javascript
小程序scroll-view组件实现滚动的示例代码
Sep 20 Javascript
JS实现骰子3D旋转效果
Oct 24 Javascript
JavaScript实现tab栏切换效果
Mar 16 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文件的实现方法
2007/03/19 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
详解Django中的权限和组以及消息
2015/07/23 Python
python 链接和操作 memcache方法
2017/03/04 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
python实现画图工具
2020/08/27 Python
25道Java面试题集合
2013/05/21 面试题
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
出纳岗位职责模板
2013/11/27 职场文书
优秀家长自荐材料
2014/08/26 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书