<input type="image">
类型为image
的<input>
元素用于创建图形提交按钮,即采用图像而非文本形式的提交按钮。
试一试
值
<input type="image">
元素不接受value
属性。要显示的图像的路径在src
属性中指定。
其他属性
除了所有<input>
元素共享的属性外,image
按钮输入还支持以下属性。
alt
formaction
一个字符串,指示要将数据提交到的 URL。这优先于拥有<input>
的<form>
元素上的action
属性。
此属性也适用于<input type="submit">
和<button>
元素。
formenctype
一个字符串,用于标识将表单数据提交到服务器时要使用的编码方法。有三个允许的值
application/x-www-form-urlencoded
-
这是默认值,它在使用
encodeURI()
等算法对文本进行百分比编码后,将表单数据作为字符串发送。 multipart/form-data
-
使用
FormData
API 管理数据,允许将文件提交到服务器。如果您的表单包含任何类型为file
的<input>
元素(<input type="file">
),则必须使用此编码类型。 text/plain
-
纯文本;主要仅对调试有用,因此您可以轻松查看要提交的数据。
如果指定,则formenctype
属性的值将覆盖拥有表单的action
属性。
此属性也适用于<input type="submit">
和<button>
元素。
formmethod
一个字符串,指示在提交表单数据时要使用的 HTTP 方法;此值将覆盖拥有表单提供的任何method
属性。允许的值为
get
-
通过以
formaction
或action
属性给出的 URL 开头,附加问号(“?”)字符,然后附加表单数据(如formenctype
或表单的enctype
属性所述进行编码)来构建 URL。然后,使用 HTTPget
请求将此 URL 发送到服务器。此方法适用于仅包含ASCII字符且没有副作用的简单表单。这是默认值。 post
-
表单数据包含在发送到由
formaction
或action
属性给出的 URL 的请求的主体中,使用 HTTPpost
请求。此方法支持复杂数据和文件附件。 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
使用图像输入
基本的图像输入功能
让我们来看一个包含所有基本功能的基本示例(这些功能与<img>
元素上的功能完全相同)。
<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" />
覆盖默认表单行为
<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">
创建的按钮提交表单时,浏览器会自动向服务器提交两个额外的数 据点——x
和y
。您可以在我们的X Y坐标示例中看到这一点。
当您单击图像以提交表单时,您将看到数据作为参数附加到URL中,例如?x=52&y=55
。如果图像输入具有name
属性,则请记住,指定的名称会添加到每个属性的前面,因此,如果name
为position
,则返回的坐标将在URL中格式化为?position.x=52&position.y=55
。当然,这也适用于所有其他属性。
这些是鼠标单击以提交表单的图像的X和Y坐标,其中(0,0)是图像的左上角,并且在没有单击图像的情况下提交时为默认值。当单击图像的位置很重要时,可以使用这些坐标,例如,您可能有一个地图,单击它时,会将单击的坐标发送到服务器。然后,服务器端代码计算出单击了哪个位置,并返回有关附近位置的信息。
在上面的示例中,我们可以编写服务器端代码,根据提交的坐标计算出单击了哪个颜色,并统计人们投票选择的喜欢的颜色。
调整图像的位置和缩放算法
您可以使用object-position
属性调整图像在<input>
元素框架内的定位,并使用object-fit
属性控制如何调整图像的大小以适合框架。这允许您使用width
和height
属性为图像指定一个框架,以便在布局中腾出空间,然后调整图像在该空间中的位置以及如何(或是否)缩放以占用该空间。
示例
登录表单
以下示例显示了与之前相同的按钮,但包含在典型登录表单的上下文中。
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使基本元素更整齐地排列。
div {
margin-bottom: 10px;
}
label {
display: inline-block;
width: 70px;
text-align: right;
padding-right: 10px;
}
调整图像位置和缩放
在此示例中,我们调整了前面的示例,以腾出更多空间用于图像,然后使用object-fit
和object-position
调整实际图像的大小和位置。
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
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 属性。 |
事件 | 无。 |
支持的常用属性 |
alt 、src 、width 、height 、formaction 、formenctype 、formmethod 、formnovalidate 、formtarget |
IDL 属性 | 无。 |
DOM 接口 | |
方法 | 无。 |
隐式 ARIA 角色 | button |
规范
规范 |
---|
HTML 标准 # image-button-state-(type=image) |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
<input>
和实现它的HTMLInputElement
接口。- HTML
<img>
元素 - 在
<input>
元素的框架内定位和调整图像大小:object-position
和object-fit
- CSS 属性的兼容性