在 <button> 元素中嵌入图像

Posted

技术标签:

【中文标题】在 <button> 元素中嵌入图像【英文标题】:Embed image in a <button> element 【发布时间】:2012-01-30 19:06:41 【问题描述】:

我正在尝试在 html 中的 &lt;button&gt; 元素上显示 png 图像。 按钮与图像大小相同,图像显示但由于某种原因不在中心 - 所以不可能全部看到。 换句话说,图像的右上角似乎位于按钮的中心,而不是按钮的右上角。

这是 HTML 代码:

<button id="close" class="closing" onClick="javascript:close_clip()"><img src="icons/close.png" /></button>

更新: 我认为实际发生的是边际问题。我得到了两个像素的边距,所以背景图像超出了按钮。按钮和图片大小一样,只有20px,所以很显眼……我试过margin:0padding:0,但是没用……

【问题讨论】:

对我来说,它工作得很好......你正在经历这件事的背景是什么?可以再发布几行代码吗? 您能否在实时站点上重现此内容,例如 JS Fiddle,以便我们查看发生了什么? 【参考方案1】:

一般答案:

<button style="background: url('icons/close.png'); background-size:cover"></button>

由于当前选择的答案存在一些问题,发布此答案为大家省事。

确保为您的按钮提供查看图像所需的宽度/高度,并尽可能添加“背景位置”属性以使您的图像按预期显示。

反应版本:

<button style=backgroundImage: "url('icons/close.png')"></button>   

【讨论】:

【参考方案2】:

要将图像用作按钮,请创建按钮下载按钮图像,然后在绘图中打开它并记下左上角和右下角坐标

`<Img src =" button.jpg" usemap=" #button" >.   
<map name = " # button " >.   
<area shape ="rect" coords = " Top- left , bottom right " 
href = " page you want to open by button" > `  

您可以使用多个标签从一张图片创建不同的按钮。

注意:此方法存在一个问题,即如果您尝试更改图像的高度和宽度,像素会发生偏移,您的按钮将不起作用

为此,请通过 Photoshop 或任何其他照片编辑器从外部更改按钮图像大小

就是这样,您已经创建了没有 java 脚本和几行代码的按钮

【讨论】:

【参考方案3】:

将图像放入按钮的最简单方法:

<button onclick="myFunction()"><img src="your image path here.png"></button>

这会自动将按钮的大小调整为图像的大小。

【讨论】:

【参考方案4】:

主题是“在按钮元素中嵌入图像”,问题使用纯 HTML。我使用 span 标签执行此操作,其方式与引导程序中使用 glyphicons 的方式相同。我的图片是 16 x 16px,可以是任何格式。

这是回答问题的纯 HTML:

<button type="button"><span><img src="images/xxx.png" /></span>&nbsp;Click Me</button>

【讨论】:

【参考方案5】:

试试这种格式,用“width”属性来管理图片大小,很简单。 JavaScript 也可以在 element 中实现。

&lt;button&gt;&lt;img src=""&gt;&lt;/button&gt;

【讨论】:

嵌套交互元素将无法通过可访问性检查。 (如果它是公共站点,请不要使用它!)。来源:dequeuniversity.com/rules/axe/4.3/…【参考方案6】:

为什么不使用带有onclick 属性的图像?

例如:

<script>
function myfunction() 

</script>
<img src='Myimg.jpg' onclick='myfunction()'>

【讨论】:

这应该避免。一个快速、肮脏的黑客,当然,但没有考虑到可访问性。【参考方案7】:

在您的项目中添加名称为 Images 的新文件夹。将一些图像放入图像文件夹。然后就可以正常工作了。

<input type="image" src="~/Images/Desert.jpg"   >

【讨论】:

【参考方案8】:

您可以使用输入类型图像。

<input type="image" src="http://example.com/path/to/image.png" />

它作为一个按钮工作,并且可以附加事件处理程序。

或者,您可以使用 css 为按钮设置背景图片的样式,并适当地设置边框、边距等。

<button style="background: url(myimage.png)" ... />

【讨论】:

...并且不需要 JavaScript 来提交表单。 -1:“应该”这个词太强了,因为这不是 &lt;input type="image"&gt; 的真正用途。为什么不推荐 CSS? 我更喜欢使用按钮。如果我找不到答案,我会这样做。谢谢 别忘了按钮元素的起始和结束标记都是必需的,所以技术上 是无效的,它应该是 如果您使用 CSS 方法,一个问题是您可能还想指定 background-size: cover 以使图像覆盖按钮。我一直在想为什么我的图像没有显示出来,直到我意识到只有透明的左上角实际上在按钮内......【参考方案9】:

如果图像是一段语义数据(例如个人资料图片),则在 &lt;button&gt; 中使用 &lt;img&gt; 元素并使用 CSS 调整 &lt;img&gt; 的大小。如果图像只是一种使按钮在视觉上令人愉悦的方式,请使用 CSS background-image 来设置 &lt;button&gt; 的样式(不要使用 &lt;img&gt;)。

演示:http://jsfiddle.net/ThinkingStiff/V5Xqr/

HTML:

<button id="close-image"><img src="http://thinkingstiff.com/images/matt.jpg"></button>
<button id="close-CSS"></button>

CSS:

button 
    display: inline-block;
    height: 134px;
    padding: 0;
    margin: 0;
    vertical-align: top;
    width: 104px;


#close-image img 
    display: block;
    height: 130px;  
    width: 100px;


#close-CSS 
    background-image: url( 'http://thinkingstiff.com/images/matt.jpg' );
    background-size: 100px 130px;
    height: 134px;  
    width: 104px;

输出:

【讨论】:

@ThinkingStiff &lt;image&gt; 元素?我认为您的意思是 &lt;img&gt; 在您的文字中;) 感谢您的好回答!!但问题仍然存在......我稍微更新了这个问题 - 也许它可以帮助你更好地理解它。 @AmitHagin 我看到了你的更新。请记住,按钮有边框,它们包含在其高度的计算中。所以要适应20px 高图像,按钮高度必须是24px @AmitHagin 另外,为防止出现空格问题,请将您的 &lt;img&gt; 更改为 display: block;。我更新了演示链接以显示这一点。 对这种方法的可访问性/替代文本有任何顾虑吗?我真的很生疏,但是通过将文本偏移几千像素来隐藏文本仍然是公认的解决方法吗?【参考方案10】:

按钮不直接支持图像。此外,您正在做的方式是链接()

使用样式中的背景图像属性将图像添加到按钮上

您还可以使用标签指定重复次数和其他属性

例如:添加到按钮的基本图像将具有以下代码:

    <button style="background-image:url(myImage.png)">

和平

【讨论】:

你的回答不正确,官方documentation说是允许的。【参考方案11】:

试试这个

   <input type="button" style="background-image:url('your_url')"/>

【讨论】:

以上是关于在 <button> 元素中嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章

Notes:SVG

如何更改图像的来源,在另一个元素的innerhtml中?

内嵌元素块元素内联块的区分以及内嵌元素的问题

如何使用Xquery代码嵌入HTML代码中在浏览器中显示?

HTML超链接音频和视频以及内嵌框架

将 svg 标签转换为图像中的嵌入 svg