Life Need More COLOR :)

OverFlow – 一个秘密武器4

如果你已经理解了block formatting contexts那么请继续,否则请先看看这篇文章

Overflow能够做一些很牛掰的事情,比如:

  • 创建BFC (block formatting contexts via W3c css2.1)
  • 清除浮动

生成块级元素

overyflow属性一旦被指定,那么一个新的BFC就被创建了。这意味着什么呢?它改变了block和浮动元素的交互方式。它不再围绕浮动元素,而是变成一个narrower。

[P没有用overflow]你可以把一个页面想象成大的集装箱,这个集装箱里装的货物就是HTML元素。在现实生活中为了避免 不同人的货物相互混淆,都是把货物打好包装再装入集装箱,这样的话无论你包装里面的货物怎么摆放,都不会影响到其他人的货物。

 

[P有用overflow:hidden]你可以把一个页面想象成大的集装箱,这个集装箱里装的货物就是HTML元素。在现实生活中为了避免 不同人的货物相互混淆,都是把货物打好包装再装入集装箱,这样的话无论你包装里面的货物怎么摆放,都不会影响到其他人的货物。

这不是一个hack,在w3c标准中有明确的说明:

The border box of a table, a block-level replaced element, or an element in the normal flow that establishes a new block formatting context (such as an element with ‘overflow’ other than ‘visible’) must not overlap any floats in the same block formatting context as the element itself.

那么该如何学以致用呢?

拥有新FC( formatting context)的块级元素会占去一行中所有的剩余空间,只给定位了的浮动元素留下空间。在原文作者的开源项目OOCSS中,有两种方式去使用FC:

主内容列 -添加FC意味着主内容列将占去除左右列之外的所有空间。这意味着,在一个模板下,只需简单的删除多余的那列,不用做其它任何更改你就可以很轻易的将布局从三列变为两列。CMS开发者会非常喜欢这个特性的。

在Firebug下玩玩这个模板

  1. 试着将“liquid”class增加到“page”元素中。
  2. 从HTML中添加或删除一列。
  3. 用文档中列出的附加class去扩展一个列对象。
  4. 尝试在Firebug中直接改变列的宽度。

网格 -任何开发过网格系统的人都知道sub-pixel舍入错误所带来的痛苦。浏览器不知道如何处理33.3像素,所以他们都会做不同的事情。YUI利用“列”之间的“槽”解决了这一差异,但我们也可以在单元内部隐藏这一差异。

一个新的BFC可以用来隐藏网格任何一列最后一个单元的尺寸误差。试试这个网格,你会发现当你修改单元的尺寸时,最后的单元会自动伸缩,以适应差异。它没有宽度,而且如果拥有新的BFC,它也不会环绕浮动元素。

清除浮动

你肯定听说过清除浮动这码事。人们一直在探讨通过overflow的属性来清除浮动 。有些人认为它是hack,但仔细阅读规范你会发现,规范作者也没能明确它。因为它的最终解释权归浏览器厂商。

为了计算出什么溢出了容器(这些范围应该被隐藏),他们需要知道块的大小。由于这些块都没有给出明确的高度设置,于是浏览器就使用了从块内容中计算出的高度。欲了解更多关于清除的内容 ,请看我和Eric Meyer在她博客里的讨论

注意事项

溢出可以太大内容(如巨大的图片,pre区域,或表格之类),我现在尝试overflow: auto,到底使用哪个还需要权衡。

PS: 终于把这篇文章放出来了,其实已经躺在我电脑里好久了,当初答应涛哥翻译的 ,结果拖了这么久实在惭愧。水平所限,文中还有些地方译的很牵强,或者不好理解,希望大家能帮忙指正。原文地址:http://www.stubbornella.org/content/2009/07/23/overflow-a-secret-benefit/

HTTP Headers 入门25

非常感谢 @ytzong 同学在twitter上推荐这篇文章,原文在此

本文系统的对HTTP Headers进行了简明易懂的阐述,我仅稍作笔记。

什么是HTTP Headers

HTTP是“Hypertext Transfer Protocol”的所写,整个万维网都在使用这种协议,几乎你在浏览器里看到的大部分内容都是通过http协议来传输的,比如这篇文章。

HTTP Headers是HTTP请求和相应的核心,它承载了关于客户端浏览器,请求页面,服务器等相关的信息。


More »

jQuery性能优化指南14

现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,  比如我.  jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了<jQuery Performance Rules>这篇文章, 简单的摘译了一下:

  1. 总是从ID选择器开始继承
  2. 在class前使用tag
  3. 将jquery对象缓存起来
  4. 掌握强大的链式操作
  5. 使用子查询
  6. 对直接的DOM操作进行限制
  7. 冒泡
  8. 消除无效查询
  9. 推迟到 $(window).load
  10. 压缩js
  11. 全面掌握jquery库

More »

优秀的XHTML代码看起来是什么样子的8

beautiful_html_code

CSS Hacks & Issues2

Author: Chris Thomas ;Translater: Robin

目录

  • 介绍
  • 针对浏览器的选择器
  • 让IE6支持PNG透明
  • 移除超链接的虚线
  • 给行内元素定义宽度
  • 让固定宽度的页面居中
  • 图片替换技术
  • 最小宽度
  • 隐藏水平滚动条

More »

CSS梯度文本效果(CSS Gradient Text Effect)9

注:本文由Robin翻译自webdesignerwall (这个标题不知道该怎么翻译好, 希望大家能提提意见.)

screen2
More »

包起来–懒人用jQuery生成的HTML0

15 Days of jQuery(Day 5)—包起来–懒人用Jquery生成的HTML

这个让我们轻松的纪念日已经到来–我恨我在计算机前已经花了48个小时,我希望能够有另外一个jQuery来结束我的噩梦,并且让我上网更快。
当我一边“在用Jque More »

安全邮件列表2

15 Days of jQuery(Day 4)—安全邮件列表

规则提到如何防止垃圾邮件:不要把你的邮件地址放到任何一个mailto:链接中.
在与垃圾邮件恶魔做斗争的过程中我们的网页设计师和程序员总结出了一些有创意的解决办法,让我们快速的看一些这些常见方法的缺点(或多或少有一些).
name [at-no-spam] website.com
More »

巧妙的伪装链接2

15 Days of jQuery(Day 3)—巧妙的伪装链接

今天的教程是草草完成的.我想把一些东西放在这15天的前面简单的讲讲,这样以来就可以使一些js新手不至于被一堆代码搞的晕头转向.事实上我是在即将结尾的时候才做出的这个决定.

More »

很容易的制作双色表格0

15 Days of jQuery(Day 2)—很容易的制作双色表格

这节本身没有太多的价值,重点在它提供的这个例子上。我将代码帖出来然后对重点部分注释一下:
我们先来看看[url=http://www.thewatchmakerproject.com More »