元素是元素中的一个特定种类,用来创建一个允许用户使用颜色选择器,或输入兼容CSS语法的颜色代码的区域。(不支持Alpha…" />

<input type="color"> - HTML(超文本标记语言) 编辑

<input type="color">元素<input>元素中的一个特定种类,用来创建一个允许用户使用颜色选择器,或输入兼容CSS语法的颜色代码的区域。(不支持Alpha通道)

此元素的外观会因浏览器不同而不同,可能是简单的验证颜色输入格式的文本框,也可能使用平台原生或自定义样式的颜色选择器。其UI除要能接收文本格式的颜色外,未要求其他特性。(更多信息

内容分类流动区域, 列表, 可提交, 可重置, 表单相关元素, 短语内容, 可标记元素, 可触摸元素。
允许的内容无,这是一个 empty element
标签省略必须有开始标签,必须没有结束标签。
允许的父级元素任何接受短语内容的元素。
DOM接口HTMLInputElement

属性

该元素具有下面属性及其他的全局属性

autocompleteHTML5
设置颜色区域的autocomplete值。如果为true,则将自动填充颜色选择器上次存储的值。
autofocusHTML5
此布尔值属性使你可以指定当页面加载时,表单区域是否应当获得输入焦点。除非用户的操作覆盖这个属性,例如:在其他区域内进行输入。在整个文档中,只有一个元素可以拥有autofocus属性,值为布尔值。
disabled

此布尔值标明颜色选择其是否不可用于交互。另外,disabled时的值不会随表单提交。

name
随表单一起提交的颜色选择器的name。
value
颜色选择器的value,指定颜色选择器默认选择的颜色。input的value值必须是长度为7的字符串,以#开始,包含16进制格式的颜色值。例如:#FF0000为红色的16进制值。

使用

"color"类型的输入内容比较简单。

<input type="color" />

默认值

你可以给上面的例子添加一个默认值,对元素本身和选色器都生效。

<input type="color" value="#ff0000" />

上述代码会创建一个默认选择红色的颜色选择器。

下面的图片展示了macOS平台Chrome浏览器的颜色选择器:

This is how an input type color looks on Mac and within Chrome

如果你没有手动指定的话,元素的默认值为"#000000",即黑色。输入必须为7个字符,以"#"符号开始,后跟代表红、绿、蓝的十六进制字符各2个,形如"#rrggbb"。如果你想输入的颜色是其他格式(比如CSS中的rgb()rgba()记法),在设定value值时必须将其转换为这种格式。

监听颜色变化

正如其他类型的<input>元素,有两个和值的改变相关的事件,inputchange

  • 每次颜色变更都会触发元素上的input事件。
  • 用户关闭选色器之后会触发change事件。

对于这两个事件,都可以通过value属性获取新值。

colorPicker.addEventListener("input", updateFirst, false);
colorPicker.addEventListener("change", watchColorPicker, false);

function watchColorPicker(event) {
  document.querySelectorAll("p").forEach(function(p) {
    p.style.color = event.target.value;
  });
}

选取值

如果浏览器的实现不支持为"color"类型的<input>元素提供选色器而只有一个文本框,可以使用select()方法选取输入内容。如果浏览器提供了选色器,select()方法将会什么也不做。因此,需要留心这两种情况下方法行为的差异。

colorWell.select();

实现差异

如上文所说,如果浏览器不提供选色器,此元素将会显示为一个具备输入验证功能的文本框。例如,在Safari 10.1中,你将会看到以下内容:

Screenshot of the example taken in Safari.

而相同的内容在Firefox 55下则会显示成:

Screenshot of the example taken in Firefox 55 for macOS

如果点击元素,则会弹出选色器,在此例中,为macOS平台的选色器。

Screenshot of the element with the color picker open in Firefox Mac.

验证

如果当前的user agent下,用户输入无法转换为7个字符的十六进制RGB形式,会被判定为非法输入。在这种情况下,:invalid伪类会生效。

规范

规范状态注释
HTML Living StandardLiving Standard 
HTML5Recommendation 
HTML 4.01 SpecificationRecommendation初始定义

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
特性ChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
基本支持1.0121.0 (1.7 or earlier)21.01.0
type="color"20.03829.0 (29.0) [1]未实现11.0110
特性AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
基本支持(Yes)4.0 (2.0)(Yes)(Yes)(Yes)
type=color4.427.0 (27.0)?(Yes)?

[1]  在Windows Touch上尚未实现。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:95 次

字数:12295

最后编辑:7 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文