Вставити зображення в елемент <кнопка>


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: " Should " - занадто сильний термін, оскільки це насправді не те, що <input type="image">призначено. Чому б ти не запропонував CSS?
Уеслі Мерч

Я вважаю за краще використовувати кнопку. якщо я не знайду відповіді, я це зроблю. дякую
Аміт Хагін

Потім стилізуйте його, як зазначено в цій та інших відповідях.
Ендрю Барбер

3
Не забувайте, що обидва теги початкового кінця потрібні для елемента кнопки, тому технічно <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>елемент? Я думаю, ви маєте <img>на увазі під своїм текстом;)
ComFreek

дякую за гарну відповідь !! але проблема залишається ... Я трохи оновив питання - можливо, це може допомогти вам зрозуміти це.
Аміт Хагін

@AmitHagin Я побачив ваше оновлення. Пам'ятайте, що кнопка має бордюри, які входять у розрахунок її висоти. Щоб підходити до 20pxвисокого зображення, висота кнопки повинна бути такою 24px.
ДумаючиСтиф

@AmitHagin Також для запобігання проблем із пробілами змініть свій <img>на display: block;. Я оновив демо-посилання, щоб показати це.
ДумаючиСтиф

Чи є якісь занепокоєння щодо доступності / alt тексту за допомогою цього методу? Я справді іржавий, але чи приховується текст, компенсуючи його на кілька тисяч пікселів, як і раніше прийнятий спосіб вирішення?
Роб Дріммі


10

Найпростіший спосіб вставити зображення в кнопку:

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

Це автоматично змінить розмір кнопки до розміру зображення.


4

Чому ви не використовуєте зображення з onclickатрибутом?

Наприклад:

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

0

Додайте нову папку з назвою Зображення у проект. Помістіть кілька зображень у папку Зображення. Тоді це буде добре працювати.

<input type="image" src="~/Images/Desert.jpg" alt="Submit" width="48" height="48">

0

Спробуйте подібний формат і використовуйте атрибут "width" для управління розміром зображення, це просто. JavaScript може бути реалізований і в елементі.

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


-7

Кнопки безпосередньо не підтримують зображення. Тим більше, що ви робите це для посилань ()

Зображення додаються через кнопки, використовуючи властивість BACKGROUND-IMAGE у стилі

ви також можете вказати повтори та інші властивості, використовуючи тег

Наприклад: базове зображення, додане до кнопки, має цей код:

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

Мир


2
Ваша відповідь неправильна, в офіційній документації сказано, що це дозволено.
біфоб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.