jQuery 弹出窗口的形式一直是具体案件的中心

在网上查 多 不是不符合无效;因此,一些自己总结,解决这个问题

原则:

常见问题:

弹出层居中了,背景也是半透明的

可是发现一拉动滚动栏立即就露馅了发现背景仅仅设置了屏幕所在段,其它部分都是原来的样子,并且弹出层由于滚动栏移动不见了 这是网上大部分弹出层出现的普遍问题

问题解决的方法,有三种

1.利用IE6的漏洞,_top和使用css expresstion表达式

长处:不会抖动,通过计算得出位置,大部分浏览器都能够使用

缺点:不推荐使用css expresstion由于在做不论什么事件时css expression都会调用js方法又一次计算结果,随便都有1000次/秒,当页面元素非常多渲染效果就非常非常差

背景层,弹出层的样式将 position:fixed;

改成

position:fixed!important;/* FF IE7*/
position:absolute;/*IE6*/
_top: expression(eval(document.compatMode &&
            document.compatMode=='CSS1Compat') ?
            documentElement.scrollTop + (document.documentElement.clientHeight-this.offsetHeight)/2 :/*IE6*/
            document.body.scrollTop + (document.body.clientHeight - this.clientHeight)/2);/*IE5 IE5.5*/

2.js方法又一次计算位置

