Как изменить изображение кнопки ввода с помощью CSS? - PullRequest
181 голосов
/ 12 октября 2008

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

<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, если это имеет значение.

Ответы [ 11 ]

117 голосов
/ 12 октября 2008

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

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

110 голосов
/ 12 октября 2008

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

72 голосов
/ 28 июля 2009

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.

25 голосов
/ 12 октября 2008

Эта статья о 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;
}
12 голосов
/ 03 февраля 2011

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

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

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" />
2 голосов
/ 16 апреля 2011

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

Вы можете использовать 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;}
2 голосов
/ 11 февраля 2011

Вот что у меня сработало в 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;
}
1 голос
/ 21 ноября 2012

Мое решение без 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;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...