CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则:

 

1. 使用Reset但并非全局Reset

  不同浏览器元素的默认属性有所不同,使用Reset可重置浏览器元素的一些默认属性,以达到浏览器的兼容。但需要注意的是,请不要使用全局Reset:

*{ margin:0; padding:0; }

  这不仅仅因为它是缓慢和低效率的方法,而且还会导致一些不必要的元素也重置了外边距和内边距。在此建议参考YUI ResetEric Meyer的做法。我跟Eric Meyer的观点相同,Reset并不是一成不变的,具体还需要根据项目的不同需求做适当的修改,以达到浏览器的兼容和操作上的便利性。我使用的Reset如下:

 

/** 清除内外边距 **/
body, h1, h2, h3, h4, h5, h6, hr, p,
blockquote, /* structural elements 结构元素 */
dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
pre, /* text formatting elements 文本格式元素 */
form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
th, td, /* table elements 表格元素 */
img/* img elements 图片元素 */{
  border:medium none;
  margin: 0;
  padding: 0;
}
/** 设置默认字体 **/
body,button, input, select, textarea {
  font: 12px/1.5 '宋体',tahoma, Srial, helvetica, sans-serif;
}
h1, h2, h3, h4, h5, h6 { font-size: 100%; }
em{font-style:normal;}
/** 重置列表元素 **/
ul, ol { list-style: none; }
/** 重置超链接元素 **/
a { text-decoration: none; color:#333;}
a:hover { text-decoration: underline; color:#F40; }
/** 重置图片元素 **/
img{ border:0px;}
/** 重置表格元素 **/
table { border-collapse: collapse; border-spacing: 0; }

 

2. 良好的命名习惯

  无疑乱七八糟或者无语义命名的代码,谁看了都会抓狂。就像这样的代码:

.aaabb{margin:2px;color:red;}

  我想即使是初学者,也不至于会在实际项目中如此命名一个class,但有没有想过这样的代码同样是很有问题的:

<h1>My name is <span class="red blod">Wiky</span></h1>

  问题在于如果你需要把所有原本红色的字体改成蓝色,那修改后就样式就会变成:

.red{color:bule;}

  这样的命名就会很让人费解,同样的命名为.leftBar的侧边栏如果需要修改成右侧边栏也会很麻烦。所以,请不要使用元素的特性(颜色,位置,大小等)来命名一个class或id,您可以选择意义的命名如:#navigation{...},.sidebar{...},.postwrap{...}

  这样,无论你如何修改定义这些class或id的样式,都不影响它跟HTML元素间的联系。

  另外还有一种情况,一些固定的样式,定义后就不会修改的了,那你命名时就不用担忧刚刚说的那种情况,如

.alignleft{float:left;margin-right:20px;}
.alignright{float:right;text-align:right;margin-left:20px;}
.clear{clear:both;text-indent:-9999px;}

  那么对于这样一个段落

<p class="alignleft">我是一个段落!</p>

  如果需要把这个段落由原先的左对齐修改为右对齐,那么只需要修改它的className就为alignright就可以了。

 

3. 代码缩写

  CSS代码缩写可以提高你写代码的速度,精简你的代码量。在CSS里面有不少可以缩写的属性,包括margin,padding,border,font,background和颜色值等,如果您学会了代码缩写,原本这样的代码:

 

li{
    font-family:Arial, Helvetica, sans-serif;
    font-size: 1.2em;
    line-height: 1.4em;
    padding-top:5px;
    padding-bottom:10px;
    padding-left:5px;
}

 

就可以缩写为:

li{
    font: 1.2em/1.4em Arial, Helvetica, sans-serif;
    padding:5px 0 10px 5px;
}

  如果您想更了解这些属性要怎么缩写,可以参考《常用CSS缩写语法总结》或者下载CSS-Shorthand-Cheat-Sheet.pdf 。

 

4. 利用CSS继承

  如果页面中父元素的多个子元素使用相同的样式,那最好把他们相同的样式定义在其父元素上,让它们继承这些CSS样式。这样你可以很好的维护你的代码,并且还可以减少代码量。那么本来这样的代码:

#container li{ font-family:Georgia, serif; }
#container p{ font-family:Georgia, serif; }
#container h1{font-family:Georgia, serif; }

就可以简写成:

#container{ font-family:Georgia, serif; }

 

5. 使用多重选择器

  你可以合并多个CSS选择器为一个,如果他们有共同的样式的话。这样做不但代码简洁且可为你节省时间和空间。如:

h1{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h2{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

可以合并为

h1, h2, h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

 

6. 适当的代码注释

代码注释可以让别人更容易读懂你的代码,且合理的组织代码注释,可使得结构更加清晰。你可以选择做的样式表的开始添加目录:

/*------------------------------------
    1. Reset
    2. Header
    3. Content
    4. SideBar
    5. Footer
  ----------------------------------- */

  如此你代码的结构就一目了然,你可以容易的查找和修改代码。

  而对于代码的主内容,也应适当的加以划分,甚至在有必要的地方在对代码加以注释说明,这样也有利于团队开发:

/***	Header	***/ 
#header{ height:145px; position:relative; }
#header h1{ width:324px; margin:45px 0 0 20px; float:left;  height:72px;}

/***	Content	***/
#content{ background:#fff; width:650px; float:left; min-height:600px; overflow:hidden;}
#content h1{color:#F00}/* 设置字体颜色 */
#content .posts{ overflow:hidden; }
#content .recent{ margin-bottom:20px; border-bottom:1px solid #f3f3f3; position:relative; overflow:hidden; }

/***	Footer	***/
#footer{ clear:both; padding:50px 5px 0; overflow:hidden;}
#footer h4{ color:#b99d7f; font-family:Arial, Helvetica, sans-serif; font-size:1.1em; }

 

7. 给你的CSS代码排序

如果代码中的属性都能按照字母排序,那查找修改的时候就能更加快速:

/*** 样式属性按字母排序 ***/
div{
    background-color:#3399cc;
    color:#666;
    font:1.2em/1.4em Arial, Helvetica, sans-serif;
    height:300px;
    margin:10px 5px;
    padding:5px 0 10px 5px;
    width:30%;
    z-index:10;
}

 

8. 保持CSS的可读性

  书写可读的CSS将会使得更容易查找和修改样式。对于以下两种情况,哪种可读性更高,我想不言而明。

/*** 每个样式属性写一行 ***/
div{
    background-color:#3399cc;
    color:#666;
    font: 1.2em/1.4em Arial, Helvetica, sans-serif;
    height:300px;
    margin:10px 5px;
    padding:5px 0 10px 5px;
    width:30%;
    z-index:10;
}

/*** 所有的样式属性写在同一行 ***/
div{ background-color:#3399cc; color:#666; font: 1.2em/1.4em Arial, Helvetica, sans-serif;  height:300px; margin:10px 5px; padding:5px 0 10px 5px; width:30%; z-index:10; }

当对于一些样式属性较少的选择器,我会写到一行:

 

/*** 选择器属性少的写在同一行 ***/
div{ background-color:#3399cc; color:#666;}

 

对于这个规则并非硬性规定,但无论您采用哪种写法,我的建议是始终保持代码一致。属性多的分行写,属性少于3个可以写一行。

 

9. 选择更优的样式属性值

  CSS中有些属性采用不同的属性值,虽然达到的效果差不多,当性能上却存在着差异,如

  区别在于border:0把border设为0px,虽然在页面上看不见,但按border默认值理解,浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值。
  而border:none把border设为“none”即没有,浏览器解析“none”时将不作出渲染动作,即不会消耗内存值。所以建议使用border:none;

  同样的,display:none隐藏对象浏览器不作渲染,不占用内存。而visibility:hidden则会。

 

10. 使用<link>代替@import

首先,@import不属于XHTML标签,也不是Web标准的一部分,它对于较早期的浏览器兼容也不高,并且对于网站的性能有某些负面的影响。具体可以参考《高性能网站设计:不要使用@import》。所以,请避免使用@import

 

11. 使用外部样式表

  这个原则始终是一个很好的设计实践。不单可以更易于维护修改,更重要的是使用外部文件可以提高页面速度,因为CSS文件都能在浏览器中产生缓存。内置在HTML文档中的CSS则会在每次请求中随HTML文档重新下载。所以,在实际应用中,没有必要把CSS代码内置在HTML文档中:

<style type="text/css" >
    #container{ .. }
    #sidebar{ .. }
</style>

或

<li style="font-family:Arial, helvetica, sans-serif; color:#666; " >

而是使用<link>导入外部样式表:

<link rel="stylesheet" type="text/css" href="css/styles.css" />

 

12. 避免使用CSS表达式(Expression)

  CSS表达式是动态设置CSS属性的强大(但危险)方法。Internet Explorer从第5个版本开始支持CSS表达式。下面的例子中,使用CSS表达式可以实现隔一个小时切换一次背景颜色:

background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );

  如上所示,expression中使用了JavaScript表达式。CSS属性根据JavaScript表达式的计算结果来设置。

  表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。

  如果必须使用CSS表达式,一定要记住它们要计算成千上万次并且可能会对你页面的性能产生影响。所以,在非不得已,请避免使用CSS表达式。

 

13. 代码压缩

  当你决定把网站项目部署到网络上,那你就要考虑对CSS进行压缩,出去注释和空格,以使得网页加载得更快。压缩您的代码,可以采用一些工具,如YUI Compressor

利用它可精简CSS代码,减少文件大小,以获得更高的加载速度。

 

14. 总结

  在本文中,我力图更详尽的总结书写更高效的CSS代码的原则,但鉴于本人见识和精力有限,我还是希望这些原则能帮助您更好的书写和管理您的CSS代码,不知您又是如何书写CSS的,是否也有一些想要分享的技巧?给我留言吧谢谢~

本文地址:http://www.cnblogs.com/wiky/articles/better-css-code.html

PS:本文由维奇总结,如有转载请注明出处,谢谢!

 

参考资料:

WRITE BETTER CSS WITH BEST PRACTICES

10 Tips for Writing Better CSS

5 Ways to Instantly Write Better CSS

 

原文:http://startwmlife.com/the-inspiration-of-ten-exquisite-navigation-menu-and-tips/
这些导航菜单来自于Dribbble网站,出自于世界各地的优秀设计师之手,涵盖了各种不同的风格,个个都非常精美。这里我将这些导航菜单展示出来,依据自己的想法总结它们的可取之处,演示其中一些用得上的技术方法。这样比起简单粗略的看过就忘,更能在网页设计上让我们获取很多的灵感,提高我们的设计水平。

一、木质页面上的抽屉创意

idea.jpg

不看这个案例话,你能想到将木质页面上的导航菜单做成类似这样抽屉式的样式吗?我自己反正是没想到,这就是值得学习的创意。我们不要一做导航菜单就想也不想的画一个直角或者圆角的矩形背景,将文字放在上面,用竖线隔开文字。这就落入了程式化的束缚之中了。

看过这个案例后,你可以明白一点,就是根据已有的东西(这里是木质的页面材质)去展开思考元素样式的可能性。以这个案例为例,你可以思考一下在一个木质的页面上,如果能将抽屉的开合作为导航菜单的两种状态的话,那么暂时不考虑技术上的实现问题,还可以通过什么样式来实现?弹孔?刻痕?油漆?这里你就可以放开你的想象力了,这时候就是创意迸发的时刻。有了创意之后再考虑技术的问题,而不能让技术上能否实现限制住了我们的想象空间。

关于木质材质的创建我建议使用素材来实现,高分辨率的素材不仅细节丰富而且风格多样,上图的材质属于比较细腻的风格,这样的素材其实有很多,一搜一大把,但是关键在于平时的积累,有了不同风格的素材在手边,实现这样的效果其实非常快。

二、重复和对比原则的应用

shot_1299591419.jpg

垂直导航也是网页设计中常见的设计元素。在上面的设计中,我们能够看到设计师对于重复和对比原则的充分理解和应用。其中,一级导航的样式都很类似,左边是文字,右边是简洁的小图标,每个图标虽然不同,但是风格都是统一的,这正是多样性的重复原则。所以这些父导航按钮会让人感觉是平等而有某种联系的。而当前所在的位置以非常醒目饱和度较高的黄色显示,明显区别于一般状态的导航按钮,让访问者清楚的知道自己当前所处的位置,提高了用户体验并且增强了设计感。子导航既然和父导航不属于同一层次,那么必然要在视觉上和父导航有所区别,所以在背景颜色和文字颜色以及样式上你就能看到这种差别所在。

另外,我将这个导航按钮重新做成了PSD文件,放在这里供大家下载,你可以学习一下如何使用杂色滤镜、图层样式来实现这样细腻的导航菜单,以及如何使用铅笔工具以像素级的标准画出文字旁边那个小小的三角图标并且还要给它应用图层样式。以下是PSD文件预览图。

vertical-navigation.jpg

下载

三、每一个元素都是有用的

a.png

想象我们从一张空白的白色文档开始设计一个页面的导航。首先添加链接文字,为了让文字颜色和白色的页面对比不过于强烈刺眼,我们决定不用黑色而使用灰色。这里我们将文字行距拉开,让留白区域更多一些,目的是让页面保持透气感和干净的感觉。

各个导航栏目如果只是文字的话看上去过于类似,所以为了让它们在保持相似性的同时而有所区别,我们给每一个栏目的左侧添加上了风格简洁的图标,选择这种风格的图标一是符合页面本身干净的感觉,另外一点的考虑是图片和文字内容的关联性。我们不打算让图标比文字还吸引眼球,所以我们让它们保持比文字还浅的灰色。白色的页面上如果仅仅放上导航内容的话感觉结构不够整齐,因为没有实际上的线条来束缚视线,所以这里我们给每一个导航栏目添加非常浅的灰色水平线和垂直水平线,这种隐隐约约的线条既可以加强排版,还不至于让页面看上去条条框框过多,阻碍视线的游走。

接下来就是鼠标悬停的效果了,这要和菜单本身的状态有较大的视觉差别,所以这里我们将文字和背景颜色更改为清爽的绿色和灰色,灰色是为了让整个页面的颜色统一,而绿色是唯一跳出整个灰色页面的颜色。这样就让页面在颜色上有了亮点,而不至于让人感觉页面上灰蒙蒙的一片。背景的材质上添加了杂色,这样看上去更加柔和,而不是光亮的冷冰冰的感觉。这基本上就是我们设计这个导航的整个考虑过程。

这样你就看到了,这里的每一个元素和细节的应用都是经过充分考虑的,而且没有一个多于的东西无缘无故的存在,这就是简洁风格的设计理念。

四、强质感的高光风格

appui.png

这个例子中的导航和我上一篇日志《强质感高光风格网页欣赏及其表现手法总结》中提高的风格比较类似,技术方法也非常简单,你可以去那篇日志中下载我做好的PSD文件,学习一下如何实现这样的效果。

五、温暖柔和的画面

shot_1301178085.png

导航菜单周围一圈略深于背景色的描边让导航和背景融合的更加自然。整个导航的颜色和底部的大约10个像素的阴影让整个导航条看上去更像是电脑键盘上的一个个按键。这个案例设计师提供了PSD文件,你可以自己尝试一下创建这样的导航效果。

下载

六、细节决定成败

menu-notification.jpg

这和苹果系统上程序图标上的数字提醒很像。虽然这样的数字提醒放在导航上非常漂亮,但是实际功能性却值得商榷,但它不妨碍我们学习到一点,那就是即使这样简单的导航,在细节上也是十分讲究的,从那小小的2字的圆形背景上你就能看得出来。图层样式中的高光、阴影、渐变、描边一个都不能少。另外为了和灰色页面的色调搭配,这些数字背景的红色、黄色和蓝色都选择了饱和度偏中间调的颜色,因为灰色本身也是介于黑色和白色中间的色调。

下载

七、有关主题的创意

kol_dribbble.jpg

这是一个有关电影剧场的网页设计。所以设计师在导航部分使用了这种类似于电影票的纸质的背景图片,并且添加上了水迹的笔刷效果,让细节更为丰富。在导航条的右下方,还加上了淡淡的阴影,让其和页面保持一定的距离,加强了导航菜单的纸质的感觉。有关这样的阴影的创建,你可以在《在Photoshop中创建内容盒阴影效果》这篇日志中找到详细的方法。和案例1类似,创建一个这样的关于电影剧场的网页设计,如果展开联想的话,你会有很多关于电影剧场的设计上的创意,这种以电影票为导航背景只是其中的一个例子而已。

八、自然质朴的布制风格

shot_1286904854.jpg

两条水平的白色虚线和一条灰色的垂直线仿佛是缝在布上的线脚。这种风格给人一种自然以及手工的感觉。创建这样的线脚并不难,直接用文字工具键出虚线,调整字体、大小以及间距就可以了。关键点在于页面边缘弯折的那部分,要注意绿色带子弯折后的透视关系,需要将其向下移动一定的距离。

九、让色彩从页面跳出

vectips_navigation.png

在偏向于黑色的页面背景上有这样鲜亮的绿色跳出会非常吸引视觉注意力。再加上好像用大头针钉在页面上的独特样式,更是和页面本身增强了对比,所以如果这样的下拉菜单展开的话,你会忍不住将鼠标移动到其它菜单上试试效果,如果同时你能关注到导航内容的话,设计者的目的就达到了。

十、互补色营造鲜明视觉

shot_1286921565.png

细腻的斜纹背景创建起来非常简单,只需用铅笔工具以1像素的粗细创建好图案,保存后在图层样式中应用图案叠加就可以了。关于这种背景的创建我在之前写的《在Photoshop中创建多种样式的网格背景图案》这篇文章中详细讲过,你可以参考这篇日志自己动手创建。

这里值得一提的是案例中的冷色背景色和暖色的文字和图标颜色的使用,橙色和青绿色属于互补色,青绿色作为背景色饱和度很低,而橙色的饱和度非常高,通过对比让图标和文字看上去非常醒目同时又非常和谐。所以如果你打算在设计中使用互补色的话,不要同时调高两种颜色的饱和度,这样会使视觉向两边拉扯,而应该有所主次,通过将一种颜色的饱和度降低,再加入相应的白色或者黑色和另外一种饱和度较高的颜色搭配,就像这个案例向我们展示的那样。

 
An often overlooked feature of HTML5 is the new “onpopstate” event.

This new feature offers you a way to change the URL displayed in the browser* through javascript without reloading the page. It will also create a back-button event and you even have a state object you can interact with.

This means you won’t have to use the hash-hack anymore if you want add state to your AJAX-application, and search engines will be able to index your pages too.

So how does it work? Well, it’s fairly simple. In Chrome you write:

window.history.pushState(“object or string”, “Title”, “/new-url”);

Executing this line of code will change the URL to my-domain.com/new-url (3rd option). The “Title” string (2nd option) is intended to describe the new state, and will not change the title of the document as one might otherwise expect. The W3 documentation states:

“Titles associated with session history entries need not have any relation with the current title of the Document. The title of a session history entry is intended to explain the state of the document at that point, so that the user can navigate the document’s history.”

So if you want the document’s title to change to match the title of the history entry, you’ll need to write a hook for that (hint: just tie a function to the onpopstate event). Finally, “object or string” (1st option) is a way to pass an object to the state which you can then use to manipulate the page.

You can programmatically invoke the back-function by running:

window.history.back();

And you can of course go forward too:

window.history.forward();

Or even go to a specific history state:

window.history.go(2);

The object you pass as the first option to the pushState function will stay with each state, so if you go back in the history, you’ll get the object for that state. If you need to manipulate a state (instead of creating a new one) you can use:

window.history.replaceState(“object or string”, “Title”, “/another-new-url”);

Note that while this will change the URL of the page, it will not allow the user to click the back-button to go back to the previous state because you’re replacing the current state, not adding a new one. So, this is the correct behaviour.

Personally, I think the URL should be the first parameter and then the two other options should be optional. Regardless, this feature will certainly come in handy when working with AJAX- and Flash-applications that need state (read: bookmarkable pages and back-button support). Anyone looking to make their Flash- or AJAX-application indexable by search engines so they will get better raking in Google and the likes, should also have a look at this new feature.

The most prominent implementation of this HTML5-feature that I’ve seen is in the new Flickr layout. Here’s an example page (remember to enable the new layout if you haven’t already). Now, if you’re using the latest version of Chrome or Safari and click one of the sets, e.g. “Strobist”, it will slide open and the URL will change but you’ll notice that the page doesn’t reload.

It’s worth noting that Flickr uses replaceState instead of pushState – in other words, they don’t add a back-button event. I’m guessing they feel that switching back and forth between opened/closed sets is too small a change for a back-button event (I’d certainly agree with them on that decision), so instead they just replace the URL so if you copy/paste the link to a friend, they’ll see the exact same page that you did.

Another interesting thing is how Flickr still use the old hash-hack as a fallback if you’re running on browsers that don’t support this new HTML5-feature. I predict/hope that a lot of the plugins that help you easily implement the hash-hack will bake this into their core so people with new browsers can start reaping the benefits.

The latest versions of Chrome and Safari already have support for “onpopstate” and Firefox 4 will have support for it as well. Unfortunately, it seems like IE9 won’t be supporting this feature if we are to believe this Wikipedia article (“Trident” is IE’s layout engine).

Check out the W3 specification for more info.

* For security reasons, you can only change the path of the URL, not the domain itself. So you can change anything in the URL after my-domain.com/[change-the-stuff-here.html].

 
译文地址:http://coolshell.cn/articles/1245.html
这个网页(http://haslayout.net/css/index)上例举了所有的IE和CSS相关的BUG。如果你在开发网页的时候,你需要看看。

目前,这个网站上包含了 28 个“普通的Bug”4 个“布局方面的Bug”6 个“可以绕开的Bug” 以及 1 个“IE崩溃的Bug”,所有的这些Bug有39个指南和48个解决方法。这个列表目前更新到 2009年8月11日,19:50:22

下面是所有的bug列表,你可以点击每个BUG名的链接查看更详细的说明。

普通Bug

这部分 IE 的 bug 是比较普通的无法归到其它种类,或是同时属于多个种类的Bug。

名称 IE的版本 描述
Hover White Background Ignore Bug IE7 background 不会因为 :hover而改变
IE7 Child Selector Comment Bug IE7 一个 selector 包含了一个子的selector,如果后面跟着一个注释,则会被完全忽略。
Star HTML Bug IE6 * html selector 在 IE6 中没有被忽略
IE6 !important Ignore Bug IE6 !important 关键字会忽略,如果有相同的属性被设置了
PNG Image and Background Color Mismatch IE8 及以下版本 背景颜色和指定的图片的颜色不一致。而他们本来是一致的。IE认为这是他一个Feature。太可笑了。
No Auto Margin Center Pseudo-Bug IE8 及以下版本 如果把margins 设置成 `auto` ,IE不会把组件放置在中间的位置。所有的浏览器都会,只有IE不会。
:first-line !important Rule Ignore Bug IE8 如果在伪class :first-line 内使用!important,那么其所有定义会被忽略。
:first-letter Ignore Bug IE6 整个:first-letter 的属性定义会被除数完全忽略。
:first-letter !important Rule Ignore Bug IE8 如果在伪class :first-letter内使用!important,那么其所有定义会被忽略。
Partial Click Bug v2 IE8以 设置了整个区域是可以点击的,但在IE中只有文本可以点击。
Staircase Bug below IE8 浮动的元素排序起来就像一个楼梯。
Disappearing List Background Bug IE6 B <li>, <dt>, <dd> 没有背景。
noscript Ghost Bug IE8 and below <noscript> 标识中只有 borders/background 才有用。
No Transparency Click Bug IE8 and below 背景透明的图片在作为链接时,并且其“filter”被设置成了PNG透明,但其背景还是不可点击。
List Drop Shift Bug IE8 在<li>中的内容被换行了。
No Increase on <ol> Numbers Bug below IE8 <ol> 中的 <li> 列表序号不会增加。
No Bullets on <ul> and <ol> Bug below IE8 在<ul> 和 <ol> 中看不到列表序号/数字了。
No line-height Vertical Center on Images Bug IE8以下版 图片使用line-height 方法不能垂直居中
No Background Image Bug IE8及以下版 在IE中使用background无法定义背景图
Custom Cursor Bug IE8及以下版 自定义鼠标不工作
Leaking Background Bug IE6 背景从一个元件的内部溢出到外部
Expanding Height Bug IE6 元件的高度比指定的要长得多。
Expanding Width Bug IE6 元件的宽度比指定的要长得多。
Double Margin Bug IE6 float元件的左和右的空白(margins)被加倍了。
Negative Margin Bug IE8以下版 如果使用负数来指定页白(margins)里面的元件会被外面的元件所遮挡。
Italics Float Bug IE6 float的元件中的字体会被设置成倾斜。
3px Gap Bug aka Text Jog Bug IE6 下一个float的元件不是有一个3px的空隙,就是被换行了。
Text-Align Bug IE8以下版 text-align属性会影响整个元件内的所有内容。

布局类 Bug


名称 IE的版本 描述
Border Chaos Bug IE6 连框显示是混乱的
Sub-Hover Bug IE6 一些selectors 如 a:hover foo{} 无法正常工作
Partial Click Bug IE6 在定义了display: block的链接中(<a>) 只有文本是可以点的。
Disappearing Content Bug IE6 当我们滚动窗口的时候,或是最大化最小化窗品的时候,有一些内容会重复显示。

不支持的功能

名称 IE的版本 描述
No Child Selector Support Workaround IE6 子 selector 无效
Max-Height Workaround IE6 max-height 无效
Max-Width Workaround IE6 max-width 无效
Opacity IE8及以下版 opacity 属性无效
Min-Width Workaround IE6 min-width 属性无效
Min-Height Workaround IE6 min-height 属性无效

程序崩溃 Bug

这个BUG可以导致整个 IE 崩溃。

名称 IE的版本 描述
Hover Crash Bug IE6 当你把鼠标移上 :hover 的链接时,浏览器会崩溃

(全文完)

 

Creative Radical Web Typography

New FancyMoves Jquery Product Slider

Jquery Space Gallery

Fancy Thumbnail Hover Effect

Jquery Inline Form Validation

Site Switcher

AnythingSlider

Jquery Tooltip Coda Bubble

Jquery Upload and Crop Image

jQuery Carts

Twitter-like login box

Polaroid Photo Viewer

jquery Hover Sub Tag Cloud

Graph Visualization

Show/Hide Jquery Panel

Drop Down with CSS and jQuery

Quick & Easy Zooming With jQuery – Zoomy

Horizontal Accordions

Flexible Rating


原文:http://www.topdesignmag.com/20-useful-jquery-plugins-every-developer-should-know-about/

 

Home Blog Delicious Github Flickr About Contact

© Miclle.Zheng . Powered by Forest Chalet