Archives for : 友吧今天

星期四 阴转小雨 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. 继续设计新的首页。

 

星期五 雷阵雨转阴(有点闷) 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 在初次点击放大时显示较快,但是每次切换都会需要重新定位,破坏用户之前的行为。

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

第1055天:《非诚勿扰2》

星期日 阴转多云 16~22℃

《非诚勿扰2》

还是有点味道的。


友吧今天

tag“校园操场”改名为“校园运动场”。

星期五 阴转多云 11~20℃

js改变地址栏参数

(一)

function orderby(searchname,searchv){
 var href = window.location.href;//网址全部地址
 var vyes = window.location.search;//有没有带参数
 if (vyes != ”) {
  var r, rtop, rend;
  r = vyes.search(searchname);//出现的位置
  if (r != -1) {//如果查询中有这个查询名
   rtop = vyes.substr(0,r);
   rend = vyes.substr(r);
   var r2 = rend.search(‘&’);
   if (r2 != -1) {
    rend = rend.substr(r2);
    //alert(rtop+searchname+’='+searchv+rend);
    now_href = window.location.pathname + rtop + searchname + ‘=’ + searchv + rend;
   } else {//如果后面没有&了.
    now_href = window.location.pathname + rtop + searchname + ‘=’ + searchv;
   }
  } else {//如果没有这个查询名
   now_href = href + ‘&’ + searchname + ‘=’ + searchv;
  }
 } else {
  now_href = href + ‘?’ + searchname + ‘=’ + searchv;
 }
 //如果参数的值(searchv)为空,则删除该参数,调用 例:orderby("valname", "");
 if (searchv == "") {
  var nr, nrtop, nrend;
  nr = now_href.indexOf(searchname);
  if (nr != -1) {
   nrtop = now_href.substr(0,nr);
   nrend = now_href.substr(nr);
   var nr2 = nrend.search(‘&’);
   if (nr2 != -1) {
    nrend = nrend.substr(nr2+1);
    now_href = nrtop + nrend;
   } else {//如果后面没有&了.
    nrtop = now_href.substr(0,nr-1);
    now_href = nrtop;
   }
  }
 }
 //alert(now_href);
 location = now_href;
}

参考:http://hi.baidu.com/feige05/blog/item/6dd520b72845b0f730add127.html

注意:在调用时不要使用 href="javascript:void(0)",在 ie 下无效。

(二)

function changeURLPar(destiny, par, par_value){
 var pattern = par+’=([^&]*)’;
 var replaceText = par+’='+par_value;
 if (destiny.match(pattern)){
  var tmp = ‘/\\’+par+’=[^&]*/’;
  tmp = destiny.replace(eval(tmp), replaceText);
  return (tmp);
 }else{
  if (destiny.match(‘[\?]‘)){
   return destiny+’&’+ replaceText;
  }else{
   return destiny+’?'+replaceText;
  }
 }
 return destiny+’ ‘+par+’ ‘+par_value;
}
alert(changeURLPar("http://xxx.com/view.php?do=tag&id=1", ‘id’, 99));

来自:
changeURLPar
http://HI.BAIDU.com/crp8/blog/item/4d568013b7c89d856438db67.html


mapbar api 信息窗口的一个莫名其妙的问题

此问题在 chrome 下出现。在下面代码的最末尾</span>后面要加一个空格,否则信息窗口的宽度和高度无效。排查了许久才排查出来,原来问题出在这么个不起眼的地方。

new MInfoWindow("<b style=’margin-left:3px’>$blog[subject]</b>", "<span style=’margin-left:3px’>$blog[address]</span> ")


友吧今天

  1. 场馆列表页增加地图伸缩功能(使用地图API的 resize(width, height) 方法)。
     
  2. 场馆详细页放大地图由 iframe 改成 js。(2011-04-12 更新:发现用 js 来处理会有一些问题,所以仍然使用 iframe)