新的表单控件
复选框

WebKit 的第一个新表单控件刚刚在最新的 WebKit 代码树中启用。因为它是最简单的控件,所以我首先转换了复选框。这个新控件可以通过 CSS 完全自定义样式,因此你可以精确决定复选框的选中、悬停、按下、聚焦和禁用状态的外观。

所有即将推出的表单控件的基本思想是,引擎实现控件的行为和逻辑,如果需要原生(即 Aqua)外观,则由主题 API 进行绘制。原生外观通过一个新的实验性 CSS 属性 -webkit-appearance 进行控制。你只需将此属性的值设置为 none,即可将小部件变成一个空白画板。

一些控件在自定义到一定程度时(例如,如果你设置了按钮的边框和背景),其 Aqua 外观将自然失效,即“跌落悬崖”。而其他控件,如复选框,则会拒绝“跌落悬崖”,除非你明确关闭 -webkit-appearance 属性。何时禁用 Aqua 外观的选择将与其它浏览器(特别是 Internet Explorer)保持一致。

Safari 中的新复选框默认是行内块元素。因此,你可以设置边框、背景图片和背景颜色。引擎中已增加了对 :enabled:disabled:checked 伪类的支持,这样你就可以轻松编写 CSS 规则来改变复选框在相应状态下的外观。

为了使复选框在选择和鼠标跟踪方面表现良好,我还修复了 Safari 中一直困扰 contentEditable div 用户的一个 bug,即当你在图片、链接、按钮和控件上按下鼠标时,选择会被清除。现在这个 bug 已经修复,因此当你在此类对象上按下鼠标时,选择将不会被清除。