兼容各种浏览器的JavaScript图片幻灯片

1 Comment

兼容IE6,IE7,IE8,Firefox,Maxthon,Safari,Opera.

functions.js

/* 存储参数 */
var links = new Array();
var imgs = new Array();
var titles = new Array();

/* 显示参数 */
var imageWidth = 457;//图片宽度
var imageHeight = 210;//图片高度
var loading = "http://www.zainanfang.com/wp-content/themes/zainanfang/images/loading.png";//加载中图片
var hightColor = "#CF9262";//高亮色彩
var lowColor = "#F5F8F3";//低亮色彩
var titleColor = "#000";//题目文字色彩

/* 控制参数 */
var count = 4;//图片个数
var changeTime = 2000;//切换时间,单位毫秒

/* 初始化容器 */
for(var i = 1; i <= count; i++) { imgs[i] = new Image(); imgs[i].src = loading; titles[i] = ""; links[i] = "#";}

/* 插入CSS代码 */
var str = "<style type='text/css'>";
str += "#imgnv{height:16px;display:inline;}#imgnv div{float:left;margin-right:1px;display:inline;}";
str += "#imgnv div.on,#imgnv div.off{margin-bottom:1px;width:30px;height:15px;line-height:16px!important;font-size:9px;text-align:center;cursor:pointer;cursor:hand}";
str += "#imgnv div.on{background:"+hightColor+";color:"+lowColor+";}";
str += "#imgnv div.off{background:"+lowColor+";color:"+hightColor+";text-decoration:none}";
str += "#titnv{color:"+titleColor+";text-align:center;font-weight:bold;margin-top:5px;}";
str += "</style>";
str += "<div style='position:relative;border:1px solid #FFF'>";
str += "<div><a id='dlink' href='#'><img id='dimg' src='" + loading + "' border='0' width='" + imageWidth + "' height='"+imageHeight+"' style='filter:Alpha(opacity=100)' onmouseover='Pause(true)' onmouseout='Pause(false)'></a></div>";

/* 添加图片 */
str += "<div id='imgnv'>";
for(var i = 1; i <= count; i++)
{
str += "<div id='it"+i+"' class='";
if(i == 1) str += "on"; else str += "off";
str += "' onmouseover='ImgSwitch("+i+", true)' onmouseout='Pause(false)'>"+i+"</div>";
}
str += "</div><div id='titnv'></div>";
str += "</div>";

function SetAlpha(){if(document.all){if(oi.filters &amp;amp;amp;&amp;amp;amp; oi.filters.Alpha) oi.filters.Alpha.opacity = opacity;}else{oi.style.MozOpacity = ((opacity >= 100)? 99:opacity) / 100;}}
function ImgSwitch(id, p){if(p){pause = true;opacity = 100;SetAlpha();}oi.src = imgs[id].src;document.getElementById("dlink").href = links[id];document.getElementById("it" + lastid).className = "off";document.getElementById("it" + id).className = "on";document.getElementById("titnv").innerHTML = "<strong>" + titles[id] + "</strong>";curid = lastid = id;}
function ScrollImg(){if(pause &amp;amp;amp;&amp;amp;amp; opacity >= 100) return;if(sw == 0){opacity += 2;if(opacity > delay){ opacity = 100; sw = 1; }}if(sw == 1){opacity -= 3;if(opacity < 10){ opacity = 10; sw = 3; }}SetAlpha();if(sw != 3) return;sw = 0;curid++; if(curid > count) curid = 1;ImgSwitch(curid, false);}
function Pause(s){pause = s;}
function StartScroll(){setInterval(ScrollImg, speed);}
function CheckLoad(){if (imgs[1].complete == true &amp;amp;amp;&amp;amp;amp; imgs[2].complete == true) {clearInterval(checkid);setTimeout(StartScroll, changeTime);}}

index.php

