<input type="image">

类型为image<input>元素用于创建图形提交按钮,即采用图像而非文本形式的提交按钮。

试一试

<input type="image">元素不接受value属性。要显示的图像的路径在src属性中指定。

其他属性

除了所有<input>元素共享的属性外,image按钮输入还支持以下属性。

alt

如果无法显示图像(由于错误、无法或配置为不显示图像的用户代理,或者用户正在使用屏幕阅读器),则alt属性提供一个备用字符串用作按钮的标签。如果提供,它必须是非空字符串,适合用作按钮的标签。

例如,如果您有一个显示带有图标和/或图像文本“立即登录”的图像的图形按钮,您还应该将alt属性设置为类似立即登录的内容。

注意:虽然alt属性在技术上是可选的,但您应始终包含一个以最大限度地提高内容的可用性。

在功能上,<input type="image">元素的alt属性的工作原理与alt属性在<img>元素上的工作原理相同。

formaction

一个字符串,指示要将数据提交到的 URL。这优先于拥有<input><form>元素上的action属性。

此属性也适用于<input type="submit"><button>元素。

formenctype

一个字符串,用于标识将表单数据提交到服务器时要使用的编码方法。有三个允许的值

application/x-www-form-urlencoded

这是默认值,它在使用encodeURI()等算法对文本进行百分比编码后,将表单数据作为字符串发送。

multipart/form-data

使用FormDataAPI 管理数据,允许将文件提交到服务器。如果您的表单包含任何类型为file<input>元素(<input type="file">),则必须使用此编码类型。

text/plain

纯文本;主要仅对调试有用,因此您可以轻松查看要提交的数据。

如果指定,则formenctype属性的值将覆盖拥有表单的action属性。

此属性也适用于<input type="submit"><button>元素。

formmethod

一个字符串,指示在提交表单数据时要使用的 HTTP 方法;此值将覆盖拥有表单提供的任何method属性。允许的值为

get

通过以formactionaction属性给出的 URL 开头,附加问号(“?”)字符,然后附加表单数据(如formenctype或表单的enctype属性所述进行编码)来构建 URL。然后,使用 HTTP get请求将此 URL 发送到服务器。此方法适用于仅包含ASCII字符且没有副作用的简单表单。这是默认值。

post

表单数据包含在发送到由formactionaction属性给出的 URL 的请求的主体中,使用 HTTP post请求。此方法支持复杂数据和文件附件。

dialog

此方法用于指示按钮关闭与输入关联的对话框,并且根本不传输表单数据。

此属性也适用于<input type="submit"><button>元素。

formnovalidate

一个布尔属性,如果存在,则指定在提交到服务器之前不应验证表单。这将覆盖元素拥有表单上的novalidate属性的值。

此属性也适用于<input type="submit"><button>元素。

formtarget

一个字符串,指定一个名称或关键字,指示在提交表单后显示接收到的响应的位置。该字符串必须是浏览上下文(即选项卡、窗口或<iframe>)的名称。此处指定的值将覆盖拥有此输入的<form>

除了选项卡、窗口或内联框架的实际名称之外,还可以使用一些特殊的关键字。

_self

将响应加载到与包含表单的浏览上下文相同的上下文中。这将用接收到的数据替换当前文档。如果未指定,则使用此默认值。

_blank

将响应加载到一个新的、未命名的浏览上下文中。这通常是与当前文档相同的窗口中的一个新选项卡,但可能会根据用户代理的配置而有所不同。

_parent

将响应加载到当前浏览上下文的父浏览上下文中。如果没有父上下文,则其行为与_self相同。

_top

将响应加载到顶级浏览上下文中;这是当前上下文的最高祖先的浏览上下文。如果当前上下文是顶级上下文,则其行为与_self相同。

此属性也适用于<input type="submit"><button>元素。

height

一个数字,指定使用src属性指定的图像的绘制高度(以CSS像素为单位)。

src

一个字符串,指定要显示的图像文件的URL,以表示图形提交按钮。当用户与图像交互时,输入将像任何其他按钮输入一样处理。

width

一个数字,指示图像的绘制宽度(以CSS像素为单位)。

已弃用属性

以下属性由HTML 4为image输入定义,但并非所有浏览器都实现了该属性,并且此后已弃用。

usemap

如果指定了usemap,则它必须是图像映射元素<map>的名称,该元素定义要与图像一起使用的图像映射。此用法已过时;当您想要使用图像映射时,应切换到使用<img>元素。

使用图像输入

<input type="image">元素是一个替换元素(其内容不是由CSS层生成或直接管理的元素),其行为与常规<img>元素非常相似,但具有提交按钮的功能。

基本的图像输入功能

让我们来看一个包含所有基本功能的基本示例(这些功能与<img>元素上的功能完全相同)。

html
<input
  id="image"
  type="image"
  width="100"
  height="30"
  alt="Login"
  src="https://raw.githubusercontent.com/mdn/learning-area/master/html/forms/image-type-example/login.png" />
  • src属性用于指定要显示在按钮中的图像的路径。
  • alt属性为图像提供替代文本,以便屏幕阅读器用户可以更好地了解按钮的用途。如果由于任何原因无法显示图像(例如,路径拼写错误),它也会显示。如果可能,请使用与使用标准提交按钮时使用的标签匹配的文本。
  • widthheight属性用于指定应以像素为单位显示图像的宽度和高度。按钮的大小与图像相同;如果您需要按钮的点击区域大于图像,则需要使用CSS(例如padding)。此外,如果您只指定一个维度,则另一个维度会自动调整,以便图像保持其原始纵横比

