Как изменить изображение кнопки ввода с помощью CSS?

Итак, я могу создать кнопку ввода с изображением, используя

<INPUT type = "image" src = "/images/Btn.PNG" value = "">

Но я не могу добиться того же поведения с помощью CSS. Например, я пробовал

<INPUT type = "image" class = "myButton" value = "">

где myButton определен в файле CSS как

.myButton {
    background:url(/images/Btn.PNG) no-repeat;
    cursor:pointer;
    width: 200px;
    height: 100px;
    border: none;
}

Если бы это все, что я хотел сделать, я мог бы использовать исходный стиль, но я хочу изменить внешний вид кнопки при наведении курсора (используя класс myButton:hover). Я знаю, что ссылки хороши, потому что мне удалось загрузить их в качестве фонового изображения для других частей страницы (просто для проверки). Я нашел в сети примеры того, как это сделать с помощью JavaScript, но я ищу решение CSS.

Я использую Firefox 3.0.3, если это имеет значение.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
188
0
742 799
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Ответ принят как подходящий

Если вы хотите стилизовать кнопку с помощью CSS, сделайте ее кнопкой type = "submit" вместо type = "image". type = "image" ожидает SRC, который вы не можете установить в CSS.

Обратите внимание, что Safari не позволит вам стилизовать любую кнопку так, как вы ищете. Если вам нужна поддержка Safari, вам нужно разместить изображение и иметь функцию onclick, которая отправляет форму.

Спасибо. Использование "submit" вместо изображения загрузило изображение.

Baltimark 12.10.2008 20:21

Safari 3 и более поздние версии позволяют стилизовать кнопки по своему усмотрению. И для большей совместимости используйте вместо этого <button>.

eyelidlessness 12.10.2008 20:32

re для большей совместимости / <button> может решить другие проблемы совместимости.

eglasius 21.05.2011 21:44

ребята, проверьте ответ SI Web Design ниже. пожалуйста, проголосуйте, если этот ответ лучше.

deval 02.01.2014 09:35

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

"Используя этот метод, вы получите интерактивное изображение, когда таблицы стилей активны, и стандартную кнопку, когда таблицы стилей отключены. Хитрость заключается в том, чтобы применить методы замены изображения к тегу кнопки и использовать его в качестве кнопки отправки вместо с использованием ввода.

А поскольку границы кнопок стираются, рекомендуется также изменить курсор кнопки на рука в форме руки, используемая для ссылок, так как это дает пользователям визуальную подсказку ".

Код CSS:

#replacement-1 {
  width: 100px;
  height: 55px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent url(image.gif) no-repeat center top;
  text-indent: -1000em;
  cursor: pointer; /* hand-shaped cursor */
  cursor: hand; /* for IE 5.x */
}

#replacement-2 {
  width: 100px;
  height: 55px;
  padding: 55px 0 0;
  margin: 0;
  border: 0;
  background: transparent url(image.gif) no-repeat center top;
  overflow: hidden;
  cursor: pointer; /* hand-shaped cursor */
  cursor: hand; /* for IE 5.x */
}
form>#replacement-2 { /* For non-IE browsers*/
  height: 0px;
}

Проблема с этим методом заключается в том, что, если клиент отключает изображения в своем браузере, он вообще не видит кнопки!

Scott 24.03.2015 19:41

Вы можете использовать тег <button>. Для отправки просто добавьте type = "submit". Затем используйте фоновое изображение, если вы хотите, чтобы кнопка отображалась в виде рисунка.

Вот так:

<button type = "submit" style = "border: 0; background: transparent">
    <img src = "/images/Btn.PNG" width = "90" height = "50" alt = "submit" />
</button>

Более подробная информация: http://htmldog.com/reference/htmltags/button/

