小小标签,强大功能——深藏不露的 <input>

简介: <input> 虽只是一个看似简单的 HTML 表单元素,但它这么一个单一的元素,就有多达 30 多个属性(attribute),相信无论你是个小菜鸟还是像我一样写了 15 年 HTML 的老手,知道这点的时候还是会惊讶不已的。而且如果再加上全局属性那就更多了,例如最重要的 type 属性有超过20个可能的值!可以来简单看看 MDN 文档。

<input> 虽只是一个看似简单的 HTML 表单元素,但它这么一个单一的元素,就有多达 30 多个属性(attribute),相信无论你是个小菜鸟还是像我一样写了 15 年 HTML 的老手,知道这点的时候还是会惊讶不已的。而且如果再加上全局属性那就更多了,例如最重要的 type 属性有超过20个可能的值!可以来简单看看 MDN 文档


type 属性

在 input 标签中,type 属性可指定显示不同的表单控件,每个控件都有不同的目的和收集特定类型的数据。如果想看到所有的输入元素类型,可以查看这里(目前在 Chrome 里表现的最好),可能有一些你不知道的又新又有趣的类型。


COLOR

许多 Web 应用会用到颜色选择器,可以让用户自定义选择颜色。传统做法是使用 JavaScript 框架(如 jQuery),而 W3C 推出了 input 标签的新值属性 color。下面这段代码在 Mac OS X chrome 里的表现就如下截图:

<input type="color"value="#6fbc6d">

image.png


虽然最新版本的 Chrome 和 Firefox 都有自带的 color picker,但目前浏览器对 color 属性的支持仍然不是很好。不过你依旧可以通过设置颜色的十六进制值来改变默认的颜色。


DATE, MONTH, AND WEEK

目前几乎所有的 Web 应用程序的表单都涉及到日期选择器,如预约医生、航班等,虽然可能是不同的形式。而与颜色选择器类似,传统的日期选择器控件通常是用 JavaScript 框架完成。

而现在,浏览器可以通过新的 input 类型 datemonthweek 实现本地的日期选择器。下面这张截图是这三种类型的日期选择器的代码在 MAC OS X Chrome 上的表现:

<inputtype="date">

<inputtype="month">

<inputtype="week">

image.png


不幸的是,目前浏览器对这几个日期选择器的支持并不是特别好:最新版本的 Android 完全支持,Chrome 和 iOS 部分支持(主要是其对相关属性的不支持)。让浏览器对这几个新的本地日期选择器良好支持还是需要一段时间的,所以 JavaScript 控件仍是目前最好的解决方案。


TEXT, EMAIL, TEL, URL

text 属性已经有很多年了,现在 emailtelurl 这几个新属性也加入了。普通浏览器里,这些新加的类型似乎和普通的文本输入没有什么差别,所以问题来了:如果没什么不同,为什么还要去用呢?

看看下图的这个 iOS 键盘:这 4 种不同的输入类型将自动使用一个特定的键盘 - email 的键盘有一个方便的 @ 符号,tel 使用数字键键盘,而 url 提供快速域名常用的./.com

<inputtype="text">

<inputtype="email"

<inputtype="tel">

<inputtype="url">

image.png


这些方法能提升以前在移动设备上让人感到沮丧的用户体验,而现在的浏览器都已经完全支持了这些属性。


RANGE

在某些特定情况下,当数据精确度要求并不是很高的时候,可以让用户在某些值中选择即可。比如在一个照片编辑应用里让用户来控制图像的亮度或饱和度,这个时候使用文本输入绝对是一个糟糕的做法:会让用户不知该如何选择,而且程序员还要进行数值检测来确保数值在合适的范围内。这是不但加大了程序员的工作量,还会导致不好的用户体验。

这时候就该 range 上场了,使用一个滑块控件可以让用户在给定的最小值和最大值范围内进行特定选择。下面这段代码在 MAC OS X Chrome 上的效果截图:

<inputtype="range">

image.png

目前浏览器对范围滑块的支持还是相当不错的,iOS、Android(之前提到的演示页面可能会有问题)平台上都是完美支持,IE10 +、Firefox、Safari 以及 Chrome 也没有问题。所以,下次如果需要一个滑块,可以尝试使用 input 的 range 类型来替换传统的 JavaScript 解决方案。


TIME

和 date 类型类似,time 也可以给你一个输入时间的界面,下面是这段代码在 MAC OS X Chrome 上的效果截图:

<inputtype="time">

image.png


不过,和其它的 date 类型一样,time 目前也没有很好的浏览器支持。如果你需要一个实用的跨浏览器解决方案,多个文本输入或基于 JavaScript 的解决方案现在来看还是最佳的。


其他资源

正如引言中提到的,这只是 input 的一小部分类型举例,其他一些有趣的属性如 requiredpatternlistreadonly 等,如果还想继续学习,下面这些资源或许能帮到你:


相关文章
|
2月前
|
机器学习/深度学习 人工智能 资源调度
银行零售信贷AI实践:从尽调到贷后的全链路Skill化
信贷审批的本质不是批不批,而是还得起多少。本文详解等额本息与提前还款的算法实现,构建WOE+IV值信用评分模型实现自动审批,用RFM+K-Means聚类完成零售客户分层,设计基于余弦相似度+TopN的产品推荐和AUM增长测算,实现马科维茨投资组合优化和退休规划AI推演引擎。附带7大维度完整性检查清单。
|
存储 Web App开发 移动开发
📕Local Storage、Session Storage和Cache Storage之间的区别
你知道什么是Cache Storage、Local Storage和Session Storage吗?它们都是一些可以在你的浏览器里保存信息的介质,但是它们有什么不同呢?🤔
1665 0
📕Local Storage、Session Storage和Cache Storage之间的区别
|
Web App开发 编解码 算法
RTC场景中的几个关键算法
RTC(Real-time Communications),实时通信,是一个正在兴起的风口行业,特别是近两年电商、教育等行业直播的普及以及各种设备之间的音视频通话场景。
1810 20
RTC场景中的几个关键算法
|
存储 分布式计算 资源调度
降本增效利器!趣头条Spark Remote Shuffle Service最佳实践
趣头条是一家依赖大数据的科技公司,在2018-2019年经历了业务的高速发展,主App和其他创新App的日活增加了10倍以上,相应的大数据系统也从最初的100台机器增加到了千台规模。面对业务和数据的日益增长,如何优化大数据平台,真正实现降本增效,技术人也面临着非常大的挑战,近半年趣头条和阿里云一起合作,通过Spark Remote Shuffle Service取得了较大的进展,在这里大家可以更加详细地了解这套方案。
12356 2
|
存储 分布式计算 监控
一文了解阿里云对象存储OSS
对象存储OSS是什么? 对象存储服务(Object Storage Service,简称 OSS),以 HTTP RESTful API 的形式对外提供服务,是阿里云提供的海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面覆盖从热到冷的各种数据,优化存储成本。其数据可靠性不低于 99.9999999999%(12 个 9),服务可用性
12650 2
|
存储 传感器 监控
网络安全技术 | 身份认证的革命——生物特征身份认证
网络安全技术 | 身份认证的革命——生物特征身份认证
2081 0
网络安全技术 | 身份认证的革命——生物特征身份认证
|
XML JSON 搜索推荐
来看看Android获取定位到底有几种方式?
目前,移动端大致通过三种方式来进行设备定位:GPS、基站、wifi。本文就详细的讲解一下这几种定位方式和实现方法。
5806 0
|
设计模式 SQL 测试技术
一文理解 DDD 领域驱动设计!
以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然
一文理解 DDD 领域驱动设计!