<script src="<?php bloginfo('template_directory') ?>/functions.js" type="text/javascript"></script>
<script type="text/javascript">
links[1] = "<?php global $post; echo get_post_meta(198, 'link1', true); ?>";
links[2] = "<?php global $post; echo get_post_meta(198, 'link2', true); ?>";
links[3] = "<?php global $post; echo get_post_meta(198, 'link3', true); ?>";
links[4] = "<?php global $post; echo get_post_meta(198, 'link4', true); ?>";

imgs[1].src = "<?php global $post; echo get_post_meta(198, 'image1', true); ?>";
imgs[2].src = "<?php global $post; echo get_post_meta(198, 'image2', true); ?>";
imgs[3].src = "<?php global $post; echo get_post_meta(198, 'image3', true); ?>";
imgs[4].src = "<?php global $post; echo get_post_meta(198, 'image4', true); ?>";

titles[1] = "<?php global $post; echo get_post_meta(198, 'title1', true); ?>";
titles[2] = "<?php global $post; echo get_post_meta(198, 'title2', true); ?>";
titles[3] = "<?php global $post; echo get_post_meta(198, 'title3', true); ?>";
titles[4] = "<?php global $post; echo get_post_meta(198, 'title4', true); ?>";
document.write(str);

var oi = document.getElementById("dimg");
var pause = false;
var curid = 1;
var lastid = 1;
var sw = 1;
var opacity = 100;
var speed = 15;
var delay = (document.all)? 400:700;
var checkid = setInterval(CheckLoad, 10);
</script>

在南方网站设计

2 Comments

最近在忙什么?很久没写文字了吧~
这几天一连接了两个网站项目来做,成功地都变成了WordPress后台.为WordPress开发模板真的是一件只能用惬意来形容的事情.一旦习惯了WordPress的”方言”,强大的功能实现起来并不是一个梦.
整体感觉起来,WordPress中提供对每篇文章的自定义域是最强大的功能,简直提供了一个小型数据库,你可以定义成任何东西!

zainanfang

上图就是最近一直在做的一个网站,在南方,是一个诗社.

[译作]新白宫网站代码分析

9 Comments

概述. 在美国第44任总统就职日这个历史性的日子,让我们来分析一下新的白宫网站(whitehouse.gov)代码结构吧。网站基于ASP.NET构建。

[singlepic=18466]

whitehouse.gov网站使用IIS 6.0. 网站的HTTP头信息中包含键值对”Server: Microsoft-IIS/6.0″。网站并没有使用微软公司最新版本服务器软件,IIS/7。

whitehouse.gov网站使用ASP.NET 2.0. HTTP头中标识自己的程序版本为”X-Aspnet-Version: 2.0.50727″。这个信息可以去掉,这样可以为每次服务器响应节省30字节带宽。

whitehouse.gov网站使用JQuery 1.2.6. JQuery JavaScript库,使用了其最小集版本,位于/includes/文件夹下。很多开发者使用Google服务器托管的JQuery以便提升性能和减小下载脚本的延迟时间。这样做可以提升站点性能。

<script type="text/javascript" src="/includes/eop/jquery-1.2.6.min.js"></script>

whitehouse.gov网站使用GZIP压缩. 所有网站文本都采用了GZIP压缩,显著地提升了性能。

未压缩大小:  48218 bytes
压缩后大小:   8370 bytes
节省带宽:           ~80%

whitehouse.gov网站使用Vary: Accept-Encoding. 在HTTP头中添加Vary: Accept-Encoding是一种强制代理不向不能解码GZIP的客户端发送GZIP内容的手段。

whitehouse.gov网站使用Cache-Control: privatemax-age. 它使用了”max-age=85895“,大约1 天。这样,html页面应该只会在你的计算机中缓存1天。

whitehouse.gov网站使用Web Trends Live追踪技术. WebTrends声称是“领先的网页分析和客户为中心智能市场营销解决方案(leading provider of web analytics and consumer-centric marketing intelligence solutions)。”

whitehouse.gov网站使用meta keywords标记. 这样做很奇怪,因为Internet上的访问者很少有不知道这里是干什么的。meta标记如下:

<meta name="keywords" content="President, Barack Obama, White House,
United States of America, 44th President, White House history, President Obama,
Barck, Barek, Barak, Barrack, Barrak, Obma, Barack" />

