Ruby's Louvre

每天学习一点点算法

导航

上一页 1 ··· 82 83 84 85 86 87 88 89 90 ··· 125 下一页

2010年12月16日 #

How to Detect Font-Smoothing Using JavaScript

摘要: In an earlier article, I mentioned that Boing-Boing had a few issues when they wanted to use @font-face embedding inside their website. In short, the problem was that some fonts look bad on computer monitors without font-smoothing enabled in the operating system. This brought on a lot of discussio 阅读全文

posted @ 2010-12-16 23:29 司徒正美 阅读(1028) 评论(0) 推荐(0) 编辑

method_missing in JavaScript(SpiderMonkey)

摘要: ruby的method_missing魔法在JavaScript中是否有类似等价物?答案是SpiderMonkey的__noSuchMethod__ 方法。演示如下(请firebug大神出马): 总结: ruby:method_missingJavaScript(SpiderMonkey): __noSuchMethod__ (有可能会成为ECMAScript 3.1标准)smalltalk:doesNotUnderstandObjective-C:forward:: 阅读全文

posted @ 2010-12-16 23:27 司徒正美 阅读(916) 评论(0) 推荐(0) 编辑

2010年12月14日 #

从右到左选择:位置伪类

摘要: 位置伪类好像天生克从右到左的选择器,处理起来非常复杂,大抵有以下三种情况1、位置选择器出现群组的最后面。这种情况相对简单,我们先跳过它,取得节点后再进行过滤,如“"div span:eq(0)” for (var selector ; selector = selectors[i++];) { /**********略**********/ /*遍历DOM树,收集符合条件的节点*/ } /*如果选择器群组包含位置伪类,则进行筛选*/ if(pos && obj.nodes.length ){ ... 阅读全文

posted @ 2010-12-14 01:32 司徒正美 阅读(994) 评论(0) 推荐(0) 编辑

2010年12月12日 #

从右到左选择:获取候选集

摘要: 从右到左选择最大的好处有两个:1、如果不出现并联选择器的情况下了,经过一系列筛选后得到的结果就是自然按DOM树的顺序排列,2、之后的每次筛选的节点只会减少不会变多。 var reg_find =/(^[\w\u00a1-\uFFFF][\w\u00a1-\uFFFF-]*)|^(\*)|^#([\w\u00a1-\uFFFF-]+)|^\.([\w\u00a1-\uFFFF-]+)|^:(root)|^:(link)/ function getCandidates(selectors,context,s){ var match = selectors[s].match... 阅读全文

posted @ 2010-12-12 18:04 司徒正美 阅读(985) 评论(0) 推荐(0) 编辑

2010年12月11日 #

让元素获得hasLayout

摘要: property value display inline-block height any value float left or right position absolute width any value writing-mode tb-rl zoom any value 阅读全文

posted @ 2010-12-11 13:47 司徒正美 阅读(933) 评论(1) 推荐(0) 编辑

从右到左选择:五大迭代器

摘要: 如果是从左到右,我们想过滤一些节点,就用现在手头上的节点就行了,但从右到左,我们就需要根据这些节点的父亲、孩子、兄弟进行过滤,而且过滤后,这些用作比较的节点不能丢弃掉,它们可以还要用于下一次的过滤。这样就存在一个代理关系,我们需要一些代理器来干这事情。当然像div.aaa是不需要代理器,但div div.aaa就需要了。在从左到右的情况下,我们所有说的关系选择器,主要有亲子兄长与相邻三种,遇到后代选择器,我们可以转化为通配符选择器与标签选择器。而在从右到左,关系选择器就包括后代通配符亲子兄长相邻五种,通配符实质是一种带层次关系的后代选择器。 //取得候选集的共同父节点的合集 var... 阅读全文

posted @ 2010-12-11 13:43 司徒正美 阅读(1203) 评论(0) 推荐(0) 编辑

2010年12月5日 #

选择器切割正则的进化

摘要: //标签,ID 类 伪类 属性的标识符 它们的主体部分,亲子相邻兄长并联通配符,空白var reg = /[\w\u00a1-\uFFFF][\w\u00a1-\uFFFF-]*|[#.:\[][\w\(\)\]]+|\s*[>+~,*]\s*|\s+/g //让小括号里面的东西不被切割var reg = /[\w\u00a1-\uFFFF][\w\u00a1-\uFFFF-]*|[#.:\[](?:[\w\u00a1-\uFFFF-]|\([^\)]*\)|\])+|(?:\s*)[>+~,*](?:\s*)|\s+/g ... 阅读全文

posted @ 2010-12-05 21:02 司徒正美 阅读(1245) 评论(0) 推荐(0) 编辑

mass.query v3 发布

摘要: 我想query v2这种设计思路已到瓶颈了,把选择器群组切割成最小颗粒,然后在循环中从文档对象找到一个或多个节点,然后再到下一个循环找到它们的孩子或直接从它们当中筛选……为此付出的代价也非常多——颗粒越多,循环次数也越多,虽然我在每个分支不断让指针向后移。但这也太累了,有些颗粒需要合并了才有意义。不过最令人痛心的问题是,也是所有从左到右选择的选择器不得不面临问题是,如果出现并联、亲子、兄长、相邻等选择器,得到的元素集合就很有可能不是按文档顺序排列。因此我下一版将尝试从右到左。不过从右到左最大的问题就是后代选择器,这种不断往上回溯的算法非常难,这也是jQuery在处理关系选择器容易出现错的原因。 阅读全文

posted @ 2010-12-05 15:23 司徒正美 阅读(2779) 评论(9) 推荐(1) 编辑

2010年11月30日 #

性能监控代码

摘要: var log = function(msg){ if(window.console){ var now = new Date - 0; var last = arguments.callee.last; if(typeof last === "number"){ window.console.log(msg +" : "+(now-last)+" ms"); } arguments.callee... 阅读全文

posted @ 2010-11-30 11:52 司徒正美 阅读(1081) 评论(3) 推荐(0) 编辑

2010年11月25日 #

mass.query v2 发布

摘要: 我的选择器第二版发布,全面支持jQuery所支持的所有伪类(第一版就支持除has伪类的所有伪类,换言之,这版只增加了对它的支持)。代码量减少了100多行,搜索速度平均提升200ms。在IE6下为jQuery1.4.4的2倍多,IE8,FF3.6下由于大家都使用querySelectorAll,快不了多少,但也比jQuery快。支持HTML与XML。query v2使用了全新的选择组群组切割技术,这是它更快的主要原因。这里解释一下,什么叫选择器群组。一般而言,我们想搜索一个或几个目标元素,需要传入一个CSS字符串,这个字符串有时很长。比如这个——“div.aaa , p:not(#aaa.bb) 阅读全文

posted @ 2010-11-25 13:49 司徒正美 阅读(2858) 评论(8) 推荐(4) 编辑

上一页 1 ··· 82 83 84 85 86 87 88 89 90 ··· 125 下一页