对于大名鼎鼎的 ZenCoding 来说,做前端的同学没有没听过,没用过的,如果你没用过的话,那么你就太 Out 了,不过以后如果没有用过的话,那也不算什么。
以为 ZenCoding 宣布停止更新了。
话说 ZenCoding 确实挺好用的,自从换了 SubLime Text 2 之后,加上这个 ZenCoding 写前端代码如飞一般的流畅,但是今天像往常一样打开 S 之后,却多出了一个关于 Package 的标签页,说的就是 ZenCoding 停止更新的事情。
不过不用担心,在 ZenCoding 停止更新之后,还有另一个项目上线了,貌似其实只是 ZenCoding 改了个名字的项目,那就是 Emmet。
在这个标签页中,ZenCoding 说了不但换了名字,而且功能有了一定的增强。反正就是比之前的强大了不少。
对于 Sublime Text 2 来说,直接在安装包管理器中安装就可以了。不过要先卸载掉 ZenCoding。
1. Ctrl + Shift + P
2. Remove Package
3. ZenCoding
4. 重复 1
5. Install Package
6. Emmet
回车,就会自动安装好的。使用方式我还没有试过呢,应该和 ZenCoding 一样一样的。
对了,新项目主页:http://docs.emmet.io
貌似我也应该弄一个这个个性的域名?!
从今天开始,当打开 Gmail 的时候,所有的图片都无法显示,虽然不影响正常使用,但总是别扭的不行不行的。打开 Chrome 的开发者工具一看,原来是 ssl.gstatic.com 被某个十分十分恶心人的东西给挡住了,所以 Google 存放静态资源文件的服务器访问不了了,图片啊,什么的也就访问不聊了。
不过,这件事对国内人来说,在正常不过了,只要修改可用的 hosts 即可,具体修改方法为:
1,打开 C:\Windows\System32\drivers\etc 下用记事本打开hosts文档。
2,在hosts文档中寻找 ssl.gstatic.com 记录,并将IP地址修改为74.125.31.120。
3,如何hosts文档中没有ssl.gstatic.com记录,请直接添加这条记录。
74.125.31.120 ssl.gstatic.com
当然了,这个也是可以的,不过两个添加一个就好了。
203.208.46.29 ssl.gstatic.com
4,保存并退出 hosts 文档。重新打开 Gmail 即可。(windows 7 等系统有权限要求,修改后不能保存,可以先保存到桌面,然后拖入这个文件件,询问的时候,一律“是”,就可以了)
http://storage.live.com/items/AE6F1995B896B65F!810?a.mp3
歌词:
Hey Jude
Hey Jude, don’t make it bad.
Take a sad song and make it better.
Remember to let her into your heart,
Then you can start to make it better
Hey Jude, don’t be afraid.
You were made to go out and get her.
The minute you let her under your skin,
Then you begin to make it better.
And anytime you feel the pain, hey Jude, refrain,
Don’t carry the world upon your shoulders.
For well you know that it’s a fool who plays it cool
By making his world a little colder
nananananananananana~
Hey Jude, don’t let me down.
You have found her, now go and get her.
Remember to let her into your heart,
Then you begin to make it better.
So let it out and let it in, hey Jude, begin,
You’re waiting for someone to perform with.
And don’t you know that it’s just you, hey Jude, you’ll do,
The movement you need is on your shoulder
Hey Jude, don’t make it bad.
Take a sad song and make it better.
Remember to let her under your skin,
Then you’ll begin to make it
Better better better better better better oh~
nananananananananananana, hey Jude…
比onload更快获取图片尺寸
lightbox类效果为了让图片居中显示而使用预加载,需要等待完全加载完毕才能显示,体验不佳(如filick相册的全屏效果)。javascript无法获取img文件头数据,真的是这样吗?本文通过一个巧妙的方法让javascript获取它。
这是大部分人使用预加载获取图片大小的例子:
var imgLoad = function (url, callback) {
var img = new Image();
img.src = url;
if (img.complete) {
callback(img.width, img.height);
} else {
img.onload = function () {
callback(img.width, img.height);
img.onload = null;
};
};
};
可以看到上面必须等待图片加载完毕才能获取尺寸,其速度不敢恭维,我们需要改进。
web应用程序区别于桌面应用程序,响应速度才是最好的用户体验。如果想要速度与优雅兼得,那就必须提前获得图片尺寸,如何在图片没有加载完毕就能获取图片尺寸?
十多年的上网经验告诉我:浏览器在加载图片的时候你会看到图片会先占用一块地然后才慢慢加载完毕,并且不需要预设width与height属性,因为浏览器能够获取图片的头部数据。基于此,只需要使用javascript定时侦测图片的尺寸状态便可得知图片尺寸就绪的状态。
当然实际中会有一些兼容陷阱,如width与height检测各个浏览器的不一致,还有webkit new Image()建立的图片会受以处在加载进程中同url图片影响,经过反复测试后的最佳处理方式:
// 更新:
// 05.27: 1、保证回调执行顺序:error > ready > load;2、回调函数this指向img本身
// 04-02: 1、增加图片完全加载后的回调 2、提高性能
/**
* 图片头数据加载就绪事件 - 更快获取图片尺寸
* @version 2011.05.27
* @author TangBin
* @see http://www.planeart.cn/?p=1121
* @param {String} 图片路径
* @param {Function} 尺寸就绪
* @param {Function} 加载完毕 (可选)
* @param {Function} 加载错误 (可选)
* @example imgReady('http://www.google.com.hk/intl/zh-CN/images/logo_cn.png', function () {
alert('size ready: width=' + this.width + '; height=' + this.height);
});
*/
var imgReady = (function () {
var list = [], intervalId = null,
// 用来执行队列
tick = function () {
var i = 0;
for (; i < list.length; i++) {
list[i].end ? list.splice(i--, 1) : list[i]();
};
!list.length && stop();
},
// 停止所有定时器队列
stop = function () {
clearInterval(intervalId);
intervalId = null;
};
return function (url, ready, load, error) {
var onready, width, height, newWidth, newHeight,
img = new Image();
img.src = url;
// 如果图片被缓存,则直接返回缓存数据
if (img.complete) {
ready.call(img);
load && load.call(img);
return;
};
width = img.width;
height = img.height;
// 加载错误后的事件
img.onerror = function () {
error && error.call(img);
onready.end = true;
img = img.onload = img.onerror = null;
};
// 图片尺寸就绪
onready = function () {
newWidth = img.width;
newHeight = img.height;
if (newWidth !== width || newHeight !== height ||
// 如果图片已经在其他地方加载可使用面积检测
newWidth * newHeight > 1024
) {
ready.call(img);
onready.end = true;
};
};
onready();
// 完全加载完毕的事件
img.onload = function () {
// onload在定时器时间差范围内可能比onready快
// 这里进行检查并保证onready优先执行
!onready.end && onready();
load && load.call(img);
// IE gif动画会循环执行onload,置空onload即可
img = img.onload = img.onerror = null;
};
// 加入队列中定期执行
if (!onready.end) {
list.push(onready);
// 无论何时只允许出现一个定时器,减少浏览器性能损耗
if (intervalId === null) intervalId = setInterval(tick, 40);
};
};
})();
调用例子:
imgReady('http://www.google.com.hk/intl/zh-CN/images/logo_cn.png', function () {
alert('size ready: width=' + this.width + '; height=' + this.height);
});
是不是很简单?这样的方式获取摄影级别照片尺寸的速度往往是onload方式的几十多倍,而对于web普通(800×600内)浏览级别的图片能达到秒杀效果。看了这个再回忆一下你见过的web相册,是否绝大部分都可以重构一下呢?好了,请观赏令人愉悦的 DEMO :
http://www.planeart.cn/demo/imgReady/
(通过测试的浏览器:Chrome、Firefox、Safari、Opera、IE6、IE7、IE8)
转载自:planeArt