这样并不会对提升whitehouse.gov网站的Google PageRank有多少贡献。我认为搜索Barack Obama的用户无论如何都会被导引到这个网站的。

whitehouse.gov网站使用ViewState. 这是一个隐藏表单,允许网站在浏览器中存储服务器端数据。ASP.NET自动解析发送到浏览器的ViewState信息。浏览器不应该解析这个信息。

whitehouse.gov网站使用WebResource.axd. 这是ASP.NET生成的一个脚本文件。通常它们不能被有效地缓存,并且我发现它们的确降低了性能。

whitehouse.gov网站包含了很多空白字符. 如果你的浏览器启用了GZIP,这并不会带来性能影响,但是如果去掉这些空白字符,网站代码可以减小20%以上。

whitehouse.gov网站包含注释标签. 网站使用了很多HTML注释分割页面代码区域。如果能将这些注释写在服务器端代码中,可以在编译页面时不将注释编译在最终页面代码中,从而提升效率。

<!-- Start -->
<!-- End -->

whitehouse.gov网站包含很长很长的ASP.NET ID. 页面中的很多元素包含非常长的ID,是浪费带宽的主要因素之一。这些长ID可以很容易地在服务器端替换成短ID。

<a id="ctl09_rptNavigation_ctl00_rptNavigationItems_ctl01_hlSubNav"...

whitehouse.gov网站使用的GIF多于PNG. 网站使用的GIF图片多于PNG图片。PNG格式的图片可以更加优化,从而节省带宽和消耗。网站中使用了两个GIF动画。

whitehouse.gov网站使用了5个层叠式样式表(stylesheets)文件和12个JavaScripts脚本文件. 如果能把这两类文件合并成两个文件,网站可以更快而且更轻量级。当然这是针对访问首页的访客而言。奇怪的是,用于修饰管理页面的层叠式样式表也被加载进了普通用户的访问中:

/* admin styles */
/* cms */
.adminNavigation {width:996px; position:relative; z-index:100;}

whitehouse.gov网站使用了高度压缩的JPG. 如果你距离屏幕较远,或者视力不是那么好,这些图片看起来还行。开发者对JPG图片采用了高度压缩。这里显示的图片被放大并且轻微地二次压缩过。

[singlepic=18465]

whitehouse.gov网站使用了image sprites技术. 这项技术可以大幅提升站点性能,因为它将若干个小图片合并成了一张图片。这是一项先进的技术。采用了image sprites技术的图片是”nav-sprite.png“.

whitehouse.gov网站使用了Packer. Dean Edward的Packer是一个用于压缩JavaScript文件的工具。JavaScript脚本将在被下载时自动解压缩,这是一项很差的优化手段, 因为往往JavaScript经过GZIP压缩之后,比经过YUI压缩器(YUI Compressor)压缩之后更小。[参见 jquery-plugins.js]

