- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
js弹出层
HYPERLINK /cloudgamer/archive/2008/09/15/1290954.html JavaScript 仿LightBox内容显示效果
相关推荐: HYPERLINK /cloudgamer/archive/2010/10/11/AlertBox.html AlertBox 弹出层(信息提示框)效果
?
近来要做一个LightBox的效果(也有的叫Windows关机效果),不过不用那么复杂,能显示一个内容框就行了。这个效果很久以前就做过,无非就是一个覆盖全屏的层,加一个内容显示的层。不过showbo教了我position:fixed这个新特性,决定重写一遍。先看效果:
LightBox
内容显示
HTMLCONTROL Forms.HTML:Select.1 ps:“定位效果”的意思是屏幕滚动也能固定位置。程序说明:要实现一个简单的LightBox效果,主要有两个部分:覆盖层和高亮层。
【跨浏览器的固定定位】
首先要先说说这个东西position:fixed,它???作用是跨浏览器的固定定位。
摘自 HYPERLINK /andy/post/70.html 详解定位与定位应用:“如让一个元素可能随着网页的滚动而不断改变自己在浏览器的位置。而现在我可以通过CSS中的一个定位属性来实现这样的一个效果,这个元素属性就是曾经不被支持的position:fixed; 他的含义就是:固定定位。这个固定与绝对定位很像,唯一不同的是绝对定位是被固定在网页中的某一个位置,而固定定位则是固定在浏览器的视框位置。”
程序中很多地方利用了这个css,ie7、ff都支持这个css,但ie6不支持,程序中只能是在ie6模拟这个效果。 【覆盖层】
覆盖层的作用是把焦点限制在高亮层上,原理是通过一个绝对定位的层(通常使用div),设置它的宽度和高度以致能覆盖整个屏幕(包括缩放和滚动浏览器的情况下),再给它设置一个比较高的zIndex来层叠在原有内容之上(但要比高亮层小),这样用户就只能点到这个层之上的内容了。如果初始化时没有提供覆盖层对象,程序中会自动创建:
this.Lay?=?$(this.options.Lay)?||?document.body.insertBefore(document.createElement(div),?document.body.childNodes[0]);
其中由于 HYPERLINK /cloudgamer/archive/2008/07/27/1252308.html document.body.appendChild()导致IE已终止操作bug,所以用了insertBefore。。
【覆盖屏幕】
覆盖层的关键就是如何做到覆盖整个屏幕(锁定整个页面),支持position:fixed的话很简单:
with(this.Lay.style){?display?=?none;?zIndex?=?this.zIndex;?left?=?top?=?0;?position?=?fixed;?width?=?height?=?100%;?}
这样能把浏览器的视框覆盖了,其中使用了fixed样式,这里的意思是定位在浏览器的视框,并100%覆盖。注意不要理解错为这个层覆盖了整个页面,它只是把浏览器可视的部分覆盖了来达到效果。ie6不支持怎么办?有几个方法:1,做一个覆盖视框的层,并在onscroll时相应移动,在onresize时重新设大小;2,做一个覆盖视框的层,在样式上模拟fixed效果;3,做一个层覆盖了整个页面的层,并在onresize时重新设大小;方法1的缺点是滚动时很容易露出马脚,而且不好看;方法2的缺点是需要页面结构的改动和body样式的修改,绝对不是好的架构;而我用的是方法3,有更好的方法欢迎提出。
用这个方法只要把position设为absolute,并使用一个_resize方法来设置width和height即可:
Codethis.Lay.style.position?=?absolute;this._resize?=?Bind(this,?function(){????this.Lay.style.width?=?Math.max(document.documentElement.scrollWidth,?document.documentElement.clientWidth)?+?px;????this.Lay.style.height?=?Math.max(document.documentElement.scrollHeight,?document.documentE
文档评论(0)