2012-01-29 8 views
7

Ho creato il pulsante a sinistra puramente con CSS. È un div all'interno di un div. Tuttavia, i tre pulsanti sulla destra sono proprietà background sui tag img. L'ho fatto in modo da poter simulare un effetto rollover seguendo le istruzioni da here.CSS Inner Border?

enter image description here

Ora, c'è un modo per aggiungere il bordo interno, come nel primo tasto, per gli altri tre con i CSS?

Fiddle here.

+1

Non sarebbe solo essere e asier per aggiungerlo all'immagine stessa? – Brettski

+1

Per prima cosa, come lo faresti? Secondo, diciamo che non lo è. – john

+0

Vernice.net Photoshop – Brettski

risposta

10

Secondo il box model, imbottitura è tra il contenuti e confine. Si dovrebbe essere in grado di stile le immagini come:

.img-btn { 
    background: #FFF; // inner border color 
    padding: 2px; // inner border width 
    border: 2px solid #[yourgreen]; // outer border 
} 

Non dovrebbe essere necessario alcun aggiuntivi div s per raggiungere questo obiettivo, anche per il pulsante CSS puro. Seguendo lo stile è il caso in cui l'immagine è un background-image:

.img-btn { 
    background: #FFF url('your.img') no-repeat; 
    padding: 2px; 
    border: 2px solid #[yourgreen]; 
    width: [image width]; 
    height: [image height]; 
    background-position: center center; 
} 

Ecco un DEMO di doppio confine, come descritto in precedenza.

+0

+1 la tua soluzione è migliore – kinakuta

+0

Non 'sfondo con il colore e l'immagine Voglio impostare il conflitto qui? – john

+0

@awfullyjohn Non dovrebbe, è possibile avere sia un colore di sfondo che un'immagine di sfondo. Aggiornerò la risposta – paislee

0

Utilizza lo stesso approccio del pulsante: considera le icone come immagini di sfondo sul div interno. Così si dovrebbe avere un div con un po 'imbottitura, un div interno (nel tuo caso img) con un bordo bianco, e un'immagine di sfondo (le icone.)

0

Supponendo che non sia possibile modificare direttamente le immagini dell'icona, basta avvolgerle in un div allo stesso modo di "Aggiungi al carrello". Avrete anche bisogno di utilizzare

background-position: center center; 

per garantire che l'icona rimane centrato all'interno della IMG più piccolo, e/o

background-size: 24px 24px; 

in scala lo sfondo giù un po 'in modo che il bordo bianco doesn' t correre nei simboli.

5

Non sono necessari due <divs> e un <a> per eseguire il pulsante. Puoi farlo con un singolo <a>. Per entrambe le immagini e il pulsante è possibile utilizzare box-shadow per eseguire il bordo esterno. Centra lo background-images negli elementi <img>.

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

uscita:

enter image description here

HTML:

<a id="add" href="#">Add To Cart</a> 
<img id="facebook" class="icon" /> 
<img id="twitter" class="icon" /> 
<img id="email" class="icon" /> 

CSS:

#add { 
    background-color: #9bc9c7; 
    border: 1px solid white; 
    box-shadow: 0 0 0 2px #9bc9c7; 
    color: white; 
    display: inline-block; 
    font: normal 13px/25px Helvetica, Arial, Sans Serif; 
    height: 25px; 
    margin-right: 6px; 
    text-align: center; 
    text-decoration: none; 
    text-transform: uppercase; 
    width: 120px; 
    vertical-align: top; 
} 

#add:hover { 
    background-color: #eabeb2; 
    box-shadow: 0 0 0 2px #eabeb2; 
} 

.icon { 
    background-color: rgb(155, 201, 199); 
    border: 1px solid white; 
    box-shadow: 0 0 0 2px rgb(155, 201, 199); 
    height: 25px; 
    margin-right: 3px; 
    width: 25px;  
} 
+0

Grazie. Inizierò a farlo in questo modo +1 – john

+0

Intelligente! Vale la pena notare, tuttavia, che 'box-shadow' è [CSS3] (http://www.w3.org/TR/css3-background/), quindi la compatibilità del browser potrebbe essere un problema. In particolare, è [non supportato in IE 8 e in basso] (https://developer.mozilla.org/en/CSS/box-shadow). –

+1

@awfullyjohn Ho appena guardato il tuo link dimostrativo. Puoi fare il pulsante con * solo * l'ancora. Ho aggiornato il mio codice sopra. – ThinkingStiff