Archive for 一月, 2010
为了庆祝jQuery的四周岁生日, jQuery的团队荣幸的发布了jQuery Javascript库的最新主要版本! 这个版本包含了大量的编程,测试,和记录文档的工作,我们为此感到很骄傲。
我要以个人的名义感谢 Brandon Aaron, Ben Alman, Louis-Rémi Babe, Ariel Flesler, Paul Irish, Robert Kati?, Yehuda Katz, Dave Methvin, Justin Meyer, Karl Swedberg, and Aaron Quint。谢谢他们在修复BUG和完成这次发布上所做的工作。
下载(Downloading)
按照惯例,我们提供了两份jQuery的拷贝,一份是最小化的(我们现在采用Google Closure作为默认的压缩工具了),一份是未压缩的(供纠错或阅读)。
另外,Google也在他们的服务器上放置了一份jQuery的拷贝。这份拷贝会自动的最小化然后压缩 – 并且放在Google最快的缓存服务器上。
你可以在你的站点上直接引用上面的URL,这样就可以享受迅速加载jQuery的性能优势了。
就jQuery1.4来说,我们努力的减少大规模升级中的麻烦 – 通过保持所有public函数的签名。即使如此,还请通读可能会造成问题的变更列表,这样能够了解哪些变更可能会给你的应用造成问题。
(功能) Features
下面的内容概括了jQuery1.4里加入的变更和功能。另外所有的变更都已经在jQuery 1.4 的文档里记录了。
热门方法经过了性能上的大”检修”
不少比较热门的和常用的jQuery方法在1.4里被重写了。(译注:重写了方法的内部,外部调用没有大幅度改变) 我们分析源码的时候发现我们能够获得大幅的性能提升,通过把jQuery和自己比较: 查看内部函数被调用了多少次,然后努力降低源码的复杂度(译注:计算机算法中的Complexity)
在1.4版里我们显著的降低了大部分热门jQuery方法的的复杂度。
更易用的设置函数 (Easy Setter Functions)
算来已经有一阵了,你们已经可以给.attr()传递一个函数,然后这个函数的结果会被用来赋给相应的HTML属性(attribute)上。这个功能现在被移植到所有的设置函数了: .css(), .attr(), .val(), .html(), .text(), .append(), .prepend(), .before(), .after(), .replaceWith(), .wrap(), .wrapInner(), .offset(), .addClass(), .removeClass(), 以及 .toggleClass().
另外, 对于下面几个方法,当前的值会被作为第2个变量传递给这个函数。.css(), .attr(), .val(), .html(), .text(), .append(), .prepend(), .offset(), .addClass(), .removeClass(), 以及 .toggleClass().
这样代码就可以这样写:
// 找出所有A标签里的'&'字符,然后用一个span标签包围
$('a').html(function(i,html){
return html.replace(/&/gi,'&');
});
// 给一些链接的title属性加些信息
$('a[target]').attr("title", function(i,title){
return title + " (新窗口打开)";
});
Ajax
嵌套参数的序列化 (jQuery.param() 文档, Commit 1, Commit 2)
jQuery 1.4在jQuery.param方法里加入了嵌入参数序列化的支持,借用了PHP编程里兴起的,而后又被Ruby on Rails推广开来的方式。
举例来说,
{foo: ["bar", "baz"]} 会被序列化为 “foo[]=bar&foo[]=baz”.
在jQuery 1.3版里, {foo: ["bar", "baz"]} 曾被序列化为 “foo=bar&foo=baz”. 但是,这样做没用办法将只含有一个元素的阵列编码。如果你需要旧的序列化方式,你可以设置传统Ajax设置来进行切换。(使用jQuery.ajaxSettings.traditional进行全局切换,或者根据情况单独切换。
总共有3种方式可以切换到旧的序列化方式:
// 全局改变序列化方式 (使用旧的)
jQuery.ajaxSettings.traditional = true;
// 指定情况使用旧的序列化方式
jQuery.param( stuff, true );
// 针对一个单独的Ajax请求使用旧的序列化方式
$.ajax({ data: stuff, traditional: true });
更多信息参见: jQuery.param() 文档, jQuery.ajax() 文档, Commit, Code
JSON和脚本类型通过”content-type”自动识别。 (jQuery.ajax 文档, Commit 1, Commit 2)
如果一个Ajax请求的回复的媒体类型是JSON(application/json), dataType默认设为”json”(如果dataType没有被指明)。另外,如果回复的媒体类型是 Javascript(application/javascript), dataType默认设为”script”(同样,如果dataType没有明确指明), 这种情况下,脚本会自动运行。
加入了Etag的支持 (jQuery.ajax() 文档, Commit)
默认设置下, jQuery会忽略Ajax请求的”Last-Modified”页头。这样做是为了忽略浏览器的缓存。设置ifModified:true就可以使 jQuery使用可用的缓存。jQuery1.4还会发出”If-None-Match”的页头如果你设置了ifModified选项。
严格JSON模式,本地的JSON.parse方法 (jQuery.ajax() 文档, Commit 1, Commit 2, Commit 3)
jQuery 1.3和以前的版本曾使用Javascript的eval对引入的JSON解析。1.4版则会使用本地的JSON解析器,前提是如果有本地的解析器可用。它也会对引入的JSON进行校验。所以在jQuery.getJSON方法里,或当一个Ajax请求的dataType是”json”的时候,jQuery会拒绝不合标准的JSON(例如{foo: "bar"})。
序列化HTML5的元素 (jQuery.param() 文档, Commit)
新的HTML5输入方法 (比如’datetime’和’range’)在序列化.serialize()一个表单的时候会被包括在内。
Ajax请求的环境 (jQuery.ajax() 文档, Commit)
你可以附加一个”环境”到Ajax请求上,所有的回调函数里都会拥有同样的”环境”设置(这样可以简化你的代码,尽可能避免使用闭合,或是其他对象)。
jQuery.ajax({
url: "test.html",
context: document.body,
success: function(){
jQuery(this).addClass("done");
}
});
请求成功回调函数的第三个参数会被设为原始的XHR对象 (jQuery.ajax() 文档, Commit)
所有的Ajax请求的成功回调函数现在都会收到原始的XMLHttpRequest对象,作为第三个参数。之前这个XHR对象只能通过$.ajax一类方法的返回值来获取。
明确设置”Content-Type” (jQuery.ajax() 文档, Commit)
在1.3版,如果没有实际数据发送,jQuery.ajax的contentType会被忽略。1.4版里,contentType将总是和请求一同发送。这修复了某些后台凭靠”Content-Type”页头判断回复类别所造成的问题。
明确设置JSONP回调函数的名字 (jQuery.ajax 文档, Commit)
你可以使用jQuery.ajax()方法的jsonpCallback选项,通过名字来指定JSONP的回调函数。
防止启动前跨域XHR (Commit)
跨域Ajax(针对提供支持的浏览器)将更易用,因为默认设置下,启动前XHR被阻止了。(TODO)
jQuery.ajax()现在使用”onreadystatechange”事件替换了计时器 (Commit)
使用”onreadystatechange”替换了轮流探询,Ajax请求现在将使用更少的资源
元素属性 (Attributes)
.css()和.attr() 的性能被优化了。
.attr()方法多了一个设置函数作为参数 (.attr() 文档)
你不但可以将一个函数用在.attr()里,还可以在这个函数里使用属性的当前值。
jQuery('<img src="enter.png" alt="enter your name" />')
.attr("alt", function(index, value) {
return "Please, " + value;
});
.val( Function ) (.val() 文档)
<input type='text' data-index="0" /> <input type='text' data-index="1" />
jQuery("input:text.food").hide();
jQuery("<ul class='sortable'><li>Peanut Butter</li><li>Jelly</li></ul>"
)
.sortable()
.bind("endsort", function() {
$(":text.food").val(function() {
return $("ul.sortable li:eq(" + $(this).attr("data-index") + ")").text();
});
});
text和CDATAHTML元素也支持.text()方法了 (.text() 文档, Commit)
核心 (Core)
快捷元素创建 (jQuery() 文档, Commit)
现在当你需要使用jQuery函数创建一个元素的时候,你可以同时附递一个对象来指定属性值和事件:
jQuery("
", {
id: "foo",
css: {
height: "50px",
width: "50px",
color: "blue",
backgroundColor: "#ccc"
},
click: function() {
$(this).css("backgroundColor", "red");
}
}).appendTo("body");
对象里的键值的名字与相关的jQuery的方法的名字是对应的,对象的值会被作为参数传递给jQuery的方法。
(译注:譬如$("<a>link</a>", {css:{background:"#ccc"}});相当于$("<a>link</a>")).css("background", "#ccc");
.eq(-N), .get(-N) (负指数) (.eq() 文档, .get() 文档, Commit)
你现在可以在.get()和.eq()方法里使用负数。譬如,你要选择倒数第2个div元素,或者是倒数第2个DOM对象:
$("div").eq(-2);
$("div").get(-2);
新的.first()和.last()方法 (.first() 文档, .last() 文档, Commit)
方便起见, 新增的.first()和.last()方法等同于.eq(0)和.eq(-1).
新的.toArray()方法 (.toArray() 文档, Commit)
.get()方法自始就是从jQuery集合里返回一个阵列。为了能够更明确, 你可以用.toArray()来达到一样的效果。(译注:这里应该是为了以后的版本留出空间,譬如以后可能会加入.toList()方法,到时候就会易于区分。) 不过,和.get()不一样的是,.toArray()不接受参数。
jQuery()返回一个空集 (jQuery() 文档, Commit)
在jQuery 1.3中,jQuery()方法返回仅包括document的jQuery集合。这个可以用来创建一个空集,然后动态加入一些元素。注: jQuery().ready()方式在1.4中依然有效,但是被指示陈旧了。请使用jQuery(document).ready()或者jQuery(function(){})。
jQuery(“TAG”) (Element Selector 文档, Commit)
当使用单个标签名字的时候jQuery会使用更快捷的路径。
jQuery(“<div>”), jQuery(“<div/>”) 和 jQuery(“<div></div>”) (jQuery() 文档, Commit)
现在这三个方法都使用同一个代码路径了(document.createElement), 来优化jQuery("<div></div>")的性能。注意,如果你指定了属性,将会使用浏览器本身的语法分析(通过设置innerHTML)。
样式 (CSS)
.css()方法在性能是以前的2倍。
.addClass(), .removeClass(), 和 .hasClass()这几个方法在性能上是以前的3倍
.toggleClass()可以切换多个css类了 (.toggleClass() 文档, Commit)
你可以通过.toggleClass()调用多个css类的名字来切换他们。
$("div").toggleClass("current active");
数据
.data()返回对象, .data(Object)设置对象 (.data() 文档, Commit 1, Commit 2)
有时候你可能需要在一个元素上附加一个复杂的对象。一个常见的例子是你需要从一个元素身上复制所有的数据到令一个元素上。在jQuery 1.4里, 不使用任何参数调用.data()时,.data会返回一个复杂对象。(译注: 包含所有键-值对的对象。) 调用.data(Object) 则会设置这个对象。注意这个对象还包括了元素上绑定的事件,所以用的时候要小心。
除非需要, 不然不会创建数据缓存。 (Commit 1, Commit 2, Commit 3)
jQuery使用一个独特的自定义属性来获取特定元素上附加的数据。当查找数据,但是没有新加的数据的时候,jQuery会尽量避免创建这个自定义属性。这样可能会提高性能,同时还会在这种情况下避免污染DOM。
效果 (Effects)
单个属性缓进缓出 (Per-property Easing 文档, Commit)
除了能够给一个动态效果指定缓进出函数外,你现在可以指定每个属性的缓进出函数了。James Padolsey的blog上有更进一步的信息和演示。
$("#clickme").click(function() {
$("div").animate({
width: ["+=200px", "swing"],
height: ["+=50px", "linear"],
}, 2000, function() {
$(this).after("<div>Animation complete.</div>");
});
});
事件 (Events)
新方法: jQuery.proxy() (jQuery.proxy() Documenation, Commit 1, Commit 2)
如果你需要保证一个函数内的”this”恒定地保持某个值, 你可以用jQuery.proxy获得一个相同作用域的函数。
var obj = {
name: "John",
test: function() {
alert( this.name );
$("#test").unbind("click", obj.test);
}
};
$("#test").click( jQuery.proxy( obj, "test" ) );
多个事件绑定 (.bind() 文档)
你可以通过递入一个对象来一次性绑定元素的多个事件。
$("div.test").bind({
click: function(){
$(this).addClass("active");
},
mouseenter: function(){
$(this).addClass("inside");
},
mouseleave: function(){
$(this).removeClass("inside");
}
});
‘change’和’submit’事件规范化 (Change 文档, Submit 文档)
普通的或是即时的change和submit事件可以在各种浏览器上稳定工作了。我们覆盖了IE里的change和submit, 替换为与其他浏览器相同的事件。
新的事件: ‘focusin’ and ‘focusout’ (.focusin() 文档, .focusout() 文档, Commit)
focusin和focusout在一般情况下等同于focus和blur, 但是多了向父元素传递的作用。如果你自己编写你的事件代理模式(TODO), 这个功能将对你有很大帮助。请注意对focus和blur使用live()方法将不会起作用; 在设计的时候我们根据 DOM事件规范决定不使其向父元素传递事件。
$("form").focusout(function(event) {
var tgt = event.target;
if (tgt.nodeName == "INPUT" && !tgt.value) {
$(tgt).after("nothing here");
}
});
所有的事件都可以成为即时事件 (.live() 文档)
除了ready, focus (用focusin), 和 blur (用focusout)以外, 所有能用.bind()绑定的事件都可以成为即时事件。
在live()所支持的事件里,我们对能够支持下面这几个额外的事件感到尤其骄傲。通过.live()里的事件代理, 1.4版实现了对change, submit, focusin, focusout, mouseenter, 以及mouseleave事件的跨浏览器支持。
注: 如果你需要即时的focus事件,你应该用focusin和focusout, 而不要用focus和blur, 因为就像前面提到的, focus和blur不向上传递。
还有, live()也接受数据对象作为参数了, 同bind()方法一样 (Commit)
live/die也支持环境变量了 (Commit)
现在可以在绑定事件的时候给选择符指定一个环境。如果环境被指定了, 只有属于这个环境下的元素才会被绑定事件。在创建即时事件的时候, 元素本身不需要已经被定义, 但是环境必须被创建。
确定ready事件至少含有body元素 (Commit)
jQuery现在会检查body是不是存在,如果不存在,会对body进行轮流探询。
在不需要手动处理内存溢出的非IE浏览器中, 卸载的速度提高了。 (Commit)
DOM操作 (Manipulation)
在jQuery 1.4里一系列的DOM操作方法的性能都有巨大的提升。
.append(), .prepend(), .before(), and .after()的性能提高了。
.html()的性能提高到以前的3倍。
.remove()和.empty()的速度则达到以前的4倍.
新方法: .detach() (.detach() 文档, Commit)
detach()将一个元素从DOM里移除, 但是并不卸载关联的事件处理函数。这个方法可用于暂时性的将一个元素移除,执行相关操作,然后返回。
var foo = $("#foo").click(function() {
// 相关操作
});
foo.detach();
// foo保留了相关处理函数
foo.appendTo("body");
新的unwrap()方法 (documentation, commit)
unwrap()方法拿到一个已知的父元素的子元素,然后将父元素用子元素替换。(译注: 将子元素从”包裹”里拿出来, 因名unwrap)。如此这般:
<body> <div> <p>annie</p> <p>davey</p> <p>stevie</p> </div> </body>
$('div').unwrap();
<body> <p>annie</p> <p>davey</p> <p>stevie</p> </body>
domManip方法里的缓存 (commit)
jQuery会将jQuery("<div>")和.after("<div>")一类方法创建的节点记入缓存。这样, 对于利用这些方法, 使用字符串进行DOM操作的页面,性能将有极大的提高。
无连接的节点间的before, after, replaceWith操作 (commit)
现在你可以对还没有放置到DOM Tree上的节点进行before, after, 和replaceWith的操作了。意味着你可以先对节点进行复杂的操作, 待完成后再放到合适的DOM位置上。这样也能尽量避免操作过程中造成重新排版。
jQuery("<div>").before("<p>Hello</p>").appendTo("body")
.clone(true) 也会复制关联数据 (clone 文档, commit)
1.3版中, .clone(true)虽然也是深度复制, 但是没有复制关联的数据。1.4版里,它则会复制数据, 同时还包括所有的事件。这点上和jQuery.extend在语义想同的, 所以普通对象和阵列会被复制, 但是自定义的对象则不会。
位移 (Offset)
.offset( coords | Function ) (.offset() 文档, commit)
现在可以设置元素的位移了! 和所有的设置函数一样, offset也可以接受一个函数作为第二个参数。
队列 (Queueing)
队列经历了一次大修, 使用队列会比使用默认的fx更易掌握。
新的 .delay() 方法 (.delay() 文档, commit)
.delay()方法会根据参数滞后若干毫秒执行队列里剩下的对象。默认的它会使用”fx”队列。但你可以选择性的通过delay方法的第二个参数选择其他队列。(译注:每个队列都以一个名字识别。)
$("div").fadeIn().delay(4000).fadeOut();
队列里的next (.queue() 文档, commit)
jQuery 1.4版里, 当队列里的一个函数被调用的时候,第一个参数会被设为另一个函数。当后者被调用的时候, 会自动排除队列里的下一个对象, 以此来推动队列到下一步。
jQuery("div").queue("ajax", function(next) {
var self = this;
jQuery.getJSON("/update", function(json) {
$(self).html(json.text);
next();
};
}).queue("ajax", function() {
$(this).fadeIn();
});
.clearQueue() (clearQueue 文档, commit)
队列可以被清空了。这个方法会移除队列里所有未执行的函数, 但不会移除正在运行的函数。无参数的情况下调用.clearQueue()方法将会清空默认的”fx”队列。
选择符 (Selectors)
“#id p”效率更高 (commit)
所有以ID开头的选择符都得到了优化, 能够在瞬间得到返回值。所有以ID为开头的选择符速度将一直快于其他选择符。
页面遍访 (Traversing)
.index(), .index(String) (index 文档, commit)
.index() 方法经过重写, 变得更加直观和灵活。
你可以获得一个元素相对于同父元素的指数:
// 计算第一个 <li> 元素在它所有的同父元素中的指数:
$("li.current").index()
你也可以获得一个元素在一个jQuery元素集合中的指数, 这个集合可以用一个选择符或者是一个DOM元素来指定:
// 计算这个 <h3 id="more-info"> 元素在页面上所有 <h3> 元素里的指数:
$("#more-info").index("h3")
这个方法相当于选择符里的:has()过滤法。它拿到一个jQuery集合,返回含有指定选择符的元素。
新的 .nextUntil(), .prevUntil(), .parentsUntil() 方法 (.nextUntil() 文档, .prevUntil() 文档, .parentsUntil() 文档, commit)
新的”until”方法类似于.nextAll(), .prevAll(), 和.parents()。区别是可以用一个选择符来停止元素探索。
.add(String, Element) (.add() 文档, commit)
可以给.add()方法指定环境了。这个功能可以用于在一个调用链中加入和操作额外元素(比如Ajax请求里返回的新元素)。
.closest(filter, DOMElement) (.closest() 文档, commit)
可以通过closest方法的第2个参数设置一个DOMElement环境。给closest设置一个环境一般能够提高这个方法的运行速度。这个优化也适用live(), 因为这个方法内部调用了closest()。
常用工具 (Utilities)
jQuery.isEmptyObject() (jQuery.isEmptyObject() 文档, commit)
如果对象,em>没有任何属性, 该方法将返回true。jQuery.isEmptyObject()方法不对参数进行任何检查, 所以请保证参数是一个对象。
jQuery.isPlainObject() (jQuery.isPlainObject(), commit )
如果一个对象是通过字符创建的(译注:{}),jQuery.isPlainObject()返回true; 如果对象是其他类别的对象(译注:如new Object())或者是基本类型, 则返回false。
jQuery.contains() (jQuery.contains() 文档, commit)
如果两个参数都是DOM节点,并且第二个节点是嵌套在第一个节点内部的话, jQuery.contains()返回true。反之返回false。
jQuery.noop (jQuery.noop() 文档, commit)
是个空的函数, 可以用在必须要有一个函数的情况下。(译注: noop是No Operation的意思。)
jQuery.unique() (jQuery.unique() 文档)
jQuery 1.4版中, jQuery.unique()方法返回结果里的元素是按照他们在页面里的顺序排序的。由于在创建jQuery集合的时候jQuery使用jQuery.unique()方法, 所以jQuery方法返回的集合也是按照他们在页面里的顺序排列的。
其他 (Miscellaneous)
jQuery.browser以浏览器引擎为中心 (jQuery.browser 文档, commit)
例如, 你可以通过jQuery.browser.webkit探测引擎是否是Webkit。
改进了对applets的处理 (commit 1, commit 2)
jQuery不再试图在Java applets上绑定事件或是数据了(绑定事件或是数据会出现错误)。
不再使用arguments.callee (commit)
为了顺应Caja的要求, 同时也因为即将开始应用的ECMAScript 5规范里将其标记为陈旧, 我们将jQuery核心中所有用到arguments.callee的代码都移除了。
用Closure Compiler替换了YUI Min (commit)
中文API文档支持
您可以在Ajax之家(http://www.ajaxa.cn/)下载最新的API文档
内部重组 (Internal Reorganization)
在1.4版的开发过程中的一个重点是要建立一个更易读, 更易懂的代码库。为了达到这个目标我们树立了一系列编写代码规范的向导。
下面是一些主要的变化:
- 旧的’core.js’文件被分成了’attribute.js’, ‘css.js’, ‘data.js’, ‘manipulation.js’, ‘traversing.js’, and ‘queue.js’.
- ready事件被移入了’core.js’ (因为它是jQuery的一个基本组成之一)。
- 大部分核心代码都符合新的代码规范.
- css和属性的逻辑被划分开来, 不再如以往相互缠绕。
测试 (Testing)
jQuery 1.4版发布过程中我们修复了207个问题 (比较之下1.3版里有97个修复)。
jQuery 1.4.此外, 测试的数量从jQuery 1.3.2中的1504例升到了1.4中的3060例。
所有测试都在主要浏览器里完全通过了。(Safari 3.2, Safari 4, Firefox 2, Firefox 3, Firefox 3.5, IE 6, IE 7,
IE 8, Opera 10.10, and Chrome)
我们尽量试图减小jQuery 1.4对大规模升级可能造成的麻烦 – 保持所有公开函数的签名不变。即使如此, 请通读下面的列表以保证你对可能对你的应用造成问题的变更。
- .add()不再简单的将结果串联到一起, 结果将会被混合到一起, 然后根据他们在页面里的顺序排列。
- .clone(true)将复制事件和数据, 而不仅是事件。
- jQuery.data(elem) 不再返回
id, 取而代之的是元素的对象缓存。 - jQuery() (无参数) 不再自动转换成jQuery(document)了。
- 通过.val(“…”)获得一个
option或一个checkbox的值不再有歧义(将总是根据value属性选择, 而不是根据text的值)。(Commit) - jQuery.browser.version现在将返回引擎的版本.
- 现在起将对引入的JSON更严格, 如果JSON的格式不符将会报错。如果你需要对不符合JSON严格格式的Javascript进行估值, 你必须设置请求的文件类型为纯文本, 然后用
eval()来对内容估值。 - 参数序列化默认会按照PHP/Rails的风格进行。你可以通过
jQuery.ajaxSettings.traditional = true;来切换到旧的序列化方式。你也可以针对个别请求进行切换, 在调用jQuery.ajax的时候递入{traditional: true} - 内部的jQuery.className被移除了。
- jQuery.extend(true, …)不再扩展复杂对象或是阵列。(TODO)
- 如果一个Ajax请求没有指定dataType, 而返回的数据类型是”text/javascript”, 那么回复将会被执行。之前, 必须明确的指定dataType。
- 设置Ajax 请求的”ifModified”属性会将ETags纳入考虑。
我们还针对1.4版中可能造成问题的变更编写了一个向后兼容的插件。如果你升级到1.4以后出现问题, 可以在引入1.4版的文件之后引入这个插件。
如何使用这个插件:
<script src="http://code.jquery.com/jquery.js"></script> <script src="http://code.jquery.com/jquery.compat-1.3.js"></script>
原始数据和测试页面
性能测试中我们使用了下列测试套包:
- Attributes
- Class
- DOM Manipulation
- Empty/Remove
- Function Call Profiling: 1.3.2 1.4.
结果的原始数据 (所有的数据都是 1.3.2 vs. 1.4):
函数调用的次数 547 3 760 3 500 200 896 399 23909 299 307 118 28955 100 28648 201 1662 593 DOM嵌入 558 317 1079 624 1079 516 1155 829 436 332 196 194 243 169 HTML 116 46 281 78 313 78 234 63 134 43 43 42 91 27 CSS/属性 703 370 1780 1250 1765 1250 1157 749 629 498 346 184 333 161 CSS 114 52 203 93 118 93 109 47 116 54 58 24 54 22 CSS类 553 138 1578 546 1515 501 1033 327 769 298 229 80 173 41 移除/清空 3298 286 9030 2344 7921 1703 5282 1266 2898 303 1166 140 1034 122
原译者署名:coolnalu
来源: jQuery 1.4官方文档中文版发布
对于一些设计师来说,有时在设计中会考虑使用一些特殊的字体来表达创意目的,所以,收藏一些非常规类的字体以备不时之需。图形字体就是不可缺少的一部分,在某些关键时刻灵活地使用这些特殊风格的字体设计图形图标,是非常简单快捷的,这里是30个免费的图形字体库,供你选择使用。
Pie Chart Font
Flamez
Dingbatz Formz DSG
WC Rhesus A Bta
WC Rhesus B Bta
Adhesive Nr. Seven
Pictogramz
Pixelfarm-Pets
Flowers (Hibiscus)
Stars
Tribalz
Maven Pictograms
Picto People
Skylines
ButtonButton AOE
Barcode Font
RecycleIt
Facetype
Travelcons
Font Notice
Font Notice2
Font Notice3
Ding Maps
Split Splat Splodge
Ossicles
Symmetric Things (and many other dingbats)
Roadgeek 2005
Guifx v2 Transports Font
Africa Wildlife B Mammals2
Recreation Dingbats
今天推荐16个在线应用网站,你可以通过这些网站提供的在线服务,设计你的虚拟形象照片处理、制作屏幕保护、头像制作、生成Google风格的网站Logo,还可以在线上传图片制作自己的Flash游戏。
1. 设计虚拟形象-VOKI
可以设计人物形象还可以配上声音哦,素材相当丰富。等路网站后点击“Get Started”,ok,可以自己制作自己喜欢的形象了,上边一排按钮分别是修改面部,服装和装饰品的。中间一排按钮时输入声音的选项,分别是打电话,键盘录入,麦克风录音以及上传声音文件。非常不错的地方那就是支持中文,也就是说你用中文打上自己想要说的话以后你设计的虚拟形象就会照着念出来了。

2. 在线照片特效制作-播播酷
一个类似于PhotoFunia的在线照片特效制作程序,轻松生成有趣图片,有46种照片特效。

3. 图片仓库
这是一个提供大头贴DIY、图片加字、图片缩放、邮件图标、图片加标签、Flash图片展示等图片处理工具的网站还是满全的哦。

4. 爱狗狗吧
主要包括恶搞,签名,证件三大类,可以说同上边介绍的图片仓库有些类似,但也有很多不同的地方,可以用来互补。

5. 在线制作屏幕保护
就是上传喜欢的图片,进行一些简单的设置后网站就会自动生成exe安装程序,下载到电脑中然后双击安装来使用自己制作的屏幕保护程序。(不过我个人很土的认为除了黑色全屏以外什么都不能起到屏保作用- -;)
6. 素描头像
拼脸部零件大家都会吧,虽然是英文网站,但是图像肯定都能看得懂啦,就是拼拼拼,拼到满意为止,效果是素描效果。
7. 帮你写藏头诗
输入你要藏头的那句话,点击开始做诗,一首藏头诗很快就做好了。至于通不通顺……不要考虑这么多了,我们又不是李百杜甫。
8. 制作毕加索风格头像
仍然是拼脸部零件,酷的是,生成效果是那种毕加索式的,所谓的立体派。
9. 奇多网
两个主要功能——魔力彩绘和秀逗贴。前者类似于windows绘图板,但有更多功能和素材可以让你使用,后者则是头像修改工具。
10. 制作纸娃娃
在这里你可以自己绘制自己喜欢的图像,程序自动生成3D纸娃娃。
点击“Enter Paper Critters from browser Window”或者“Launch full screen”,然后点击“TOY CREATOR”进入编辑页面,还可以点击“THECOLONY”查看其他人做好的纸娃娃。程序还有一个功能就是,根据你对纸娃娃的装扮,它会自动生成一些列参数,比如说,可爱度和邪恶度。
11. 制作纸飞机
选择飞机的样式,选择纸张的重量,选择尾翼翘起程度以及对侧翼进行设置。好了,托拽小人手中的纸飞机,松开鼠标,飞吧,看谁飞得更远。
12. 自制剪纸雪花
记不记得以前玩儿过的用一张纸折叠几次,再用剪刀在上边挖洞洞,展开后就是一片片纸制雪花,可以贴在窗户上。现在我们可以在网上重温这个游戏啦。点击“Make your own snowflake”,用鼠标控制剪刀,怎么样,是不是很环保的玩儿法。
13. 自制万花筒
万花筒就是万花筒啦,在左边放入各种各样的零件,右边就是你原来在小洞洞里才能看到的效果。
14. 自动PS头像
也是一个头像修改制作程序,强大的地方是它可以自动识别你的头部,并且只修改你头部的效果。
15. Google logo 生成器
输入你想显示的字符,自动生成Google风格的Logo。
16. 自制Flash游戏
将你的照片嵌入到flash游戏中或者改变游戏中的文字,制作出你自己的flash游戏。
一直希望自己对Web设计的色彩把握的更好些,所以手头上就备了一份图片版的配色表,对色彩的搭配有了很多的提高,今天发现了这套非常完整的Web版设计色彩速查表,相比图片版的来说就更容易实时学习了。
████ 粉红(#ffb3a7),即浅红色。别称:妃色 杨妃色 湘妃色 妃红色
████ 妃色 妃红色(#ed5736):古同“绯”,粉红色。杨妃色 湘妃色 粉红皆同义。
████ 品红(#f00056):比大红浅的红色(quester注:这里的“品红”估计是指的“一品红”,是基于大红色系的,和现在我们印刷用色的“品红M100”不是一个概念)
████ 桃红(#f47983),桃花的颜色,比粉红略鲜润的颜色。 (quester注:不大于M70的色彩,有时可加入适量黄色)
████ 海棠红(#db5a6b),淡紫红色、较桃红色深一些,是非常妩媚娇艳的颜色。
████ 石榴红(#f20c00):石榴花的颜色,高色度和纯度的红色。
████ 樱桃色(#c93756):鲜红色
████ 银红(#f05654):银朱和粉红色颜料配成的颜色。多用来形容有光泽的各种红色,尤指有光泽浅红。
████ 大红(#ff2121):正红色,三原色中的红,传统的中国红,又称绛色 (quester注:RGB 色中的 R255 系列明度)
████ 绛紫(#8c4356):紫中略带红的颜色
████ 绯红(#c83c23):艳丽的深红
████ 胭脂(#9d2933):1,女子装扮时用的胭脂的颜色。2,国画暗红色颜料
████ 朱红(#ff4c00):朱砂的颜色,比大红活泼,也称铅朱 朱色 丹色 (quester注:在YM对等的情况下,适量减少红色的成分就是该色的色彩系列感觉)
████ 丹(#ff4e20):丹砂的鲜艳红色
████ 彤(#f35336):赤色
████ 茜色(#cb3a56):茜草染的色彩,呈深红色
████ 火红(#ff2d51):火焰的红色,赤色
████ 赫赤(#c91f37):深红,火红。泛指赤色、火红色。
████ 嫣红(#ef7a82):鲜艳的红色
████ 洋红:色橘红(#ff0097) (quester注:这个色彩方向不太对,通常洋红指的是倾向于M100系列的红色,应该削弱黄色成分。)
████ 炎(#ff3300):引申为红色。
████ 赤(#c3272b):本义火的颜色,即红色
████ 绾(#a98175):绛色;浅绛色。
████ 枣红(#c32136):即深红 (quester注:色相不变,是深浅变化)
████ 檀(#b36d61):浅红色,浅绛色。
████ 殷红(#be002f):发黑的红色。
████ 酡红(#dc3023):像饮酒后脸上泛现的红色,泛指脸红
████ 酡颜(#f9906f):饮酒脸红的样子。亦泛指脸红色
████ 鹅黄(#fff143):淡黄色 (quester注:鹅嘴的颜色,高明度微偏红黄色)
████ 鸭黄(#faff72):小鸭毛的黄色
████ 樱草色(#eaff56):淡黄色
████ 杏黄(#ffa631):成熟杏子的黄色 (quester注:Y100 M20~30 感觉的色彩,比较常用且有浓郁中国味道)
████ 杏红(#ff8c31):成熟杏子偏红色的一种颜色
████ 橘黄(#ff8936):柑橘的黄色。
████ 橙黄(#ffa400):同上。 (quester注:Y100 M50 感觉的色彩,现代感比较强。广告上用得较多)
████ 橘红(#ff7500):柑橘皮所呈现的红色。
████ 姜黄(#ffc773):中药名。别名黄姜。为姜科植物姜黄的根茎。又指人脸色不正,呈黄白色
████ 缃色(#f0c239):浅黄色。
████ 橙色(#fa8c35):界于红色和黄色之间的混合色。
████ 茶色(#b35c44):一种比栗色稍红的棕橙色至浅棕色
████ 驼色(#a88462):一种比咔叽色稍红而微淡、比肉桂色黄而稍淡和比核桃棕色黄而暗的浅黄棕色
████ 昏黄(#c89b40):形容天色、灯光等呈幽暗的黄色
████ 栗色(#60281e):栗壳的颜色。即紫黑色
████ 棕色:棕毛的颜色,即褐色。1,在红色和黄色之间的任何一种颜色2,适中的暗淡和适度的浅黑。
████ 棕绿(#827100):绿中泛棕色的一种颜色。
████ 棕黑(#7c4b00):深棕色。
████ 棕红(#9b4400):红褐色。
████ 棕黄(#ae7000):浅褐色。
████ 赭(#9c5333):赤红如赭土的颜料,古人用以饰面
████ 赭色(#955539):红色、赤红色。
████ 琥珀(#ca6924):
████ 褐色(#6e511e): 黄黑色
████ 枯黄(#d3b17d):干枯焦黄
████ 黄栌(#e29c45):一种落叶灌木,花黄绿色,叶子秋天变成红色。木材黄色可做染料。
████ 秋色(#896c39):1,中常橄榄棕色,它比一般橄榄棕色稍暗,且稍稍绿些。2,古以秋为金,其色白,故代指白色。
████ 秋香色(#d9b611):浅橄榄色 浅黄绿色。 (quester注:直接在Y中掺入k10~30可得到不同浓淡的该类色彩)
████ 嫩绿(#bddd22):像刚长出的嫩叶的浅绿色
████ 柳黄(#c9dd22):像柳树芽那样的浅黄色
████ 柳绿(#afdd22):柳叶的青绿色
████ 竹青(#789262):竹子的绿色
████ 葱黄(#a3d900):黄绿色,嫩黄色
████ 葱绿(#9ed900):1,浅绿又略显微黄的颜色2,草木青翠的样子
████ 葱青(#0eb83a):淡淡的青绿色
████ 葱倩(#0eb83a):青绿色
████ 青葱(#0aa344):翠绿色,形容植物浓绿
████ 油绿(#00bc12):光润而浓绿的颜色。以上几种绿色都是明亮可爱的色彩。
████ 绿沈(#0c8918)(沉):深绿
████ 碧色(#1bd1a5):1,青绿色。2,青白色,浅蓝色。
████ 碧绿(#2add9c):鲜艳的青绿色
████ 青碧(#48c0a3):鲜艳的青蓝色
████ 翡翠色(#3de1ad):1,翡翠鸟羽毛的青绿色。2,翡翠宝石的颜色。 (quester注:C-Y≥30 的系列色彩,多与白色配合以体现清新明丽感觉,与黑色配合效果不好:该色个性柔弱,会被黑色牵制)
████ 草绿(#40de5a):绿而略黄的颜色。
████ 青色(#00e09e):1,一类带绿的蓝色,中等深浅,高度饱和。3,本义是蓝色。4,一般指深绿色。5,也指黑色。6,四色印刷中的一色。2,特指三补色中的一色。
████ 青翠(#00e079):鲜绿
████ 青白(#c0ebd7):白而发青,尤指脸没有血色
████ 鸭卵青(#e0eee8):淡青灰色,极淡的青绿色
████ 蟹壳青(#bbcdc5):深灰绿色
████ 鸦青(#424c50):鸦羽的颜色。即黑而带有紫绿光的颜色。
████ 绿色(#00e500):1,在光谱中介于蓝与黄之间的那种颜色。2,本义:青中带黄的颜色。3,引申为黑色,如绿鬓:乌黑而光亮的鬓发。代指为青春年少的容颜。 (quester注:现代色彩研究中,把绿色提高到了一个重要的位置,和其它红黄兰三原色并列研究,称做“心理原色”之一)
████ 豆绿(#9ed048):浅黄绿色
████ 豆青(#96ce54):浅青绿色
████ 石青(#7bcfa6):淡灰绿色
████ 玉色(#2edfa3):玉的颜色,高雅的淡绿、淡青色
████ 缥(#7fecad):绿色而微白
████ 艾绿(#a4e2c6):艾草的颜色。偏苍白的绿色。
████ 松柏绿(#21a675):经冬松柏叶的深绿
████ 松花绿(#057748):亦作“松花”、“松绿”。偏黑的深绿色,墨绿。
████ 松花色(#bce672):浅黄绿色。(松树花粉的颜色)《红楼梦》中提及松花配桃红为娇艳 ████
████ 蓝(#44cef6):三原色的一种。像晴天天空的颜色 (quester注:这里的蓝色指的不是RGB色彩中的B,而是CMY色彩中的C)
████ 靛青(#177cb0):也叫“蓝靛”。用蓼蓝叶泡水调和与石灰沉淀所得的蓝色染料。呈深蓝绿色 (quester注:靛,发音dian四声,有些地方将蓝墨水称为“靛水”或者“兰靛水”)
████ 靛蓝(#065279):由植物(例如靛蓝或菘蓝属植物)得到的蓝色染料
████ 碧蓝(#3eede7):青蓝色
████ 蔚蓝(#70f3ff):类似晴朗天空的颜色的一种蓝色
████ 宝蓝(#4b5cc4):鲜艳明亮的蓝色 (quester注:英文中为 RoyalBlue 即皇家蓝色,是皇室选用的色彩,多和小面积纯黄色(金色)配合使用。)
████ 蓝灰色(#a1afc9):一种近于灰略带蓝的深灰色
████ 藏青(#2e4e7e):蓝而近黑
████ 藏蓝(#3b2e7e):蓝里略透红色
████ 黛(#4a4266):青黑色的颜料。古代女子用以画眉。
████ 黛螺(#4a4266):绘画或画眉所使用的青黑色颜料,代指女子眉妩。
████ 黛色(#4a4266):青黑色。
████ 黛绿(#426666):墨绿。
████ 黛蓝(#425066):深蓝色
████ 黛紫(#574266):深紫色
████ 紫色(#8d4bbb):蓝和红组成的颜色。古人以紫为祥瑞的颜色。代指与帝王、皇宫有关的事物。
████ 紫酱(#815463):浑浊的紫色
████ 酱紫(#815476):紫中略带红的颜色
████ 紫檀(#4c221b):檀木的颜色,也称乌檀色 乌木色
████ 绀青 绀紫(#003371):纯度较低的深紫色
████ 紫棠(#56004f):黑红色
████ 青莲(#801dae):偏蓝的紫色
████ 群青(#4c8dae):深蓝色
████ 雪青(#b0a4e3):浅蓝紫色
████ 丁香色(#cca4e3):紫丁香的颜色,浅浅的紫色,很娇柔淡雅的色彩
████ 藕色(#edd1d8):浅灰而略带红的颜色
████ 藕荷色(#e4c6d0):浅紫而略带红的颜色
████ 苍色(#75878a):即各种颜色掺入黑色后的颜色,如苍翠(#519a73)████ 苍黄(#a29b7c)████ 苍青(#7397ab)████ 苍黑(#395260)████ 苍白(#d1d9e0)████ (quester注:准确的说是掺入不同灰度级别的灰色)
████ 水色(#88ada6):水红(#f3d3e7)████ 水绿(#d4f2e7)████ 水蓝(#d2f0f4)████ 淡青(#d3e0f3)████ 湖蓝(#30dff3)████ 湖绿(#25f8cb)████皆是浅色。
████ 深色淡色(#ffffff):颜色深的或浅的,不再一一列出。
████ 精白(#ffffff):纯白,洁白,净白,粉白。
████ 象牙白(#fffbf0):乳白色
████ 雪白(#f0fcff):如雪般洁白
████ 月白(#d6ecf0):淡蓝色
████ 缟(#f2ecde):白色
████ 素(#e0f0e9):白色,无色
████ 荼白(#f3f9f1):如荼之白色
████ 霜色(#e9f1f6):白霜的颜色。
▓▓▓▓ 花白(#c2ccd0):白色和黑色混杂的。斑白的 夹杂有灰色的白
████ 鱼肚白(#fcefe8):似鱼腹部的颜色,多指黎明时东方的天色颜色 (quester注:M5 Y5)
████ 莹白(#e3f9fd):晶莹洁白
████ 灰色(#808080):黑色和白色混和成的一种颜色
████ 牙色(#eedeb0):与象牙相似的淡黄色 (quester注:暖白)
████ 铅白(#f0f0f4):铅粉的白色。铅粉,国画颜料,日久易氧化“返铅”变黑。铅粉在古时用以搽脸的化妆品。 (quester注:冷白)
████ 玄色(#622a1d):赤黑色,黑中带红的颜色,又泛指黑色
████ 玄青(#3d3b4f):深黑色
████ 乌色(#725e82):暗而呈黑的颜色
████ 乌黑(#392f41):深黑;漆黑
████ 漆黑(#161823):非常黑的
████ 墨色(#50616d):即黑色
████ 墨灰(#758a99):即黑灰
████ 黑色(#000000):亮度最低的非彩色的或消色差的物体的颜色;最暗的灰色;与白色截然不同的消色差的颜色;被认为特别属于那些既不能反射、又不能透过能使人感觉到的微小入射光的物体,任何亮度很低的物体颜色。
████ 缁色(#493131):帛黑色
████ 煤黑象牙黑(#312520):都是黑,不过有冷暖之分。
████ 黧(#5d513c):黑中带黄的颜色
████ 黎(#75664d):黑中带黄似黎草色
████ 黝(#6b6882):本义为淡黑色或微青黑色。
████ 黝黑(#665757):(皮肤暴露在太阳光下而晒成的)青黑色
████ 黯(#41555d):深黑色、泛指黑色
████ 赤金(#f2be45):足金的颜色
████ 金色(#eacd76):平均为深黄色带光泽的颜色
████ 银白(#e9e7ef):带银光的白色
████ 铜绿(#549688) ████乌金(#a78e44) ████老银(#bacac6):金属氧化后的色彩
附带:
国画用色
████ 银朱(#bf242a):呈暗粉色。
████ 胭脂(#9d2933):色暗红。用红蓝花、茜草、紫梗三种植物制成的颜料,年代久则有褪色的现象。
████ 朱砂(#ff461f):色朱红。用以画花卉、禽鸟羽毛。 (quester注:黄色成分微高于红色成分,色艳丽,需注意与背景色调和,多数情况下不大面积使用。)
████ 朱膘(#f36838):色橘红。明度比朱砂高,彩度比朱砂低。用以画花卉。
████ 赭石(#845a33):色红褐。用以画山石、树干、老枝叶。
████ 石青(#1685a9):色青,依深浅分为-头青、二青、三青。用以画叶或山石。
████ 石绿(#16a951):依深浅分为-头绿、二绿、三绿。用以画山石、树干、叶、点苔等。
████ 白粉(#fff2df):亦称胡粉,色白,有蛤粉和铅粉两种。用以画白花、鸟,或调配其他颜料使用。
████ 花青(#003472):色藏青。用以画枝叶、山石、水波等。用蓼蓝或大蓝的叶子制成蓝靛,再提炼出来的青色颜料,蓝绿色或藏蓝色。用途相当广,可调藤黄成草绿或嫩绿色。广花,颜料。即广东产的花青。 (quester注:微含红色成分,故与黄色调和后生成的绿色较为沉着)
████ 藤黄(#ffb61e):色明黄。用以画花卉、枝叶。藤黄:明黄色。南方热带林中的海藤树,常绿乔木,茎高达二十米,从其树皮凿孔,流出黄色树脂,以竹筒承接,干透可作国画颜料。 (quester注:亦含微量红色成分,有毒。和黑色配合时甚为醒目,多为危险警示色彩)
████ 赭石色(#845a33):暗棕色矿物,用做颜料
████ 雌黄(#ffc64b):矿物名。成分是三硫化二砷(As2S3)橙黄色,半透明,可用来制颜料。古人用雌黄来涂改文字,因此称乱改文字、乱发议论为“妄下雌黄”,称不顾事实、随口乱说为“信口雌黄”。
████ 雄黄(#e9bb1d):中药名。为含硫化砷的矿石。别名石黄、黄石。
████ 石黄(#e9bb1d):国画颜料,即雄黄。
████ 洋红(#ff4777):色橘红。用以画花卉。
古典文学常见词
鎏金:中国传统的一种镀金方法,把溶解在水银里的金子涂刷在银胎或铜胎器物上。
飞金 泥金 洒金:用金粉或金属粉制成的金色涂料,用来装饰笺纸或调和在油漆中涂饰器物。洒金一说是指带斑点的图案。
描金:为使器物美观而在其上用金银粉勾图、描绘作为装饰。
花黄:古代妇女的面饰。用金黄色纸剪成星月花鸟等形贴在额上,或在额上涂点黄色。
撒花:织物上的碎花图案。
云斑:在颜色比较淡的或半透明的材料上的暗黑的或无光泽的条纹或斑点(如在大理石上)。
云母纹:像云母断面及砂子闪烁光泽的纹理。
注:在原文中,是没有把每个色彩的色彩值写上的,我感觉这样用起来会很不方便,用取色器获取的颜色也可能不准确,就在每个颜色名称后面一一标注了。







































