【更新 v2.5】绝对定位层解决方案—jQuery插件之floatDiv 2.5发布!

  floatDiv插件在经历了项目两个月后,终于接受住了考验,虽然期间发现了几个小BUG,可能它并不是很完善,并且不能够满足各方的需求。但是它终于还是覆盖了绝大部分的功能要求。而之后也一一修补了已经发现的几个BUG。

  最近在看《高性能javascript》(这是一本好书,推荐各位看官阅读)的时候,让我对性能有了一些新的认识,所以这次重新梳理了一下插件整个流程,可能在使用的时候,并不能完全体验出来,因为插件本身就很小巧了,但是,我想说的是,它的性能却是实实在在地提升了。  

^^^^^^^^^^^^^^^^^ 看,那忧伤的分割线 ^^^^^^^^^^^^^^^^^

本次更新及优化如下:

 ⊙改进:窗口滚动(scroll)及窗口改变(resize)改为分流模式(延时响应),更省资源;
 ⊙改进:清理变量;
 ⊙改进:针对IE6 select bug的改进 — 改进iframe模式下select会闪的问题;
 ⊙改进:解决初始小窗口加载,最大化后遮罩宽度不能铺满的Bug;
 ⊙改进:解决非滚动模式下层定位不准确的问题;
 ⊙改进:关闭句柄支持CSS选择器语法;
 ⊙改进:梳理优化变量缓存;
 ⊙改进:参数名称简化,增加后续链式支持;
 ⊙改进:遮罩性能优化;

^^^^^^^^^^^^^^^^^ 看,那忧伤的分割线 ^^^^^^^^^^^^^^^^^

如果您有什么好的建议或者更优雅的实现技巧,欢迎在评论处提出来,感激之至。

下面给出Demo及插件下载地址:

查看演示Demo

插件下载:压缩版( jquery.floatDiv-2.4.min.js )  (6KB)

                 开发版( jquery.floatDiv-2.4.develop.js ) (13KB)
^^^^^^^^^^^^^^^^^ 看,那忧伤的分割线 ^^^^^^^^^^^^^^^^^

2012.05.09更新:

插件版本更新至2.5,新增过渡效果设置,以及更加精细的流程控制,本版参数如下:

继续阅读:【更新 v2.5】绝对定位层解决方案—jQuery插件之floatDiv 2.5发布! »

IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常

标准参考

根据W3C CSS2.1规范第8.3节中的描述,边距属性设置了一个框的边距区的宽度。‘margin’ 缩写属性设置所有四边的边距,而其它的边距属性( ‘margin-top’‘margin-right’‘margin-bottom’‘margin-left’ )只设置它们代表的那一边的边距。

边距属性的取值可以是下面值之一:

  • <length> 指定一个固定的宽度。
  • <percentage> 百分比的计算基于生成的框的包含块的宽度。
  • auto 其表现细节请参见宽度和边距的计算一章。
边距属性允许有负值,不过可能有与实现相关的限制。

问题描述

IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常。

造成的影响

严重的情况下会破坏整体布局。

受影响的浏览器

继续阅读:IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常 »

去除inline-block元素间间距的N种方法

一、现象描述

真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距,很简单的个例子:

<input /> <input type="submit" />

间距就来了~~
表单控件之间的间距例子

我们使用CSS更改非inline-block水平元素为inline-block水平,也会有该问题:

.space a {
    display: inline-block;
    padding: .5em 1em;
    background-color: #cad5eb;
}
<div>
    <a href="##">惆怅</a>
    <a href="##">淡定</a>
    <a href="##">热血</a>
</div>

inline-block水平元素间的间距示意 张鑫旭-鑫空间-鑫生活

您可以狠狠地点击这里:inline-block元素间间距demo

这种表现是符合规范的应该有的表现(如果有人认为是bug就太()ay ()oy 了)。

不过,这类间距有时会对我们布局,或是兼容性处理产生影响,需要去掉它,该怎么办呢?以下展示N种方法(欢迎补充)!

二、方法之移除空格

元素间留白间距出现的原因就是标签段之间的空格,

继续阅读:去除inline-block元素间间距的N种方法 »

学习JavaScript的理由

  导读:文章根据《Why a JavaScript hater thinks everyone needs to learn JavaScript in the next year》这篇文章翻译而来。译文由李松峰整理编译《学习JavaScript的理由》。

内容如下:

  很长时间以来,JavaScript在我眼里都是编程语言中的二等公民。早先,它经常是很多安全问题的发源地,就像是胶水一样,它能把HTML应用与样式粘到一块,可没有人拿它来正正规规地编写程序;这样的情形太普遍了。而Java、Ruby、Python,这些才是真正能用来编写程序的语言。

  过去几年间,我对JavaScript的态度有了彻底的改变。JavaScript已经“长大成人”了。我敢保证很多JavaScript开发人员都不会认同我前面的说法,他们会说JavaScript一直都是一个十分强大、成熟,深得人心的语言。或许他们说得没错,事实上只要是一门完整的编程语言,就能拿来编写程序,也包括BASIC这种滥东西。而一门语言真正有用,必须一方面自身具备很强的表达能力,另一方面还要有众多的库和开发工具。显然,JavaScript的表达能力早就没有问题了,即便是创建对象的方式有点不好让人接受,其实问题也不大。直到最近,一些极其重要的扭转局面的技术出现了:jQuery、JSON、Node.js和HTML5。或许JavaScript以前就是一门完善的语言了,但却是这些重要的相关技术(以及其他一些没有在这里提及的),让JavaScript成为了每一个开发人员都知道

