HTML / CSS Wie füge ich ein Bildsymbol zum Eingabetyp = "Schaltfläche" hinzu?


110

Ich verwende das folgende CSS, aber es platziert ein Bild in der Mitte der Schaltfläche. Gibt es eine Möglichkeit, ein Symbol mit nach links oder rechts auszurichten <input type="button">, damit der Text und das Bild gut zusammenpassen und ausgerichtet werden?

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

Antworten:


143

Wenn Sie unbedingt verwenden müssen input, versuchen Sie Folgendes:

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

Es ist normalerweise etwas einfacher, ein buttonmit einem imgInneren zu verwenden:

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

Die Browser-Implementierungen buttonfür das Senden sind jedoch inkonsistent, ebenso wie die Tatsache, dass alle Schaltflächenwerte gesendet werden, wenn sie buttonverwendet werden. Dies beendet die Erkennung "Welche Schaltfläche hat geklickt" in einem Formular mit mehreren Übermittlungen.


muss nicht, aber ich hier Button Tag ist fehlerhaft in dh 6 oder verhält sich in einigen Browsern anders?
Brett

Soweit ich erfahren habe, funktioniert button(mit Typ submit) identisch inputmit der Ausnahme, dass Elemente darin enthalten sind (und nicht nur darauf angewendete Stile).
Delan Azabani

8
Der 'fehlerhafte' Teil der IE- <button>Implementierung beruht auf der Tatsache, dass 1) bei einem POST / GET die 'Werte' für jede Schaltfläche und nicht nur für die angeklickte Schaltfläche übermittelt werden und 2) anstatt das eigentliche valueAttribut zu senden , mag IE um den Inhalt (inneres HTML) der Schaltfläche zu senden. Diese Tatsachen machen das <button>Tag unzuverlässig, wenn die durchgeführte Aktion von der Schaltfläche abhängt, auf die ein Benutzer geklickt hat.
Duroth

Großartiger Punkt, Duroth. Ja, das ist sicherlich ein Kicker für Dinge wie ein Bearbeitungspost-Formular mit "Vorschau" und "Senden" usw.
Delan Azabani

3
Sie können verwenden <button>und <input type=button>austauschbar. Wenn Sie nicht möchten, dass <button> im IE gesendet wird, stellen Sie den Typ folgendermaßen ein:<button type="button">Text</button>
Darcy

74

Dies sollte tun, was Sie wollen, vorausgesetzt, Ihr Schaltflächenbild ist 16 x 16 Pixel groß.

<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 */
}

Beispielschaltfläche:

Beispielschaltfläche

Aktualisieren

Wenn Sie Less verwenden, kann dieses Mixin nützlich sein.

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

Das obige kompiliert in

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


Benötigen Sie keine Anführungszeichen im Argument der url () -Methode?
Ecbrodie


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>

Ich hoffe das hilft dir.


2

Wenn Sie Spritesheets verwenden, wird dies unmöglich und das Element muss umbrochen werden.

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

Schauen Sie sich diese Geige an: http://jsfiddle.net/AJNnZ/


1

Sie können diesen Trick versuchen!

1.) mach das:

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

2.) Style es!

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

Es ist nicht sauber, aber es wird den Job machen!


1

Fügen Sie einfach das Symbol im Schaltflächenelement hinzu. Hier ist das Beispiel

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


0

Was ich tun würde, ist dies zu tun:

Verwenden Sie einen Schaltflächentyp

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

Ich habe Hintergrundfarbe verwendet: rgba (255,255,255,0,0); Damit verschwindet die ursprüngliche Hintergrundfarbe einer Schaltfläche. Das gleiche gilt für die Grenze: keine; es wird die ursprüngliche Grenze wegnehmen.


0

Dies ist der minimal erforderliche Stil, der das Bild an die Standardgröße der Schaltflächen anpasst:

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

Der Wert "Abstand" wird benötigt, um die Ausrichtung der Grundlinie beizubehalten, nur für den Fall, dass Sie ihn benötigen ...


0

Die Antwort von sshow hat es auch für mich getan:

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>

[...]

Ich habe dies erfolgreich unter den neuesten Versionen von Firefox und Chrome getestet (Stand 9. Februar 2019).


0

Wie es aussieht

Dies funktioniert gut für mich und ich gehe auch mit Hover und Click CSS um (durch Ändern der Hintergrundfarbe):

HTML (hier 2 Bilder, Bild1 über Bild2):

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

CSS (meine Bilder sind 32px x 32px groß, daher habe ich ihnen 4px zum Auffüllen und eine 5px-Randrundung gegeben):

.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>

Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu.
Warunapww

Benötigt ein ">", um das img-Tag zu schließen.
Harrypujols

1
Warum benutzt du PHP?
Top Cat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.