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执行效率全面总结
Nov 04 Javascript
Jquery获得控件值的三种方法总结
Feb 13 Javascript
javascript删除一个html元素节点的方法
Dec 20 Javascript
jQuery搜索子元素的方法
Feb 10 Javascript
javascript 动态创建表格的2种方法总结
Mar 04 Javascript
JavaScript数据类型详解
Apr 01 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
js+css实现回到顶部按钮(back to top)
Mar 02 Javascript
Javascript数组循环遍历之forEach详解
Nov 07 Javascript
微信小程序组件 marquee实例详解
Jun 23 Javascript
用JavaScript做简易的购物车的代码示例
Oct 20 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 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
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
Python中实现switch功能实例解析
2018/01/11 Python
Python使用functools实现注解同步方法
2018/02/06 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
竞选部门副经理的自荐书范文
2014/02/11 职场文书
个人借款担保书
2014/04/02 职场文书
房地产活动策划方案
2014/05/14 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
市场部岗位职责
2015/02/12 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
商标侵权律师函
2015/05/27 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
公司会议开幕词
2016/03/03 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
vue elementUI批量上传文件
2022/04/26 Vue.js