$(function(){
$(window).scroll(function(){
  //浏览器滚动栏失效;
  //$(window).scrollTop(0);

  var offset = $(window).offset();
  var position = $(window).position();

$("#div_pop").css("top",$(window).scrollTop()+$(window).outerHeight()/3);
   //滚动栏移动的高度+浏览器高度(计算外框)的三分之中的一个
$("#div_back").css("height",
 $(window).scrollTop()+$(window).outerHeight()); })  //背景层的大小高度,滚动栏移动的高度+浏览器高度(计算外框)

长处

攻克了css expression的大量元素渲染慢的问题

缺点

chrome没有问题,IE中会抖动由于移动滚动栏时计算高度,延时导致弹窗抖动(效果十分不友好)

3.固定滚动栏  让弹出层一直居中

利用滚动栏事件固定滚动栏一直为0

$(function(){
$(window).scroll(function(){
  //浏览器滚动栏失效;
  //$(window).scrollTop(0);
}) 

长处:jQuery的scroll方法兼容大部分浏览器重要的是同一时候屏蔽onkeypress上下导致的滚动栏移动

再讲讲js的锁定滚动栏

能够參照

<script>
var firefox = navigator.userAgent.indexOf('Firefox') != -1;
function MouseWheel(e) {
///对img按下鼠标滚路,阻止视窗滚动
e = e || window.event;
if (e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true;
if (e.preventDefault) e.preventDefault();
else e.returnValue = false;
//其它代码
}
window.onload = function () {
var img = document.getElementById('img');
firefox ? img.addEventListener('DOMMouseScroll', MouseWheel, false) : (img.onmousewheel = MouseWheel);
}
</script><div style="height:100px"></div>
<img src="http://avatar.profile.csdn.net/C/5/A/1_px372265205.jpg" id="img" style="width:200px"/>
<div style="height:1000px"></div>

滚动栏事件

onmousewhell  IE

DOMMousescroll  FF

详细说明看这个链接


javascript鼠标滚轮滚动事件

可是这种方法用onkeypress 上下键 就会失效假设想完好能够加上对上下键的监控

而以下的方法直接使用position:fixed相对于浏览器偏移攻克了上面的全部问题

可是注意以下3点:

1.<!DOCTYPE html>一定要写,设置浏览器对html的解析版本号 详细分析能够看解说这个的blog

2. 设置一个背景透明的图层

z-index:9998;  //图层设置

opacity:0.5;     //IE6的透明

filter: alpha(opacity=50); //IE6以上的透明

-moz-opacity: 0.5;           //firefox透明

3.设置一个弹出层

z-index:9999;  //图层设置

弹出层,背景层的position都要是fixed

3.点击button就显示,否则隐藏.

<!DOCTYPE html>
<html>
<head>
<title>jQuery弹出框</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
.div_back{
 display:none;
 position:fixed;
 z-index:9998;
 top:0;
 left:0;
 width: 100%;
 height: 100%;
 background-color:#666666;
 opacity:0.5;
 filter: alpha(opacity=50);
 -moz-opacity: 0.5;
 }
.div_pop{
 display:none;
 position:fixed;
 z-index:9999;
 background-color:#eafcd5;
 top:30%;
 left:42%;
 width:200px;
 height:80px;
 padding:2px;
 border-radius:10px;
 box-shadow: 0 0 10px #666;

 border:2px solid #666666;
 }
.div_info{
position:absolute;
padding:10px;
}
.div_info_font{
position:absolute;
width:120px;
left:80px;
top:20px;
}
.div_title{
font-size:20px;
padding:2px;
background-color:#978987;
}
.div_close{
position:absolute;
right:5px;
}
.div_img{
 height:40px;
 width:40px;
 left:20px;
 position:absolute;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script>
function fnClose(){
 $("#div_back").hide();
 $("#div_pop").hide();
}
function fnOpen(){
 $("#div_back").show();
 $("#div_pop").show();
}
</script>
</head>
<body>
<div id="div_back" class="div_back">
</div>
<div id="div_pop" class="div_pop" >
 <div id="div_title" class="div_title">提示:
 <a id="close" href="javascript:fnClose()" class="div_close">关闭</a>
 </div>
 <div id="div_info" class="div_info">
 <img src="image/load.gif" class="div_img"/><div class="div_info_font">正在载入中...</div></div>
</div>
<p align="center">
<input type="button" value="打开" onClick="fnOpen()"/>
</p>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
<h2>aaa</h2>
</body>
</html>

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-14 00:34:16

jQuery 弹出窗口的形式一直是具体案件的中心的相关文章

jQuery弹出窗口完整代码

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

Jquery弹出窗口

今天讲了Jquery的弹出窗口的组成和用法: 先把引用文件的代码写好: // 每个弹窗的标识 var x =0; var idzt = new Array(); var Window = function(config){ //ID不重复 idzt[x] = "zhuti"+x; //弹窗ID //初始化,接收参数 this.config = { width : config.width || 300, //宽度 height : config.height || 200, //高度

jQuery 弹出窗口一直居中详细案例

在网上查了 很多 不是不符合就是效果不好;于是自己总结一番,解决此问题 原理: 常见问题: 弹出层居中了,背景也是半透明的 但是发现一拉动滚动条马上就露馅了发现背景只设置了屏幕所在段,其他部分都是原来的样子,而且弹出层因为滚动条移动不见了 这是网上大部分弹出层出现的普遍问题 问题解决办法,有三种 1.利用IE6的漏洞,_top和使用css expresstion表达式 优点:不会抖动,通过计算得出位置,大部分浏览器都可以使用 缺点:不推荐使用css expresstion因为在做任何事件时css

jquery 弹出窗口,锁定背景方法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"><head><title>新建网页</titl

jQuery弹出窗口插件FancyBox用法教程

1.引入jquery核心库和Fancybox插件库 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"(www.111cn.net)></script> <script type="text/javascript" src="/fancybox/jquery.fa

EPUB弹出窗口式脚注

参考原文:EPUB弹出窗口式脚注 网上搜到一些国学典籍的EPUB版,虽有古人的注解,但正文和注解混排在一起,当我只想迅速读正文的时候比较碍眼.于是研究了一下 EPUB3 中有关脚注(footnote)的规格定义,写了一个 Python 脚本把所有混在正文中的脚注全部改写成了弹出窗口样式,在 iBooks 里测试通过,略记一笔. 什么是EPUB弹出窗口式脚注 弹出式脚注是 EPUB3 推出的,简单的说就是正文中加一个链接锚点,对应一个脚注模块,点击链接的时候,脚注内容会直接以弹出窗口的形式显示出来

实用带多种CSS动画特效的jQuery弹出层插件hDialog.js

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <link rel=&qu

Js(Jquery)实现的弹出窗口

想实现一个弹出层,过一段时间自动消失的功能. 之前的项目中是:在页面中预先先一个<div>区域,默认隐藏或者因为没有内容不显示.当需要显示信息时,将该<div>填充上内容,并用样式显示在正确的位置上. 今天想找这么一个插件,发了这个:http://tautologistics.com/projects/jquery.modaldialog/ 还不错,可以弹出窗口手动关闭,也可定时关闭. 百度盘:http://pan.baidu.com/s/1qWruV2c 后来再进行搜索,发现了这

自用的弹出窗口jquery插件

现有网上的弹出窗口插件很多, 但发现在项目应用中总会有些功能不能适用, 最后只好自己写一个:插件主要参考了ymPrompt弹窗代码, ymPrompt是JS的弹窗,本插件相当于是ymPrompt的jquery版吧, 不过经过大半年的修改,增加了些功能和作了一些改进: 里面代码并不复杂,希望可以对各位有些用处.附件里面有版本的更新说明, 还有一个弹窗最初版本的调用例子,不过经过修改后,调用方式有点修改.脚本代码 下载地址:http://www.huiyi8.com/sc/8377.html