Web Frontend Develope, Design, Music, Life——Stay Hungry, Stay Foolish~

YUI3:更快,更轻量,更容易用

引用Sitepoint的标题,YUI3刚发布了beta版,YUI3有哪些新的东西呢?

1.全局对象由YAHOO替换成YUI,YUI.user(’node’, function(Y){Y.get(’#demo’).addClass(’test’);});//YUI不只是一个对象而且现在是一个函数,通过use之后会返回一个node类的实例,这个实例作为参数Y传给回调函数

2.选择和链式,Y.get('.author').setStyle('cursor', 'move');//得到class为author的第一个元素并且设置鼠标样式为'move'

3.节点和事件直接操作,Y.get("#navProducts").addClass("selected");navProducts.on("click", YUI3callback(e) {
e.preventDefault();
});相对于YUI2来说更加面向对象了

4.模块化,比如Drag&Drop这边模块被分成了很多个小的模块,如果你只想让某个元素可拖动,只包含dd-drag这个模块就行了

5.选择器,直接通过CSS选择器就可以选择元素

6.自定义事件,支持冒泡、取消默认行为等,为DOM和API事件提供了通用的接口

YUI 3.x Architecture

http://yuiblog.com/assets/pdf/yui3architecture.pdf

YUI BASE

yui-base-full

2009/06/18CSS

0 Comments

用CSS3让你的网站达到更高水平

css被引入已经有13年之久,而广泛被采用的css2也已经存在了11年了。而我们还在用一些css hack以及javascript的技术来装饰网站。为什么我们不尝试在现代浏览器中去使用拥有丰富特点的css3呢?下面就来介绍一下css3的一些特性吧。

使用浏览器指定属性
因为有一些属性可能并不是w3c推荐的,所以采用浏览器指定的属性可以同标准的属性区分开来,从而在特定的浏览器取得特定的效果。最常用的扩展有:基于Webkit浏览器(例如Safari)以-webkit-开头,基于Gecko浏览器(例如Firefox)以-moz-开头,Konqueror(-khtml-), Opera(-o-)以及IE(-ms-)。

1.Selectors—选择器
属性选择器—三种新的属性选择器

[att^="value"]
匹配att属性以value开头的元素
[att$="value"]
匹配att属性以value结尾的元素
[att*="value"]
匹配att属性中含有value的元素
浏览器支持:ie6除外
混合选择器
exp:
div~img { border: 1px solid #ccc; }
选择div相邻的img元素,然后给img设置灰边
浏览器支持:ie6除外

继续阅读 »

Konami Code实现方法

Konami Code 出现在很多游戏当中,也出现在像Facebook和Greader的彩蛋当中,键盘顺序是:上 上 下 下  左 右 左 右 B A

法一:

var $ = {
enabled: false,
tmp: Array(),
_konamiCode: Array(65,66,39,37,39,37,40,40,38,38),
init: function() {
this.tmp = Array(65,66,39,37,39,37,40,40,38,38);
},
konamiCode: function(e) {
if(!this.enabled) {
var t = this.tmp.pop();
if((e.keyCode-t) == 0) {
if(this.tmp.length == 0) {
this.enabled = true;
}
} else {
this.init();
}
} else {
this.action();
}
},
// Change the action() function to whatever you want to
action: function() {
//alert(”Konami Code Activated”);
}
}

$.init();

document.onkeydown = $.konamiCode;

法二:

// Tweetable Konami code
var k=[];
document.onkeydown = function(e){
k.push(e.keyCode);
if(k.toString().indexOf(”38,38,40,40,37,39,37,39,66,65″)>=0) {
//alert(”Konami Code Activated”);
}
}

法三:

function onKonamiCode(fn) {
var codes = (function(){
var c = [38,38,40,40,37,39,37,39,66,65];
onKonamiCode.requireEnterKey && c.push(13);
return c;
})(),
expecting = function(){
expecting.codes = expecting.codes || Array.apply({}, codes);
expecting.reset = function() { expecting.codes = null; };
return expecting.codes;
},
handler = function(e) {
if (expecting()[0] == (e||window.event).keyCode) {
expecting().shift();
if (!expecting().length) {
expecting.reset();
fn();
}
} else { expecting.reset(); }
};
window.addEventListener ?
window.addEventListener(’keydown’, handler, false)
: document.attachEvent(’onkeydown’, handler);
}

onKonamiCode(function(){alert(”Konami Code Activated”);});

个人觉得第三种方法比较赞~

返回顶部