eval(function(p,a,c,k,e,d)...

使用Packer的决定不像是一个深入了解GZIP或者文本压缩技术的人做出的。压缩之前的文件确实变小了,然而这导致了最终需要被下载的文件变大了。[http://dean.edwards.name/packer/]

whitehouse.gov大小821 KB, 在我的线路上(cable modem)使用了1.58秒完成加载。这个数字大约是新的、基于图片的网站的平均值。

加载时间:  1.58 seconds
总计大小:  821 KB

whitehouse.gov网站包含了几个隐藏链接. 在源文件里,大部分是在JavaScript中,大约嵌入了6个链接。这样,这些幸运的人就得到了来自白宫网站的外链(译者注:PageRank 9啊!9!)。

www.youngpup.net

http://sorgalla.com/jcarousel/

http://billwscott.com/carousel/

http://www.codylindley.com

whitehouse.gov网站使用了一个不透明的favicon.ico. 为了站点在加入书签后具有更好的视觉效果(译者注:对很多非IE浏览器而言,无论是否加入书签,favicon文件都会显示在标签栏),一个具有透明背景的favicon是更好的选择。这项改变对于一个知道怎么修改的人来说可以在10分钟内完成。

结论是,whitehouse.gov网站还是很吸引人的。虽然它并不算是一个非常有效率的站点,并且过多地注意了视觉效果。一个网站优化专家可以在几天之内将它的加载速度提升到现在的两倍。

最后,记住本届政府和奥巴马总统并不是写这些代码的人。

翻译自:http://dotnetperls.com/Content/whitehouse-gov-Site.aspx

WordPress支持了中文Slug…Finally

2 Comments

WordPress最近带来了一系列升级。首先是大版本2.7的发布,出现了WordPress官方中文版,然后重要插件NextGEN Gallery也推出了1.0.0版本

[singlepic=18223]

我现在的WordPress版本是WordPress 2.8-bleeding-10187,今天当我百忙之中抽空批判程序员的时候,赫然发现WordPress支持了中文slug…

[singlepic=18224]

这是在Google中的效果
我泪飚啊…

影响WordPress速度的罪魁祸首

1 Comment

几天前在煎蛋(很意外)看到一篇文章:赶紧了,抛弃All in One SEO,因为当时也在Google阅读器,没时间仔细看,加了星标就略了过去。后来得空看了一下,里面提到All in One SEO这个WordPress插件的诸多不好,于是我试了一下…
果然All in One SEO消耗了好多资源,现在去掉All in One SEO之后的WordPress速度如飞,感觉相当好。
在此我建议,所有中文WordPress站都应该立刻禁用这个插件,因为All in One SEO给我们带来的不是SEO,而是痛苦。
如何避免禁用之后的题目变化而被搜索引擎惩罚的问题,请参阅煎蛋原文

WordPress 2.7 almost beta 9300

1 Comment

[singlepic=18134,620,492]

WordPress 2.7 almost beta 9300版本的后台,怎么说呢,只能用“性感”来形容…
WordPress真是太上进了,每天又有精进。

不知不觉

1 Comment

几月了?不知道。
几号了?不知道。
是不是该回家了?…不知道。

下面我要说些你们都看不懂的话。

你以为我没想过吗?你以为我就不会看吗?你以为我就不喜欢吗?
想这些事情总会觉得很罪恶,但是我好像不是个太冲动的人,呵呵,没人信吧。其实我不是。
我想出国了,想离开这一切。
我的生命该怎么去刻画呢?也许对于双鱼,爱并不是全部,看看下面的列表啊!在没有爱的日子里,我是不是也可以不想呢?
你以为我喜欢灰色?
对不起,都是我不好,说过不怪你,都是我的错。只是,看过他的字,再看过你对他的话,让我无法不怪你,不然我怎么承受得住这份责任!

今天没喝酒,发泄完毕。
这几日很充实,算是什么呢?Renew一下CSS和HTML的知识,接了个活做了下,法政学院的一个老师的网站。

用Firefox、IE8、Opera、Chrome、Safari的各位就不要点开旧版了,惨不忍睹。
新版基本上是个WordPress模板,后台都是用的WordPress这一套。我想证明,如果仔细使用,WordPress真的是无所不能。接下来几天我会写几篇文章,关于怎么把WordPress做成规模较大的网站。
发点牢骚,旧版好像找了个本科生,花了2500,他用ASP+Access做了一个出来…寒
前台好像经过美工指点还想样子,后台…怎么形容呢,table的border都不去掉啊…雷
三天时间,我写了几千行HTML+CSS吧,都是一个一个字在UltraEdit和Visual Studio里面敲出来的,期间有人问我,你在写CSS吗?答曰,是。问,你就用写字板一个一个字的写?我都没见过呢…
…我空虚,我有时间。
牢骚毕。

接下来的计划:

  • 我还不知道小论文和毕业论文写什么呢。这期间我写了三个实验性的东西,看能不能转换成论文。一个分布式文件系统,一个C#的网络爬虫,一个C#写的DOM解析器。都很无聊,没什么闪光点。
  • 我想做Microsoft MVP。
  • 我打算把Windows Server 2003和Windows Server 2008好好研究一下,看能不能找到什么灵感。

——别给我说加油。