星期四 阴转小雨 14~25℃

一个简单的div蒙层效果(原生js,兼容 IE、FF、Opera、chrome)

昨天找到的那个虽然效果不错,可是在一些低配置机器会比较卡,今天费了很大劲又找到一个,比较简单。测试时在chrome下发现一个问题,Y方向不居中,发现原来是chrome对scrollTop的识别问题

原代码:

document.documentElement.scrollTop

修改为:

document.documentElement.scrollTop+document.body.scrollTop

2012-2-23 更新:

  1. 改变窗口大小时蒙层始终居中;
  2. 避免在页面无滚动条时,显示蒙层后出现纵向流动条;
  3. 显示蒙层时隐藏横向滚动条。

2012-2-27 更新:

拖动滚动条时蒙层始终居中。

全文例子:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=7" />
<style type="text/css">
.pop { border:3px solid skyblue;width:400px; background:#fff; padding:5px; display:none;}
</style>
<script type="text/javascript">
function BtHide(id){var Div = document.getElementById(id);if(Div){Div.style.display="none"}}
function BtShow(id){var Div = document.getElementById(id);if(Div){Div.style.display="block"}}
function BtPopload(showId){
// 高度减去 4px,避免在页面无滚动条时显示遮罩后出现流动条
 var h = (Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight) – 4) + ‘px’;
 var w = document.documentElement.scrollWidth + ‘px’;
 var popCss = "background:#fefefe;opacity:0.3;filter:alpha(opacity=30);position:absolute;left:0;top:0;overflow:hidden;border:0"
 var rePosition_mask = function() {
  pop_Box.style.height = h;
  pop_Box.style.width = w;
  pop_Iframe.style.height = h;
  pop_Iframe.style.width = w;
  if (document.documentElement.offsetWidth < 950) {
   //防止正常宽度下点击时 在 ff 下出现页面滚动到顶部
   document.documentElement.style.overflowX = "hidden";
  }
 }
 var exsit = document.getElementById("popBox");
 if (!exsit) {
  var pop_Box = document.createElement("div");
  pop_Box.id = "popBox";
  document.getElementsByTagName("body")[0].appendChild(pop_Box);
  pop_Box.style.cssText = popCss;
  pop_Box.style.zIndex = "10";
  var pop_Iframe = document.createElement("iframe"); // 这里如果用 div 的话,在 ie6 不能把 <select> 遮住
  pop_Iframe.id = "popIframe";
  document.getElementsByTagName("body")[0].appendChild(pop_Iframe);
  pop_Iframe.style.cssText = popCss;
  pop_Iframe.style.zIndex = "9";
  rePosition_mask();
 }
 BtShow("popIframe");
 BtShow("popBox");
 BtShow(showId);
 var pop_Win = document.getElementById(showId);
 pop_Win.style.position = "absolute";
 pop_Win.style.zIndex = "11";
 var rePosition_pop = function() {
  pop_Win.style.top = document.documentElement.scrollTop + document.body.scrollTop + document.documentElement.clientHeight/2 – pop_Win.offsetHeight/2 + ‘px’;
  pop_Win.style.left = document.documentElement.scrollLeft + document.body.scrollLeft + document.documentElement.clientWidth/2 – pop_Win.offsetWidth/2 + ‘px’;
 }
 rePosition_pop();
 window.onresize = function(){
  w = document.documentElement.offsetWidth + ‘px’; // 使用 scrollWidth 不能改变宽度
  rePosition_mask();
  rePosition_pop();
 }
 window.onscroll = function(){
  rePosition_pop();
 }
}
function BtPopShow(Bid,Did) {
 var UploadBtn = document.getElementById(Bid);
 if (UploadBtn){UploadBtn.onclick = function() {BtPopload(Did);return false;}} 
}
function BtPopHide(Bid,Did) {
 var UploadBtn = document.getElementById(Bid);
 if (UploadBtn){UploadBtn.onclick = function() {BtHide(Did);BtHide("popBox");BtHide("popIframe");return false;}} 
}
</script>
</head>
<body>
<a href="#@" id="open_1">测试一</a>
<a href="#@" id="open_2">测试二</a>
<div class="pop" id="tinybox_1"><a href="#" id="close_1">关闭一</a></div>
<div class="pop" id="tinybox_2"><a href="#" id="close_2">关闭二</a></div>
<script type="text/javascript">
BtPopShow("open_1","tinybox_1");
BtPopHide("close_1","tinybox_1")
BtPopShow("open_2","tinybox_2");
BtPopHide("close_2","tinybox_2")
</script>
</body>
</html>


友吧今天

运动首页v2设计完成。

星期三 晴 13~24℃

终于找到一个好用又不是很重的div蒙层效果

以前断断续续找过很多次,都没有找到一个理想的,要么太笨重,要么一些浏览器不兼容。今天找到一个挺酷的效果,体积也不是很大,4K的js,完全可以接受。

点击下载

重点说明:经测试,如果是加载外部子页面,那么子页面的样式要复制到父页面中。

来自:http://www.zhangxinxu.com/wordpress/?p=70


友吧今天

继续设计新首页。

星期二 晴(很舒服的天气,春高气爽) 8~20℃

