2012-01-29 13 views
7

Stworzyłem przycisk po lewej stronie wyłącznie za pomocą CSS. To jest div w div. Jednak trzy przyciski po prawej stronie to background właściwości na tagach img. Zrobiłem to, abym mógł symulować efekt najazdu zgodnie z instrukcjami od here.CSS Wewnętrzna granica?

enter image description here

Teraz, czy istnieje sposób, aby dodać granicę wewnętrzną, jak w pierwszym przycisku do pozostałych trzech za pomocą CSS?

Fiddle here.

+1

nie byłoby to po prostu e asier, aby dodać go do samego obrazu? – Brettski

+1

Po pierwsze, jak by to zrobić? Po drugie, załóżmy, że tak nie jest. – john

+0

Farba.net Photoshop – Brettski

Odpowiedz

10

Według box model, wyściółka jest pomiędzy zawartościąi border. Powinieneś być w stanie projektować obrazy jak:

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

Nie należy potrzebują żadnych dodatkowych div s do osiągnięcia tego celu, nawet dla czystej przycisk CSS. Następujący styl jest dla przypadku, gdy obraz jest 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; 
} 

Oto DEMO z podwójnym granicy jak opisano powyżej.

+0

+1 twoje rozwiązanie jest lepsze – kinakuta

+0

Czy nie 'tło z kolorem i obrazem chcę ustawić konflikt tutaj? – john

+0

@awfullyjohn To nie powinno, możesz mieć zarówno kolor tła, jak i obraz tła. Zaktualizuję odpowiedź. – paislee

0

Zastosuj to samo podejście do przycisku - po prostu potraktuj ikony jako obrazy tła do elementu div. Więc trzeba mieć div z jakiegoś wyściółka wewnętrzna div (w przypadku img) z białym obramowaniem, a obraz tła (ikon).

0

Zakładając, że nie można bezpośrednio modyfikować obrazów ikon, po prostu umieść je w div w taki sam sposób jak "Dodaj do koszyka". Trzeba także użyć albo

background-position: center center; 

aby upewnić się, że ikona pozostaje skupione w mniejszej img i/lub

background-size: 24px 24px; 

skalowanie tła dół trochę tak białe obramowanie robi” t napotkasz symbole.

5

Nie potrzebujesz dwóch przycisków <divs> i <a>, aby wykonać przycisk. Możesz to zrobić za pomocą pojedynczego <a>. W przypadku obrazów i przycisku można użyć zewnętrznej granicy, aby uzyskać box-shadow. Wyśrodkuj elementy background-images w elementach <img>.

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

wyjściowa:

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

Dzięki. Zacznę to robić w ten sposób +1 – john

+0

Sprytny! Warto jednak zauważyć, że 'box-shadow' to [CSS3] (http://www.w3.org/TR/css3-background/), więc zgodność z przeglądarką może być problemem. W szczególności jest to [nieobsługiwane w IE 8 i poniżej] (https://developer.mozilla.org/en/CSS/box-shadow). –

+1

@awfullyjohn Wystarczy spojrzeć na link do prezentacji. Możesz zrobić przycisk z * tylko * kotwicą. Zaktualizowałem mój kod powyżej. – ThinkingStiff