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 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 Javascript
使用JS取得焦点(focus)元素代码
Mar 22 Javascript
基于jquery和svg实现超炫酷的动画特效
Dec 09 Javascript
封装了jQuery的Ajax请求全局配置
Feb 05 Javascript
JS实现在页面随时自定义背景颜色的方法
Feb 27 Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 Javascript
node.js实现快速截图
Aug 27 Javascript
纯js三维数组实现三级联动效果
Feb 07 Javascript
vue与原生app的对接交互的方法(混合开发)
Nov 28 Javascript
详解vue 2.6 中 slot 的新用法
Jul 09 Javascript
Javascript表单序列化原理及实现代码详解
Oct 30 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/03/27 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
php生出随机字符串
2017/07/06 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
js前端面试之同步与异步问题详解
2019/04/03 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
Python中装饰器的一个妙用
2015/02/08 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
python3 配置logging日志类的操作
2020/04/08 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
蓝颜请假条
2014/04/11 职场文书
团干部培训方案
2014/06/03 职场文书
小学工作总结2015
2015/05/04 职场文书
企业年会祝酒词
2015/08/11 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
mysql全面解析json/数组
2022/07/07 MySQL