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和javascript中如何将一元素的内容赋给另一元素
Jan 09 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
原生js的数组除重复简单实例
May 24 Javascript
AngularJS轻松实现双击排序的功能
Aug 30 Javascript
JS创建对象的写法示例
Nov 04 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
Dec 24 Javascript
详解vue.js之绑定class和style的示例代码
Aug 24 Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 Javascript
Windows安装Node.js报错:2503、2502的解决方法
Oct 25 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 Javascript
简述Vue中容易被忽视的知识点
Dec 09 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对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python实现多线程抓取知乎用户
2016/12/12 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python实现爬山算法的思路详解
2019/04/09 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
python实现扫雷小游戏
2020/04/24 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
如何获得EntityManager
2014/02/09 面试题
八年级音乐教学反思
2014/01/09 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
趵突泉导游词
2015/02/03 职场文书
小学教师教学随笔
2015/08/14 职场文书
网络研修心得体会
2016/01/08 职场文书
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技