Incorpora l'immagine in un elemento <button>


135

Sto cercando di visualizzare un'immagine png su un <button>elemento in HTML. Il pulsante ha le stesse dimensioni dell'immagine e l'immagine viene mostrata, ma per qualche motivo non al centro, quindi è impossibile vedere tutto. In altre parole, sembra che l'angolo in alto a destra dell'immagine sia situato al centro del pulsante e non nell'angolo in alto a destra del pulsante.

Questo è il codice HTML:

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

Aggiornamento:
ciò che effettivamente accade, penso, è un problema di margine. Ottengo un margine di due pixel, quindi l'immagine di sfondo esce dal pulsante. Il pulsante e l'immagine sono le stesse dimensioni, che è solo 20px, quindi è molto inferme ... ho provato margin:0, padding:0ma non è servito ...


Per me funziona perfettamente ... qual è il contesto in cui stai vivendo questo? Possibile pubblicare qualche altra riga di codice?

3
Puoi riprodurlo su un sito live, come JS Fiddle per farci vedere cosa sta succedendo?
David dice di ripristinare Monica il

Risposte:


189

È possibile utilizzare l'immagine del tipo di input.

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

Funziona come un pulsante e può avere i gestori di eventi collegati ad esso.

In alternativa, puoi usare css per modellare il tuo pulsante con un'immagine di sfondo e impostare i bordi, i margini e simili in modo appropriato.

<button style="background: url(myimage.png)" ... />

1
... e non richiede JavaScript per inviare il modulo.
ComFreek,

6
-1: " Dovrebbe " è un termine troppo forte, dal momento che non è proprio quello per cui <input type="image">è stato progettato. Perché non consiglieresti CSS?
Wesley Murch, il

Preferisco usare un pulsante. se non trovo risposta, lo farò. grazie
Amit Hagin

Quindi lo stile, come indicato in questa e altre risposte.
Andrew Barber

3
Non dimenticare che entrambi i tag di fine inizio sono richiesti per l'elemento button, quindi tecnicamente <button /> non è valido, dovrebbe essere <button> </button>.
Tamas Czinege,

66

Se l'immagine è un pezzo di dati semantici (come un'immagine del profilo, ad esempio), usa un <img>elemento all'interno del tuo <button>e usa CSS per ridimensionare <img>. Se l'immagine è solo un modo per rendere visivamente piacevole un pulsante, usa CSS background-imageper dare uno stile al <button>(e non usare un <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;
}

Produzione:

inserisci qui la descrizione dell'immagine


@ThinkingStiff <image>element? Penso che tu intenda <img>nel tuo testo;)
ComFreek

grazie per la buona risposta !! ma il problema rimane ... Ho aggiornato un po 'la domanda - forse può aiutarti a capirla.
Amit Hagin,

@AmitHagin Ho visto il tuo aggiornamento. Ricorda che un pulsante ha i bordi, che sono inclusi nel calcolo della sua altezza. Quindi, per adattarsi a 20pxun'immagine alta, l'altezza del pulsante dovrebbe essere 24px.
ThinkingStiff

@AmitHagin Inoltre, per evitare problemi con gli spazi bianchi, cambia <img>in display: block;. Ho aggiornato il link demo per mostrarlo.
ThinkingStiff

Ci sono dubbi sull'accessibilità / alt text con questo metodo? Sono davvero arrugginito, ma nascondere il testo compensandolo di qualche migliaio di pixel è ancora una soluzione alternativa accettata?
Rob Drimmie,

10

prova questo

   <input type="button" style="background-image:url('your_url')"/>

10

Il modo più semplice per inserire un'immagine in un pulsante:

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

Ciò ridimensionerà automaticamente il pulsante in base alle dimensioni dell'immagine.


4

Perché non usi un'immagine con un onclick attributo?

Per esempio:

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

0

Aggiungi una nuova cartella con il nome delle immagini nel tuo progetto. Inserisci alcune immagini nella cartella Immagini. Quindi funzionerà bene.

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

0

Prova come questo formato e usa l'attributo "larghezza" per gestire la dimensione dell'immagine, è semplice. JavaScript può essere implementato anche in element.

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


-7

I pulsanti non supportano direttamente le immagini. Inoltre il modo in cui stai facendo è per i collegamenti ()

Le immagini vengono aggiunte sui pulsanti utilizzando la proprietà BACKGROUND-IMAGE con stile

puoi anche specificare le ripetizioni e altre proprietà usando il tag

Ad esempio: un'immagine di base aggiunta a un pulsante avrebbe questo codice:

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

Pace


2
La tua risposta è errata, la documentazione ufficiale afferma che è consentita.
biphobe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.