当前位置: 首页 > news >正文

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>


 

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

相关文章:

  • 收集的一些链接
  • 盘点20款表现出众的HTML5游戏
  • VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
  • Linux系统中nc命令的基本用法
  • nginx使用GeoIP限制访问并支持白名单
  • 2015Q1中国手机游戏市场监测报告
  • 烂泥:学习ubuntu之快速搭建LNMP环境
  • U盘安装Windows
  • C语言时间处理
  • PHP IDE 框架 服务器 相关
  • liux下ftp链接服务器的常用命令
  • 最近有个需求,就是把某个网址跳转到另外一个网址
  • socket server framework 框架
  • ASP.NET异步处理
  • 第六回 煤渣场对垒藏高人 小饭馆煮面论英雄[林大帅作品连载]
  • 网络传输文件的问题
  • @angular/forms 源码解析之双向绑定
  • [case10]使用RSQL实现端到端的动态查询
  • [LeetCode] Wiggle Sort
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • CAP 一致性协议及应用解析
  • ES6--对象的扩展
  • node学习系列之简单文件上传
  • PAT A1017 优先队列
  • Python - 闭包Closure
  • ReactNativeweexDeviceOne对比
  • Spring Cloud Feign的两种使用姿势
  • SSH 免密登录
  • XML已死 ?
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 电商搜索引擎的架构设计和性能优化
  • 复杂数据处理
  • 记录一下第一次使用npm
  • 将 Measurements 和 Units 应用到物理学
  • 类orAPI - 收藏集 - 掘金
  • 聊聊flink的BlobWriter
  • 使用docker-compose进行多节点部署
  • 微信小程序实战练习(仿五洲到家微信版)
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • # 安徽锐锋科技IDMS系统简介
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (5)STL算法之复制
  • (floyd+补集) poj 3275
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (TOJ2804)Even? Odd?
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (差分)胡桃爱原石
  • (二)WCF的Binding模型
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (转)ObjectiveC 深浅拷贝学习