不常更新博客是可耻的,我常这样想。趁晚饭还没有准备完成的时候,写一下前些天注意到google的一个css sprites,页面是在google的搜索结果页面,例如在google搜索zend studio,就在这个页面,初看左上角的logo并无任何特别,当我准备将其另存为,我发现,这整张图片是这样的:

google logo

因为在背景中我是常用到或者看到css sprites,而这张图片是“前景”,看了下代码,还是很巧妙的。原理是这样的:父元素相对定位,定义宽和高,然后overflow:hidden,img用绝对定位,然后top和left来控制位置,就让多余的部分hidden了。

看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<style type="text/css">
			body{background:#ccc}
			h1{padding:0;margin:0;font-size:small;}
			a#logo{position:relative;margin:14px 0 7px;width:150px;height:52px;overflow:hidden;display:block;}
			a#logo img{position:absolute;top:-26px;left:0;border:0;}
		</style>
	</head>
	<body>
		<h1>
			<a id="logo" title="google 主页" href="http://www.google.cn/webhp?hl=zh-cn">google<img alt="" src="http://www.google.cn/images/nav_logo4.png" width=168 height=119></a>
		</h1>
		<img alt="" src="http://www.google.cn/images/nav_logo4.png" width=168 height=119>
	</body>
</html>

就是这样的“前景” css sprites,而背景的应用似乎更为简单,就是background-position了,吃饭!

这是一个完整的jquery插件,实际上是基于jquery的suggest插件修改的。

具体的功能如下:

  1. 点击输入框,自动列出热门出行城市;
  2. 支持中文/拼音/3字码 输入的智能提示;
  3. 支持键盘方向键选择、回车键确定;
  4. 支持选择后自定义callback函数;
  5. 支持IE6、IE7、IE8、Firefox

呃,实际上上面的很多都是原suggest插件中自有的,我只是去掉了其ajax获取数据的功能,因为这延迟稍微有些烦人。

看demo:仿芒果网机票预定智能输入提示demo

仿芒果网机票预定智能输入提示demo完整包下载

PS:3字码是航空系统中很常见的为每个城市定义的不重复的特殊3位字符串,比如pek代表北京,sha代表上海等等。

AJAX还是比较强大的!(显然,这是一句废话),最近在研究一个网站的AJAX应用中发现其中的“拓展视野”部分频频被挖掘出来(也由此可见,平时本人的视野有多么的狭窄了),首先是全站的JS全部使用packed进行了压缩,呃!也不知道这种称法是否正确,就是用eval(function(p,a,c,k,e,d){})的那种世界各地都很流行的压缩方法吧,在实际的观察中,一个压缩后仅为6K,在我将其转化为“肉眼能看清楚的代码”之后,足足有20K,可见其效果还是相当明显的;此外,用HttpWatch弄到了传输数据后,居然是加密的。。。形如下面这段:
q1YqT81MzyhRsqpWys3MU7Iy0FHKTaxQsjLWUUrLL8pNBMooqeoZpSnV6igVFGUmp2KoVDIzMrIwNdAzMFBC1pOiVFsLAA==

任何一个有些许密码学经验的同志都容易很看出来,这是base64编码(我实在不喜欢称这个为“加密”),没错,和各位看官一样,我很快就用php自带的base64_decode函数对其进行了解密,如果您觉得问题到此为止,那就错了!这时我才稍稍感到了有些震撼,解密出来的数据

呃!一堆乱码,其实应该是二进制数据,加密了(后来知道是压缩了),可是用户是看不懂这些的,客户端是肯定要进行解密的!用什么? 全文阅读 »