继续阅读:学习JavaScript的理由 »

一场关于YUI3/jQuery的精彩辩论

近日,有人在Quora上 提了一个问题:“YUI3 如何提升其影响力?”,这个问题引起社区的热议。而本次讨论的最大亮点在于jQuery之父John Resig和YUI3架构师Nicholas C. Zakas也参与讨论之中,同时Nicholas C. Zakas对John Resig的某些观点进行了反驳。两位大佬直接对话实属难得,辩论暗涌澎湃精彩至极。现将两位大佬的辩论内容分享于此,希望对有志于开发“库/框架”的同 仁们有所启迪。

如何提升YUI的影响力,John Resig通过回答下面两个的问题,表达了自己的观点:

1. YUI应当如何改进,以便更多的人来使用?

2. YUI如何提升才能改善和jQuery的竞争力?

在回答第一个问题时,他表示:

和其他JS库相比,YUI的确很赞,但由于它的域名分散、代码库过多且引入方式太多,这就导致了YUI无法更多的去占领市场。

在假设目前的 YUI3 版本已经“足够优秀”,YUI 文档和论坛也已经足够完善,足以吸引更多的用户来使用YUI3的情况下,他提议把分散的域名合并成一个;把多代码库合并成一个代码库;把YUI 的引入方式缩减至一种。简单讲,YUI项目应当保留一个整体的方向性,重点太分散,则会事与愿违。

YUI3 架构师Nicholas C. Zakas对John Resig的观点表示十分赞同,他说:

继续阅读:一场关于YUI3/jQuery的精彩辩论 »

定位元素间的Z值比较及z-index在IE/FF下默认值的影响

z-index在ie下缺省为:z-index:0; 而FF下则缺省为:z-index:auto;

(这个结论已然在蓝色的《补遗<无法冲破的等级> 》这个帖子中得出。而本文的讨论也是对《补遗》的总结及延伸。 )
你可以借助ie developer tool和firebug等工具进行测试查看z-index值。需要注意的是:z-index值须在设置position:relative/absolute/fixed之后方才生效。
正是IE/FF下这一点区别导致ie,ff下z值的不同表现。

注意:此处所说的z值区别于z-index,它指的是z轴层叠等级(stack level),表示垂直于显示屏方向上的各层的层叠顺序。不止z-index一个属性会影响到z轴层叠等级的大小(本文对其他属性的影响暂不做讨论,并在本文中的测试已排除其他属性的影响,其他属性将不会影响本文的研究)。

正常情况下:兄弟(同级)元素后者居上,父子之间子高于父。

这一点必须明确,相信也没什么异见。

…………

PS:文章写得很好,分析地很全面,就无耻地转来了,便于下次查看,有兴趣的朋友直接阅之~

帖上原文链接:http://www.cssass.com/blog/index.php/2009/75.html

继续阅读:定位元素间的Z值比较及z-index在IE/FF下默认值的影响 »

CSS资料集:IE8 CSS hack

  CSS兼容性一直是大家头疼的问题,IE6、IE7和FF已经让大家够呛,在52CSS.com以前的文章中,很多这方面的知识介绍。今天向大家介绍IE8的CSS hack。
  IE8正式版发布以来,一直在找一种区别IE8正式版的方法.在百度搜索”IE8 hack”有19万多个结果,google搜索则有243万多个结果,但几乎没有看到任何一种有效的方法是针对IE8正式版的,要知道IE8正式版和测试版在hack上是有很大区别的.而且网络上的方法几乎都是出自一两个人之手,最有名的可能要数那张linxz.cn的hack图片了,这张图片估计被国内的网友转载了几十万次,但目前这张图里的方法对IE8正式版是无效的.
  经过分析和总结网友们的各个无效方法,有了下面的行之有效的解决方案,或许以后还会有更好更简单的hack,但就目前来说这个方法可以解决燃眉之急.
  不再讲废话,来(以下的IE8均指IE8正式版,版本号:8.0.6001.18702):

"\9" 例:"margin:0px auto\9;".这里的"\9"可以区别所有IE和FireFox.
"*" IE6、IE7可以识别.IE8、FireFox不能.
"_" IE6可以识别"_",IE7、IE8、FireFox不能.

  如此,就可以完全区分开IE6、IE7、IE8、FireFox了.
  什么?还是不知道怎么区分.好吧,来看个例子:

继续阅读:CSS资料集:IE8 CSS hack »

[面试题] 人人网javascript面试题

JavaScript面试题要求:以下题目必须从一至四题中,选出三道题,使用原生代码实现,不可使
用任何框架,第五题为选作题。

一、  在页面的固定区域内实现图片的展示      
1.png 
1.  每点击一次右箭头,图片区域向左滚动出一张图片,反之相同;   
2.  当发现图片滚动到末尾时,响应的箭头变成不可点击状态;   
3.  鼠标在图片区域内滑动滚轮,图片会随着鼠标滚轮的方向进行响应的滚动;   

二、  用  js、html、css实现一个弹出提示控件:   
1.  分别实现类似于系统的  alert、confirm、prompt对话框;   
2.  对话框大小根据提示内容进行自适应(有一个最小宽高),默认出现在页面的水平垂直居中的位置;   
3.  对话框可拖动;   
4.  对话框中的事件模拟系统对话框的事件(例如:alert 对话框,点击确定按钮,对话框消失);   
5.  解决IE6被 select控件遮挡的问题;   

继续阅读:[面试题] 人人网javascript面试题 »