Archive for August, 2008

CSS3中的“模糊匹配”

Friday, August 29th, 2008

上次简单介绍了 :not() selector ,这次说说 CSS3 新增的另一种选择器。那大概能被称作 “模糊匹配” ,符号也应该算是 “通配符” 吧?我对概念和术语掌握得不好,请莫见怪。

CSS2 的选择器中,唯一的通配符是星号(*),用于选择所有元素或所有某类子元素;其它符号(用来hack的不算在内)如加号(+)和波浪线(~)都比较少见,用法也不赘述了。CSS3 不但加强了星号的运用,还引入了两个新的符号:

  • 星号(*)- 关键字段包含于任意位置
  • 脱字符号(^)- 关键字段包含于起始
  • 美元符号($)- 关键字段包含于末尾

不懂?对不起。。。表达能力太差了。。希望例子能让您理解多一点:

# 用 "*" 定义所有包含 "google" 的链接文字为粗斜体

a[href*="google"] {font: italic bold;}

效果:

# 用 "^" 定义所有 https(精确以 "https" 开头的)链接文字为粗

a[href^="https"] {font: italic bold;}

效果:

  • <a href="https://google.co.uk/reader">Google Reader</a>
  • <a href="https://www.google.com/mail">Gmail</a>
  • <a href="http://www.google.com/mail/">Gmail</a>

# 用 "$" 定义所有精确以 "reader" 结尾的链接文字为粗

a[href$="reader"] {font: italic bold;}

效果:

脱字符号(^)和美元符号($)的用法与正则表达式的差不多,只是在 CSS3 中它们不能被同时用在一头一尾,因为 CSS2 的选择器无须这两个符号已能作精确匹配。

如果还是不懂,请千万别怀疑自己的智商。。来骂我吧,再次对不起。。。。 如果您能看明白,想必也能举一反三,灵活运用这三个选择器。

WordPress 2.7 后台的新布局

Wednesday, August 27th, 2008

WordPress 2.7 hemorrhage 的后台将重新布局,新 layout 有不少改进。下面是几个亮点:

Screenshot #1 Screenshot #2 Screenshot #3 Screenshot #4

# 全屏自适应宽度

自 WordPress 2.5 以来的 980px 最大宽度一直被用户所诟病,1000字节不到的 Remove Max Width 插件能被评为五星级就可见一斑,但随着 WP 2.7 的到来,此插件可以荣休了。

# 起用居左的树型菜单

很多人都觉得 WordPress 后台的二级菜单太烦人,所以省下不少鼠标点击的 Admin Drop Down Menu 也是备受推崇,同样被评为五星。该插件最近再次更新,添加了 options 页面和 famfamfam 的 Silk 图标。WP 2.7 虽然把功能菜单移到左则栏(如图1),但仍然死性不改的要求用户点击第一级来展开第二级,还好想必 Ozh 定会及时更新他的得意之作。

# New Post/Page 页面完全模块化

WordPress 2.5 或 2.6.x 里,该页面只可以收起或展开各个模块(标题及内容除外),Custom Fields、密码和开关评论等不常用的模块很是碍眼却不能移除。WP 2.7 已可以自由选择显示哪些模块,可拖动实现重新布局,并且保留了原来的收起/展开特性(如图2)。

# AJAX 化的文章、页面及留言管理

在文章和页面列表页里,以前要点击标题进入编辑,勾选文章/页面然后从下拉菜单里选择删除,操作很不直观。WP 2.7 已经在标题下面添加了 “编辑” 和 “删除” 两个选项。而留言列表页则在每一条留言下面添加了完整的操作选项,还能 inline 回复留言(如图3)。今后我宁愿集中在后台管理留言,也要弃用 WP Ajax Edit Comments 了。

想了解 WordPress 2.7 后台以外的其它改进,可参阅 denis 的文章

Updated (2008-08-28):

# Dashboard 支持快速发布

若撰写简短文章(如aside),现可于 dashboard 进行快速发布,可填写标题、正文内容、标签,可保存为草稿或即时发布。(如图4

CSS3的:not()选择器

Monday, August 25th, 2008

参考自 Kilian Valkhof 的文章

你有想过PHP里等号前的那个叹号能用在CSS中吗?CSS3已经实现了。不说废话,看实例:

# 除 .foobar 以外的所有 <div> 的背景为黑色

div:not(.foobar) {background: #000;}

# 除 .foo 和 .bar 以外的所有 <h2> 的文字颜色都为 #ccc

h2:not(.foo, .bar) {color: #ccc;}

# 定义所有在<p>外面、<div>里面的<em>为正体(而非斜体)

div:not(p) em {font-style: normal;}

这样,<div><p><em>Italic</em></p></div> 是斜体,而 <div><strong><em>Normal</em></strong>< /div> 或 <div><em><p>Normal</p></em></div>则不是斜体了。

# 除了上传文件所用的 <input> ,其它 <input> 都隐藏起来

input:not([type="file"]) {display: none;}

# 从第二行开始,所有字母都大写(Firefox3尚未支持)

div:not(p::first-line) {text-transform: uppercase;}

没错,还能用于 pseudo,上面的例子正与 div p::first-line 相反。

:not() 也可以灵活运用在 WordPress 模板设计中,例如用于区分普通 comment 和 trackback/pingback。这个 selector 运用起来需要一点逆向思维,但其实要习惯适应它完全不难,只是CSS3的普及需要IE的市场分额乖乖的持续下降就是了。

关于CSS3,推荐阅读 http://www.css3.info