Bild in ein <button> -Element einbetten

135

Ich versuche, ein PNG-Bild auf einem <button>Element in HTML anzuzeigen . Die Schaltfläche hat die gleiche Größe wie das Bild und das Bild wird angezeigt, jedoch aus irgendeinem Grund nicht in der Mitte. Daher ist es unmöglich, alles zu sehen. Mit anderen Worten, die obere rechte Ecke des Bildes befindet sich anscheinend in der Mitte der Schaltfläche und nicht in der oberen rechten Ecke der Schaltfläche.

Dies ist der HTML-Code:

<button id="close" class="closing" onClick="javascript:close_clip()"><img src="icons/close.png" /></button>

Update:
Was tatsächlich passiert, denke ich, ist ein Randproblem. Ich erhalte einen Rand von zwei Pixeln, sodass das Hintergrundbild nicht mehr auf der Schaltfläche angezeigt wird. Die Schaltfläche und das Bild die gleiche Größe haben , die nur ist 20px, so ist es sehr auffällig ist ... Ich habe versucht margin:0, padding:0aber es hat nicht geholfen ...

Amit Hagin
quelle
Für mich funktioniert es perfekt ... in welchem ​​Kontext erleben Sie das? Möglich, noch ein paar Codezeilen zu posten?
3
Können Sie dies auf einer Live-Site wie JS Fiddle reproduzieren, damit wir sehen können, was los ist?
David sagt, Monica

Antworten:

188

Sie können ein Bild vom Eingabetyp verwenden.

<input type="image" src="http://example.com/path/to/image.png" />

Es funktioniert als Schaltfläche und kann mit den Ereignishandlern verknüpft sein.

Alternativ können Sie CSS verwenden, um Ihre Schaltfläche mit einem Hintergrundbild zu gestalten und die Ränder, Ränder und dergleichen entsprechend festzulegen.

<button style="background: url(myimage.png)" ... />
Andrew Barber
quelle
1
... und benötigt kein JavaScript, um das Formular zu senden.
ComFreek
6
-1: " Sollte " ist ein zu starker Begriff, da dies nicht wirklich das <input type="image">ist, wofür er gedacht ist. Warum würden Sie CSS nicht vorschlagen?
Wesley Murch
Ich bevorzuge es, einen Knopf zu benutzen. Wenn ich keine Antwort finde, mache ich es. danke
Amit Hagin
Gestalten Sie es dann wie in dieser und anderen Antworten angegeben.
Andrew Barber
3
Vergessen Sie nicht, dass beide Tags für das Ende und das Ende für das Schaltflächenelement erforderlich sind. Technisch gesehen ist <button /> also nicht gültig. Es sollte <button> </ button> sein.
Tamas Czinege
66

Wenn es sich bei dem Bild um semantische Daten handelt (z. B. ein Profilbild), verwenden Sie ein <img>Element in Ihrem <button>und verwenden Sie CSS, um die Größe des Bilds zu ändern <img>. Wenn das Bild ist nur eine Möglichkeit , eine Taste optisch ansprechend, verwenden CSS zu machen , background-imageum Stil der <button>(und nicht ein verwenden <img>).

Demo: http://jsfiddle.net/ThinkingStiff/V5Xqr/

HTML:

<button id="close-image"><img src="http://thinkingstiff.com/images/matt.jpg"></button>
<button id="close-CSS"></button>

CSS:

button {
    display: inline-block;
    height: 134px;
    padding: 0;
    margin: 0;
    vertical-align: top;
    width: 104px;
}

#close-image img {
    display: block;
    height: 130px;  
    width: 100px;
}

#close-CSS {
    background-image: url( 'http://thinkingstiff.com/images/matt.jpg' );
    background-size: 100px 130px;
    height: 134px;  
    width: 104px;
}

Ausgabe:

Geben Sie hier die Bildbeschreibung ein

ThinkingStiff
quelle
@ ThinkingStiff <image>Element? Ich denke du meinst <img>in deinem Text;)
ComFreek
danke für die gute antwort !! aber das Problem bleibt ... Ich habe die Frage ein wenig aktualisiert - vielleicht kann es Ihnen helfen, sie besser zu verstehen.
Amit Hagin
@AmitHagin Ich habe dein Update gesehen. Denken Sie daran, dass eine Schaltfläche Ränder hat, die bei der Berechnung ihrer Höhe berücksichtigt werden. Um ein 20pxhohes Bild zu erhalten, müsste die Tastenhöhe sein 24px.
ThinkingStiff
@AmitHagin Auch zu verhindern Leerzeichen Probleme, Ihre ändern <img>zu display: block;. Ich habe den Demo-Link aktualisiert, um dies zu zeigen.
ThinkingStiff
Gibt es Bedenken hinsichtlich der Zugänglichkeit / des Alternativtextes mit dieser Methode? Ich bin wirklich verrostet, aber versteckt der Text, indem er um einige tausend Pixel versetzt wird, immer noch die akzeptierte Problemumgehung?
Rob Drimmie
10

Versuche dies

   <input type="button" style="background-image:url('your_url')"/>
Chris P.
quelle
10

Der einfachste Weg, ein Bild in eine Schaltfläche einzufügen:

<button onclick="myFunction()"><img src="your image name here.png"></button>

Dadurch wird die Größe der Schaltfläche automatisch auf die Größe des Bildes angepasst.

Eli Davies
quelle
4

Warum verwenden Sie kein Bild mit einem onclickAttribut?

Beispielsweise:

<script>
function myfunction() {
}
</script>
<img src='Myimg.jpg' onclick='myfunction()'>
SirFireball
quelle
0

Fügen Sie Ihrem Projekt einen neuen Ordner mit dem Namen Images hinzu. Legen Sie einige Bilder in den Ordner "Bilder". Dann wird es gut funktionieren.

<input type="image" src="~/Images/Desert.jpg" alt="Submit" width="48" height="48">
Parameswaran
quelle
0

Versuchen Sie es wie in diesem Format und verwenden Sie das Attribut "width", um die Bildgröße zu verwalten. Es ist ganz einfach. JavaScript kann auch in element implementiert werden.

<button><img src=""></button>

user13617141
quelle
-7

Schaltflächen unterstützen Bilder nicht direkt. Darüber hinaus ist die Art und Weise, wie Sie tun, für Links ()

Bilder werden mithilfe der Eigenschaft BACKGROUND-IMAGE stilvoll über Schaltflächen hinzugefügt

Sie können die Wiederholungen und andere Eigenschaften auch mithilfe des Tags angeben

Beispiel: Ein zu einer Schaltfläche hinzugefügtes Basisbild hätte den folgenden Code:

    <button style="background-image:url(myImage.png)">

Frieden

proctr
quelle
2
Ihre Antwort ist falsch, die offizielle Dokumentation besagt, dass es erlaubt ist.
Biphobe