On Styled Form Elements

100
TaoAlpha
2014-08-151786 words6 minutes to read

今天给feedpusher加了random item的功能, 随机出的一文, 觉得还算不错, 所以就翻译一下. 原作者主要介绍了下对input,form元素的样式定义历史, 从以前的类型少但自定义空间大, 到现在类型多, 可自定义空间反而变小了. 不能完全确认作者的心态是积极还是消极, 不过略有点怅然所示的感觉, 毕竟可控的地方变少了, 确实让创造的感觉变弱了.

==============正文============

20多年来, 我们一直用着几乎同样的input和form元素: 文本输入框, 密码类型,下拉框, 单选框, 复选框, 文件管理框, 隐藏域以及不同类型的button: submit, reset, image以及默认的button.

一直以来, 我们使用的这些input元素都是伴随着操作系统或者浏览器内置的样式. 遗憾的是, 我们已经差不多研究出来如何对抗这些默认样式, 从而对这些基础的或者高级的元素应用我们自己的样式的方法了(高级和低级区别主要在于伪类–译者附).

自定义样式通常意味着要使用background-image, 伪类, 还有各种奇怪的前缀修饰, 选择性的隐藏特定的元素. 限于篇幅原因本文不会介绍各种技巧, 但是这些input元素以及他们应用的复杂性都无疑放大了跨浏览器和平台的问题. 每一种浏览器和操作系统的组合都使用着自己的样式和功能, 其中有一些很难去控制(应该是说很难覆盖重写样式–译者附), 而它们之间都是不一致的.

虽然从样式上来说, input元素相当的复杂… 但是这些元素本身的交互形式确实非常简单的–点击, 输入, 点击其它元素. 交互的简单就允许我们对样式的定义有更多一点的追求, 来获得更好的体验. 基本只有下拉框因为带有选项列表, 所以交互形式更加高级(繁琐)一些.

随着web技术的发展, 我们对于更好的界面体验有了更多的渴求. 我们创造了多JS的组件, 来提升基础的input元素的使用体验(比如datepicker, jqueryUI), 这也确实起到了一段时间的作用, 直到2007年现代移动互联网时代爆发, 改变了所有事情.

环境的变化产生了交互的变化, 我们本来很可爱的日历样式的日期选择组件在3.5-inch的触摸屏幕上就变成了赤裸裸的噩梦, 甚至是那些下拉框都需要重新思考其交互形式.

iPhone默认的下拉框是一个满屏宽的滚轮界面, 就其尺寸来说交互形式非常自然. 虽然说它不算是完美的界面, 尤其是当选项超过了10左右(千万不要让我从选择国家的列表开始啊…), 但是本身已经是一个相当大的改进了.

Apple Select

Android的下拉框也是类似的处理方式,只是形式上略有不同–如下:

Android select

下例是一个iOS内置的日期选择器–由三个下拉框组成, 这就比直接在移动端使用原来日历样式的那个好很多了.

iOs date

标准的select元素在这些设备上的支持做的都很好, 但是我们却无法在网页上直接使用这些系统原生自带的组件, 比如iOS的日期选择. 幸运的是, HTML5给我们带来了一些全新的input类型. 比如date以及range类型, 都得以让浏览器和操作系统处理更加附加的交互形式. Apple很快就在iOS5中引入了date的支持, 并且给了我们在网页上直接调用iOS date picker的能力.

正是因为对这些新的input类型的支持, 我们如今已经可以使用这些丰富的类型, 只需要在适当的时候给予一些容错, 或者至少是一些友好的提示–对于不支持的input类型, 会自动变成文本框. 下拉框和日期选择都只是一个简单的例子, 表明系统正在更好地处理元素–毕竟设备本身总是能够更好决定自己的用处而不是不可知的网络.

过去只有简单交互形式的input元素给了我们试验的空间, 但是如今复杂的元素交互形式却给我们留下了更少的空间. 在浏览器和操作系统接管了大多数交互的情况下, 我们只能任由他们了. 网络是不会停止发展的, 我们正在走向更加复杂的元素交互, 但却更少的可控性.

这让我开始好奇我们还要和那些原生样式抗争多久. 也许是到了我们停止修改, 伪造input元素类型, 接受时代的大势所趋.

Source Link:
A List Apart-On Styled Form Elements