HTML / CSS Як додати значок зображення до типу введення = "кнопка"?


110

Я використовую нижній CSS, але він розміщує зображення в центрі кнопки. Будь-який спосіб ліворуч або праворуч вирівняти піктограму, використовуючи <input type="button">текст, а також зображення та зображення добре вирівнятися?

background: url('/common/assets/images/icons/16x16/add.png');
background-position:center;
background-repeat:no-repeat;

Відповіді:


143

Якщо ви обов'язково використовуєте input, спробуйте це:

background-image: url(...);
background-repeat: no-repeat;
background-position: <left|right>;
padding-<left|right>: <width of image>px;

Це, як правило , трохи легше використовувати buttonз imgвнутрішньої:

<button type="submit"><img> Text</button>

Однак реалізація браузера buttonдля подання суперечлива, як і той факт, що всі значення кнопки надсилаються при buttonвикористанні - що вбиває виявлення "яка кнопка натиснута" у формі, що надсилає декілька.


не потрібно, але я тут тег кнопок баггі, тобто 6 або поводиться по-різному в деяких браузерах?
Бретт

Наскільки я переживав, button(з типом submit) працює ідентично, inputза винятком дозволу елементів всередині (а не просто стилів, застосованих до нього).
Делан Азабані

8
"Баггі" частина реалізації IE <button>походить від того, що 1) на POST / GET він подає "значення" для кожної кнопки, а не лише тієї, на яку натиснув, і 2) Замість того, щоб надсилати фактичний valueатрибут, IE любить щоб надіслати вміст кнопки (внутрішній HTML). Ці факти роблять <button>тег ненадійним, якщо вжиті дії залежать від кнопки, яку користувач натиснув.
Дурот

Чудова точка, Дурот. Так, це, безумовно, химер для таких речей, як форма редагування публікацій, що містить "Попередній перегляд" та "Надіслати" тощо.
Делан Азабані

3
Ви можете користуватися <button>і <input type=button>взаємозамінно. Якщо ви не хочете, щоб <кнопка> надсилала в IE, встановіть його тип так:<button type="button">Text</button>
Дарсі

74

Для цього слід робити все, що завгодно, якщо припустити, що зображення вашої кнопки становить 16 на 16 пікселів.

<input type="button" value="Add a new row" class="button-add" />
input.button-add {
    background-image: url(/images/buttons/add.png); /* 16px x 16px */
    background-color: transparent; /* make the button transparent */
    background-repeat: no-repeat;  /* make the background image appear only once */
    background-position: 0px 0px;  /* equivalent to 'top left' */
    border: none;           /* assuming we don't want any borders */
    cursor: pointer;        /* make the cursor like hovering over an <a> element */
    height: 16px;           /* make this the size of your image */
    padding-left: 16px;     /* make text start to the right of the image */
    vertical-align: middle; /* align the text vertically centered */
}

Приклад кнопки:

Приклад кнопки

Оновлення

Якщо ви будете використовувати менше, цей міксин може стати в нагоді.

.icon-button(@icon-url, @icon-size: 16px, @icon-inset: 10px, @border-color: #000, @background-color: transparent) {
    height: @icon-size * 2;
    padding-left: @icon-size + @icon-inset * 2;
    padding-right: @icon-inset;
    border: 1px solid @border-color;
    background: @background-color url(@icon-url) no-repeat @icon-inset center;
    cursor: pointer;
}

input.button-add {
    .icon-button("http://placehold.it/16x16", @background-color: #ff9900);
}

Описане вище в

input.button-add {
  height: 32px;
  padding-left: 36px;
  padding-right: 10px;
  border: 1px solid #000000;
  background: #ff9900 url("http://placehold.it/16x16") no-repeat 10px center;
  cursor: pointer;
}

JSFiddle


вам не потрібні лапки в аргументі методу url ()?
ecbrodie

2
Ні, ми цього не робимо. stackoverflow.com/questions/2168855/css-url-are-quotes-needed
sshow

10
<button type="submit" style="background-color:transparent; border-color:transparent;"> 
  <img src="images/button/masuk.png" height="35"/>
</button>
<button type="reset" style="background-color:transparent; border-color:transparent;"> 
  <img src="images/button/reset.png" height="35"/>
</button>

Я сподіваюся, що це вам допоможе.


2

Якщо ви використовуєте spritesheets, це стає неможливим, і елемент потрібно обернути.

.btn{
    display: inline-block;
    background: blue;
    position: relative;
    border-radius: 5px;
}
.input, .btn:after{
    color: #fff;
}
.btn:after{
    position: absolute;
    content: '@';
    right: 0;
    width: 1.3em;
    height: 1em;
}
.input{
    background: transparent;
    color: #fff;
    border: 0;
    padding-right: 20px;
    cursor: pointer;
    position: relative;
    padding: 5px 20px 5px 5px;
    z-index: 1;
}

Ознайомтеся з цією загадкою: http://jsfiddle.net/AJNnZ/


1

ви можете спробувати цю хитрість!

1-е) зробіть це:

