Вставить изображение в элемент <button>

135

Я пытаюсь отобразить изображение PNG для <button>элемента в HTML. Кнопка имеет тот же размер, что и изображение, и изображение показывается, но по какой-то причине не в центре - поэтому невозможно увидеть все это. Другими словами, кажется, что верхний правый угол изображения расположен в центре кнопки, а не в верхнем правом углу кнопки.

Это HTML-код:

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

Обновление:
что на самом деле происходит, я думаю, является проблемой маржи. Я получаю двухпиксельное поле, поэтому фоновое изображение выходит из кнопки. Кнопка и изображение того же размера, что только 20px, так что это очень заметно ... Я пытался margin:0, padding:0, но это не поможет ...

Амит Хейгин
источник
Для меня это работает отлично ... в каком контексте вы это испытываете? Можно опубликовать еще несколько строк кода?
3
Можете ли вы воспроизвести это на живом сайте, таком как JS Fiddle, чтобы мы могли видеть, что происходит?
Дэвид говорит восстановить Монику

Ответы:

189

Вы можете использовать тип ввода изображения.

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

Он работает как кнопка и к нему могут быть прикреплены обработчики событий.

Кроме того, вы можете использовать css, чтобы стилизовать вашу кнопку с фоновым изображением и соответственно установить границы, поля и т.п.

<button style="background: url(myimage.png)" ... />
Эндрю Барбер
источник
1
... и не требует JavaScript для отправки формы.
ComFreek
6
-1: « Должен » - это слишком сильный термин, так как на самом деле это не то, <input type="image">для чего он предназначен. Почему бы вам не предложить CSS?
Уэсли Мёрч
Я предпочитаю использовать кнопку. если я не найду ответа, я сделаю это. спасибо
Амит Хагин
Затем стиль, как отмечено в этом и других ответах.
Эндрю Барбер
3
Не забывайте, что оба тега начального и конечного конца необходимы для элемента button, поэтому технически <button /> недопустима, это должно быть <button> </ button>.
Тамас Чинеге
66

Если изображение является частью семантических данных (например, изображение профиля), используйте <img>элемент внутри <button>и используйте CSS для изменения размера <img>. Если изображение - просто способ сделать кнопку визуально приятной, используйте CSS background-imageдля стилизации <button>(и не используйте <img>).

Демо: 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
источник
<image>Элемент @ThinkingStiff ? Я думаю, что вы имеете <img>в виду в своем тексте;)
ComFreek
спасибо за хороший ответ !! но проблема остается ... Я немного обновил вопрос - может быть, это поможет вам понять это лучше.
Амит Хагин
@AmitHagin Я видел твое обновление. Помните, что кнопка имеет границы, которые учитываются при расчете ее высоты. Таким образом, чтобы соответствовать 20pxвысокому изображению, высота кнопки должна быть такой 24px.
ThinkingStiff
@AmitHagin Кроме того, чтобы избежать проблем с пробелами, измените <img>на display: block;. Я обновил демонстрационную ссылку, чтобы показать это.
ThinkingStiff
Есть ли опасения по поводу доступности / альтернативного текста с этим методом? Я действительно ржавый, но скрытый текст, смещая его на несколько тысяч пикселей, все еще принятый обходной путь?
Роб Дримми
10

попробуй это

   <input type="button" style="background-image:url('your_url')"/>
Крис П
источник
10

Самый простой способ поместить изображение в кнопку:

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

Это автоматически изменит размер кнопки до размера изображения.

Эли Дэвис
источник
4

Почему вы не используете изображение с onclickатрибутом?

Например:

<script>
function myfunction() {
}
</script>
<img src='Myimg.jpg' onclick='myfunction()'>
SirFireball
источник
0

Добавьте новую папку с именем Images в ваш проект. Поместите несколько изображений в папку изображений. Тогда все будет работать нормально.

<input type="image" src="~/Images/Desert.jpg" alt="Submit" width="48" height="48">
Parameswaran
источник
0

Попробуйте использовать этот формат и использовать атрибут width для управления размером изображения, это просто. JavaScript также может быть реализован в элементе.

<button><img src=""></button>

user13617141
источник
-7

Кнопки не поддерживают изображения напрямую. Кроме того, вы делаете для ссылок ()

Изображения добавляются поверх кнопок с использованием свойства BACKGROUND-IMAGE в стиле

Вы также можете указать повторы и другие свойства, используя тег

Например: базовое изображение, добавленное к кнопке, будет иметь следующий код:

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

мир

proctr
источник
2
Ваш ответ неверный, в официальной документации сказано, что это разрешено.
Бифоб