覆盖默认表单行为

<input type="image">元素(如常规提交按钮)可以接受许多属性,这些属性可以覆盖默认的表单行为。

formaction

处理输入元素提交的信息的程序的URI;覆盖元素的表单所有者的action属性。

formenctype

指定用于将表单提交到服务器的内容类型。可能的值为

  • application/x-www-form-urlencoded:如果未指定该属性,则为默认值。
  • text/plain.

如果指定了此属性,则它将覆盖元素的表单所有者的enctype属性。

formmethod

指定浏览器用于提交表单的HTTP方法。可能的值为

  • post:表单中的数据包含在表单的主体中,并发送到服务器。
  • get:表单中的数据附加到form属性URI,以'?'作为分隔符,并将生成的URI发送到服务器。当表单没有副作用并且只包含ASCII字符时,使用此方法。

如果指定,则此属性将覆盖元素的表单所有者的method属性。

formnovalidate

一个布尔属性,指定在提交表单时不应验证表单。如果指定了此属性,则它将覆盖元素的表单所有者的novalidate属性。

formtarget

一个名称或关键字,指示在提交表单后接收到的响应在何处显示。这是浏览上下文(例如,选项卡、窗口或内联框架)的名称或关键字。如果指定了此属性,则它将覆盖元素的表单所有者的target属性。以下关键字具有特殊含义

  • _self:将响应加载到与当前上下文相同的浏览上下文中。如果未指定该属性,则此值为默认值。
  • _blank:将响应加载到新的未命名浏览上下文中。
  • _parent:将响应加载到当前上下文的父浏览上下文中。如果没有父级,则此选项的行为与_self相同。
  • _top:将响应加载到顶级浏览上下文中(即,当前上下文的祖先且没有父级的浏览上下文)。如果没有父级,则此选项的行为与_self相同。

使用x和y数据点

当您使用使用<input type="image">创建的按钮提交表单时,浏览器会自动向服务器提交两个额外的数 据点——xy。您可以在我们的X Y坐标示例中看到这一点。

当您单击图像以提交表单时,您将看到数据作为参数附加到URL中,例如?x=52&y=55。如果图像输入具有name属性,则请记住,指定的名称会添加到每个属性的前面,因此,如果nameposition,则返回的坐标将在URL中格式化为?position.x=52&position.y=55。当然,这也适用于所有其他属性。

这些是鼠标单击以提交表单的图像的X和Y坐标,其中(0,0)是图像的左上角,并且在没有单击图像的情况下提交时为默认值。当单击图像的位置很重要时,可以使用这些坐标,例如,您可能有一个地图,单击它时,会将单击的坐标发送到服务器。然后,服务器端代码计算出单击了哪个位置,并返回有关附近位置的信息。

在上面的示例中,我们可以编写服务器端代码,根据提交的坐标计算出单击了哪个颜色,并统计人们投票选择的喜欢的颜色。

调整图像的位置和缩放算法

您可以使用object-position属性调整图像在<input>元素框架内的定位,并使用object-fit属性控制如何调整图像的大小以适合框架。这允许您使用widthheight属性为图像指定一个框架,以便在布局中腾出空间,然后调整图像在该空间中的位置以及如何(或是否)缩放以占用该空间。

示例

登录表单

以下示例显示了与之前相同的按钮,但包含在典型登录表单的上下文中。

HTML

html
<form>
  <p>Login to your account</p>
  <div>
    <label for="userId">User ID</label>
    <input type="text" id="userId" name="userId" />
  </div>
  <div>
    <label for="pwd">Password</label>
    <input type="password" id="pwd" name="pwd" />
  </div>
  <div>
    <input
      id="image"
      type="image"
      src="https://raw.githubusercontent.com/mdn/learning-area/master/html/forms/image-type-example/login.png"
      alt="Login"
      width="100" />
  </div>
</form>

CSS

现在,一些简单的CSS使基本元素更整齐地排列。

css
div {
  margin-bottom: 10px;
}

label {
  display: inline-block;
  width: 70px;
  text-align: right;
  padding-right: 10px;
}

调整图像位置和缩放

在此示例中,我们调整了前面的示例,以腾出更多空间用于图像,然后使用object-fitobject-position调整实际图像的大小和位置。

HTML

html
<form>
  <p>Login to your account</p>
  <div>
    <label for="userId">User ID</label>
    <input type="text" id="userId" name="userId" />
  </div>
  <div>
    <label for="pwd">Password</label>
    <input type="password" id="pwd" name="pwd" />
  </div>
  <div>
    <input
      id="image"
      type="image"
      src="https://raw.githubusercontent.com/mdn/learning-area/master/html/forms/image-type-example/login.png"
      alt="Login"
      width="200"
      height="100" />
  </div>
</form>

CSS

css
div {
  margin-bottom: 10px;
}

label {
  display: inline-block;
  width: 70px;
  text-align: right;
  padding-right: 10px;
}

#image {
  object-position: right top;
  object-fit: contain;
  background-color: #ddd;
}

这里,object-position配置为在元素的右上角绘制图像,而object-fit设置为contain,这表示应以适合元素框内且不更改其纵横比的最大尺寸绘制图像。请注意,元素的可见灰色背景仍然在图像未覆盖的区域可见。

技术摘要

无——不应指定value属性。
事件 无。
支持的常用属性 altsrcwidthheightformactionformenctypeformmethodformnovalidateformtarget
IDL 属性 无。
DOM 接口

HTMLInputElement

方法 无。
隐式 ARIA 角色 button

规范

规范
HTML 标准
# image-button-state-(type=image)

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