<label for="img">
   <input type="submit" name="submit" id="img" value="img-btn">
   <img src="yourimage.jpg" id="img">
</label>

2-й) стиль це!

<style type="text/css">
   img:hover {
       cursor: pointer;
   }
   input[type=submit] {
       display: none;
   }
</style>

Це не чисто, але це зробить роботу!


1

Просто додайте піктограму в елемент кнопки, ось приклад

   <button class="social-signup facebook"> 
     <i class="fa fa-facebook-official"></i>  
      Sign up with Facebook</button>


0

Що я б робив, це робити:

Використовуйте тип кнопки

 <button type="submit" style="background-color:rgba(255,255,255,0.0); border:none;" id="resultButton" onclick="showResults();"><img src="images/search.png" /></button>

Я використовував фоновий колір: rgba (255,255,255,0,0); Так що вихідний колір фону кнопки відходить. Те саме з кордоном: жоден; це відніме початковий кордон.


0

Це мінімально необхідний стиль, підходить зображення до типового розміру кнопки:

<input type="button" value=" " style="background-image: url(http://www.geppoz.eu/geppoz.png);background-size:100% 100%;">

значення "пробіл" необхідне для збереження вирівнювання базової лінії, на випадок, якщо вам це потрібно ...


0

Відповідь sshow зробила це і для мене:

navigation.css :

[...]

.buttonConfiguration {
    width: 40px;
    background-color: red; /* transparent; */
    border: none;
    color: white;
    padding: 5px 10px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-family: corbel;
    font-size: 12px;
    font-weight: normal;
    margin: 1px 1px;
    cursor: pointer;

    background-image: url('../images/icons5/gear_16.png');
    background-position: center; /* 0px 0px; */
    background-repeat: no-repeat;
    vertical-align: middle;
}

[...]

frameMenu.php :

[... PHP, Javascript and HTML code ...]

<!-- <li><a target="frameBody" href="admin/conf/confFunctions.php"><input type="button" class="buttonSuperAdmin" value="<?= $oLanguage->getExpression('confSettings', 'title', 'C e n t e r s') ?>"></a> -->
<li><a target="frameBody" href="admin/conf/confFunctions.php"><input type="button" class="buttonConfiguration" value=""></a>
<ul>
<li><a target="frameBody" href="admin/conf/getglobals.php "><input type="button" class="buttonSuperAdminSub" value="<?= $oLanguage->getExpression('centerSettings', 'confAdmin1', 'GetGlobals') ?>"></a></li>
<li><a target="frameBody" href="admin/conf/getcwd.php "><input type="button" class="buttonSuperAdminSub" value="<?= $oLanguage->getExpression('confSettings', 'centerAdmin2', 'GetCWD') ?>"></a></li>
</ul>
</li>

[...]

Я успішно протестував це в останніх версіях Firefox та Chrome (станом на 9 лютого 2019 року).


0

Як це виглядає

Це добре працює для мене, і я обробляю курсор миші та натискаю CSS (також змінюючи колір тла):

HTML (тут показано 2 зображення, зображення1 вгорі зображення2):

<button class="iconButton" style="background-image: url('image1.png'), url('image2.png')"
  onclick="alert('clicked');"></button>

CSS (мої зображення 32px X 32px, тому я надав їм 4px для набивання та 5px округлення меж):

.iconButton {
    width: 36px;
    height: 36px;
    background-color: #000000;
    background-position: center;
    background-repeat: no-repeat;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    outline: none;
}

.iconButton:hover {
    background-color: #303030;
}

.iconButton:active {
    background-color: #606060;
}

button::-moz-focus-inner {
    border: 0;
}

-2
<img src="http://www.pic4ever.com/images/2mpe5id.gif">
            <button class="btn btn-<?php echo $settings["button_background"]; ?>" type="submit"><?php echo $settings["submit_button_text"]; ?></button>

будь ласка, додайте пояснення до своєї відповіді.
warunapww

Потрібно ">", щоб закрити тег img.
harrypujols

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