Просто помните, что IE (5,6,7 и 8 (в нестандартном режиме) отправит .innerHTML кнопки, а не атрибут значения, который вы установили для кнопки!

scunliffe 25.10.2008 23:46

Но граница кнопки <Остается inf Изображение закрыта.

BJ Patel 16.06.2011 13:13

@scunlife, Дмитрий в дополнение к публикации innerHtml заставляет большинство веб-серверов не принимать опубликованные данные, так как это пахнет атакой инъекции

Cohen 19.04.2012 18:24

Возможно, вы могли бы просто импортировать файл .js и заменить изображение там, в JavaScript.

Это серьезно переборщить.

Reed Richards 10.05.2011 13:02

HTML

<div class = "myButton"><INPUT type = "submit" name = "" value = ""></div>

CSS

div.myButton input {
    background:url(/images/Btn.PNG) no-repeat;
    cursor:pointer;
    width: 200px;
    height: 100px;
    border: none;
}

Это будет работать где угодно, даже в Safari.

Это лучший ответ. Спасибо

Byron Whitlock 31.10.2012 21:49

Вот более простое решение, но без лишних окружающих div:

<input type = "submit" value = "Submit">

CSS использует базовую технику замены изображений. Для бонусных баллов это показано с использованием спрайта изображения:

<style>
    input[type = "submit"] {
        border: 0;
        background: url('sprite.png') no-repeat -40px left;
        text-indent: -9999em;
        line-height:3000;
        width: 50px;
        height: 20px;
    }
</style>

Источник: http://work.arounds.org/issue/21/using-css-sprites-with-input-type-submit-buttons/

Я бы нажал +2, если бы была кнопка для этого ответа для селектора атрибута CSS (type = "submit") и рекомендации для спрайтов.

Dylan Valade 07.09.2011 21:49

Я не контролирую этот сайт. Хорошо, что я изложил решение в своем ответе.

philoye 27.03.2014 08:49

Последняя сохраненная версия ссылки: web.archive.org/web/20140112085651/http://work.arounds.org/…

Bernhard Wagner 20.08.2016 13:29

Вот что у меня сработало в Internet Explorer, небольшом изменении решения от Philoye.

>#divbutton
{
    position:relative;
    top:-64px;
    left:210px;
    background: transparent url("../../images/login_go.png") no-repeat;
    line-height:3000;
    width:33px;
    height:32px;
    border:none;
    cursor:pointer;
}

Вы можете использовать blank.gif (прозрачное изображение размером 1 пиксель) в качестве цели в своем теге.

<input type = "image" src = "img/blank.gif" class = "button"> 

а затем стиль фона в css:

.button {border:0;background:transparent url("../img/button.png") no-repeat 0 0;}
.button:hover {background:transparent url("../img/button-hover.png") no-repeat 0 0;}

Вариант предыдущих ответов. Я обнаружил, что необходимо установить непрозрачность, конечно, это будет работать в IE6 и далее. Возникла проблема с решением для высоты строки в IE8, когда кнопка не реагировала. И с этим вы также получите курсор в виде руки!

<div id = "myButton">
  <input id = "myInputButton" type = "submit" name = "" value = "">
</div>

#myButton {
 background: url("form_send_button.gif") no-repeat;
 width: 62px;
 height: 24px;
 }

#myInputButton { 
 background: url("form_send_button.gif") no-repeat;
 opacity: 0;
 -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
 filter: alpha(opacity=0);
 width: 67px;
 height: 26px;
 cursor: pointer;
 cursor: hand;
}

Я думаю, что лучшим решением будет следующее:

css:

.edit-button {
    background-image: url(edit.png);
    background-size: 100%;
    background-repeat:no-repeat;
    width: 24px;
    height: 24px;
}

html:

<input class = "edit-button" type = "image" src = "transparent.png" />

Мое решение без js и без изображений таково:

* HTML:

<input type=Submit class=continue_shopping_2 
name=Register title = "Confirm Your Data!" 
value = "confirm your data">

* CSS:

.continue_shopping_2:hover{
background-color:#FF9933;
text-decoration:none;
color:#FFFFFF;}


.continue_shopping_2{
padding:0 0 3px 0;
cursor:pointer;
background-color:#EC5500;
display:block;
text-align:center;
margin-top:8px;
width:174px;
height:21px;
border-radius:5px;
border-width:1px;
border-style:solid;
border-color:#919191;
font-family:Verdana;
font-size:13px;
font-style:normal;
line-height:normal;
font-weight:bold;
color:#FFFFFF;}

Таким образом нецелесообразно размещать случайные ссылки на ваш сайт. Я не вижу там вообще никакого «примера». Если вы хотите создать пример для демонстрации, пожалуйста, сделайте такой пример, который сам по себе служит примером, а не в контексте всего действующего сайта.

Andrew Barber 21.11.2012 00:21

это правильно ... дело в том, что невозможно получить доступ к нужной странице напрямую ... только добавление 1 элемента в корзину и переход к оформлению заказа.

John 21.11.2012 01:26

Предположим, вы не можете изменить тип ввода или даже src. У вас есть ТОЛЬКО css для игры.

Если вы знаете нужную высоту и у вас есть URL-адрес фонового изображения, которое вы хотите использовать вместо этого, вам повезло.

Установите высоту на ноль и высоту padding-top на желаемую высоту. Это уберет исходное изображение из поля зрения, давая вам совершенно чистое пространство для отображения фонового изображения css.

Работает в Chrome. Не знаю, работает ли это в IE. Едва ли что-нибудь умное делает, так что, наверное, нет.

#daft {
  height: 0;
  padding-top: 100px;
  width: 100px;
  background-image: url(clever.jpg);
}
<input type = "image" src = "daft.jpg" id = "daft">

Другие вопросы по теме