找了三种适合放在卧室的植物

以前养过白掌银手指和豆瓣绿,室内植物本来不太好养,再加上没什么经验,都没养多久。

今天查到下面三种植物适合放卧室(夜间会释放氧气),打算买来养养看:

虎尾兰(又称虎皮兰)、芦荟、龟背竹。

仙人掌也是夜间放氧,之前养的银手指就是属于仙人掌类,浇水太勤,根烂了。


友吧今天

继续设计新首页,预计这两天设计完成。

星期一 多云转晴 8~21℃

友吧今天

  1. 场馆发布页加入“城市区域”选择。
     
  2. 继续设计新的首页。

 

星期日 少云转多云 12~22℃

NOD32免费升级设置 intitle:"index of" nup

打开http://www.google.com(不要用百度,查不到),输入关键字:

intitle:"index of" nup

在结果列表中任意点开一个网站,可以看见这里列出的是这个服务器下包含的所有可用NOD32升级文件了,一般这些文件会标明其创建时间,如果有一些文件创建时间和现实时间很接近,则说明这个服务器近期还在准时更新中,我们可以使用这个服务器了。如果不合适就在GOOGLE中找下一个服务器。

这个升级服务器的地址就是地址栏上的地址,直接复制,粘贴到NOD32中的更新设置里就可以了。

本方法来自:http://HI.BAIDU.com/mousekkkk/blog/item/caf18a943d6a1940d1135e9c.html


骨伤医院(2)

开了和上次一样的中药。


医保门诊累计起付线的算法

今天在医院窗口了解到的。历年账户余额可以纳入到这个累计里,本年的余额不可以。如果历年账户余额为零,那么就要完完全全自负超过一千才可以使用门诊统筹基金。


城西城北菜价两重天

发现拱北那边的菜价比城西便宜不少,好像是两个不同的城市。

第1061天:周末

星期六 小雨转阴 10~18℃

  1. 《洛杉矶之战》看了40分钟。
  2. 处理一个单子。

星期五 雷阵雨转阴(有点闷) 15~28℃

友吧今天

  1. 开始设计新首页。
  2. 场馆暂时隐藏“上海”,先把杭州录完,一个个城市来。
  3. 建 uh_cityarea 表,储存城市区域。

第1059天:了解数据采集,录场馆

星期四 多云 20~29℃

友吧今天

  1. 了解数据采集。
  2. 了解火车采集器(LocoySpider)
  3. 了解googlemap经纬度转mapbar经纬度。(相关:Mapbar经纬坐标偏移的加/解密算法
  4. 录场馆。

星期三 小雨转阴 14~22℃

blog 系统升级(由1.8 Spirit Build 80722 升级到 1.8 Walle Build 100427)

选择对应的旧版本,再点击升级就行了。使用自动安装包,挺方便的,开始以为会破坏原来的模板和设置,原来不会。

新版本可以修改日志的发布时间,方便补充日志。比如今天停电,可以先把日志写在本子上,第二天发布时把发布日期改一下。


友吧今天

  1. 优化场馆列表静态页用户操作体验。
     
  2. 去掉“校园运动场”标签(可以归到“足球场”里),去掉“休闲广场”“器材卖场”标签,增加“瑜伽馆”“武术馆”“舞蹈机构”标签。
     
  3. 标签列表由按 tagid 排序改为按 dateline 排序,这样在增减标签时可以灵活控制标签显示顺序,通过修改 dateline 的值实现。

星期二 晴 12~22℃

友吧今天

  1. 发现录场馆居然是件有趣的事。这些场馆与其说是方便广大运动爱好者,不如说先是方便我自己 – -!
     
  2. 修改分享场馆页 tag 列表样式折行的问题。
     
  3. 制作场馆列表排序(城市区域、排行)的 html 静态效果,Ryan 将根据此效果处理程序。
     
  4. 场馆详细页放大地图,发现用 js 来处理会有一些问题,所以仍然使用 iframe。使用 js 和 iframe 都各有一些利弊。

    iframe 的弊端主要是第一次点击放大时需要再次加载地图,不过第二次之后点击就不需要再次加载了。好处是大小地图相互不影响,因为是使用两个分开的地图,用户在大图上进行缩放或移动操作后,切换到小图,然后再切换到大图时不需要重新定位,这在用户体验上有一定优势,否则每次切换都重新定位,会显得程序在自作主张,清空了用户之前的行为。

    使用 js 来处理会出现一些比较奇怪的样式问题,并且缩小后再点击目标点会弹出信息框(可能可以处理掉)。好处是因为使用同一个地图,第一次放大时速度会快一些,只是相当于在同一个地图上放大了一个级别,不需要再次加载地图,不过从第二次开始,每次都是在缩放,而 iframe 从第二次开始只是在两个 div 之间进行切换,效率会高一些。

    综合起来说,iframe 处理起来简单,js 处理起来较为复杂。iframe 在初次点击放大时显示较慢,但是第二次之后效率比 js 高;js 在初次点击放大时显示较快,但是每次切换都会需要重新定位,破坏用户之前的行为。

    遵循一个原则:不要把简单的问题复杂化。