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 相关文章推荐
js tab 选项卡
Apr 26 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
jQuery动画效果animate和scrollTop结合使用实例
Apr 02 Javascript
JS实现让网页背景图片斜向移动的方法
Feb 25 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
Jan 26 Javascript
详谈JS中实现种子随机数及作用
Jul 19 Javascript
javascript宿主对象之window.navigator详解
Sep 07 Javascript
Vue中使用vux的配置详解
May 05 Javascript
JavaScript中ES6规范中let和const的用法和区别
Aug 06 Javascript
微信小程序实现天气预报功能(附源码)
Dec 10 Javascript
前端学习——JavaScript原生实现购物车案例
Mar 31 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获取文件相对路径的方法
2015/02/26 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
js实现图片实时时钟
2020/01/15 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
24式加速你的Python(小结)
2019/06/13 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
医院检讨书范文
2014/02/01 职场文书
分公司负责人任命书
2014/06/04 职场文书
委托书怎么写
2014/07/31 职场文书
实习指导教师评语
2014/12/30 职场文书
Elasticsearch 数据类型及管理
2022/04/19 Python