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 新浪背投广告实现代码
Jul 07 Javascript
纯javascript实现分页(两种方法)
Aug 26 Javascript
angularjs表格分页功能详解
Jan 21 Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 Javascript
AngularJS 所有版本下载地址
Sep 14 Javascript
JQuery选中select组件被选中的值方法
Mar 08 jQuery
vue+element-ui+ajax实现一个表格的实例
Mar 09 Javascript
JavaScript实现仿Clock ISO时钟
Jun 29 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 jQuery
vue router动态路由设置参数可选问题
Aug 21 Javascript
JavaScript实现轮播图效果
Oct 30 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
Dec 10 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
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python读写配置文件的方法
2015/06/03 Python
Python实现字典的key和values的交换
2015/08/04 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Python实战购物车项目的实现参考
2019/02/20 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
Collection和Collections的区别
2016/05/02 面试题
求网格中的黑点分布
2013/11/06 面试题
担保书怎么写
2014/04/01 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
给客户的感谢信
2015/01/21 职场文书
房租涨价通知
2015/04/23 职场文书
教师继续教育反思周记
2015/06/25 职场文书