Как изменить изображение кнопки ввода с помощью 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, если это имеет значение.

Ответ 1

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

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

Ответ 2

Вы можете использовать тег <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/

Ответ 3

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.

Ответ 4

Эта статья о замене изображений 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;
}

Ответ 5

Здесь более простое решение, но без дополнительного окружения 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/

Ответ 6

Вот что сработало для меня в 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;
}

Ответ 7

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

<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;}

Ответ 8

Вариант предыдущих ответов. Я обнаружил, что непрозрачность должна быть установлена, конечно, это будет работать в 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;
}

Ответ 9

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

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" />

Ответ 10

Мое решение без 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;}

Ответ 11

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