2012-01-28 17 views
7

Necesito cambiar el color de fondo de una imagen. La imagen es una imagen circular con fondo blanco. Necesito cuando pasas el cursor sobre ella para cambiar el fondo de la imagen del círculo a azul. Solo necesito que el círculo cambie.Cómo cambiar el color de una imagen en el vuelo estacionario

Mi código HTML es

<div class="fb-icon"> 
<a href="http://www.facebook.com/mypage" target="_blank"> 
<img src="images/fb_normal.png" alt="Facebook"> 
</a> 
</div> 

En CSS escribí:

.fb-icon:hover { 
    background: blue; 
} 

El código anterior me da el color azul, sino como un marco alrededor del icono de círculo. lo que necesito es cambiar el fondo del círculo en sí. Imagina que es como una señal de que está blanca cuando pasas el mouse sobre el azul.

Necesito una solución si se puede hacer por CSS o lo que sea. Lo siento si lo hago demasiado tiempo.

El problema: link

+0

es su imagen PNG un círculo blanco con fondo transparente? Si puede publicar un enlace para que lo revisemos, sería muy útil porque su problema no es muy claro. – Juank

+0

Estás diciendo que quieres que la * imagen * cambie, no el color de fondo, ¿correcto? –

+0

posible duplicado de [¿Puedo cambiar la apariencia de una imagen html durante el vuelo estacionario sin una segunda imagen?] (Http://stackoverflow.com/questions/60290/can-i-change-the-appearance-of-an-html -image-during-hover-without-a-second-image) No se pudo encontrar una publicación mejor que tenga la respuesta que desea, pero vea las 2 respuestas sobre el uso de sprites (no el aceptado). –

Respuesta

8

Idealmente, debe utilizar un PNG transparente con el círculo en blanco y el fondo de la imagen transparente. Luego puede configurar background-color del .fb-icon en azul al pasar el mouse. Por lo que está CSS sería:

fb-icon{ 
    background:none; 
} 

fb-icon:hover{ 
    background:#0000ff; 
} 

Además, si usted no desea utilizar PNG también se puede utilizar un sprite y alterar la posición de fondo. Un sprite es una imagen grande con una colección de imágenes más pequeñas que se puede utilizar como imagen de fondo al cambiar la posición de fondo. Por ejemplo, si su imagen original del círculo con el fondo blanco es 100px X 100px, puede aumentar la altura de la imagen a 100px X 200px, de modo que la mitad superior sea la imagen original con el fondo blanco, mientras la mitad inferior es la nueva imagen con el fondo azul. A continuación, se establece la configuración de su CSS:

fb-icon{ 
    background:url('path/to/image/image.png') no-repeat 0 0; 
} 

fb-icon:hover{ 
    background:url('path/to/image/image.png') no-repeat 0 -100px; 
} 
+0

Muchas gracias por ayudarme a usar su idea, con el siguiente código .fb-icon a { display: block; flotador: izquierda; background: url ('../ images/email.png ') centro de centro de desplazamiento sin repetición # 679d40; margen: 15px; ancho: 62px; \t altura: 62px; radio de borde: 32px; \t texto-guión: -99999px; } .fb-icon: hover a { background: url ('../ images/email.png') sin desplazamiento scroll center center # 000000; } –

0

Si he entendido bien, entonces sería más fácil si usted dio su imagen de fondo transparente y establecer la propiedad background-color de fondo del contenedor sin tener que utilizar filtros y así sucesivamente.

http://www.ajaxblender.com/howto-convert-image-to-grayscale-using-javascript.html

Muestra cómo utilizar filtros en el IE. Tal vez si aprovechas algo de eso. Sin embargo, no es muy compatible con varios navegadores. Otra opción podría ser tener dos imágenes y usarlas como imágenes de fondo (en lugar de etiquetas de img), intercambiar una detrás de otra con el selector de pseudónimo: hover.

+0

La imagen se puede ver en [enlace] (http://tinypic.com/r/15yfaf7/5) –

+0

El [enlace] (http://tinypic.com/view.php?pic=2u9h5jd&s=5) Necesito colorear solo el icono fb que el círculo, ¿me pueden ayudar con eso? –

0

Ok, intente esto:

obtener la imagen con el círculo transparente - http://i39.tinypic.com/15s97vd.png poner esa imagen en un elemento html y cambiar el color de fondo de ese elemento a través de CSS. De esta forma, obtiene el logotipo con el círculo en el color definido en la hoja de estilo.

El html

<div class="badassColorChangingLogo"> 
    <img src="http://i39.tinypic.com/15s97vd.png" /> 
    Or download the image and change the path to the downloaded image in your machine 
</div> 

El css

div.badassColorChangingLogo{ 
    background-color:white; 
} 
div.badassColorChangingLogo:hover{ 
    background-color:blue; 
} 

Tenga en cuenta que esto no trabajará en la no-alfa navegadores capaces como IE6, IE7 e. por ejemplo, puede usar una solución js. Google ddbelated png fix y puedes obtener el script.

+0

Entiendo que hagas tu mejor esfuerzo para ayudarme. Por lo tanto, haré todo lo posible para dejar en claro que usted puede ayudar. Lo siento, no borro toda la imagen para ti. por favor revise que [link] (http://tinypic.com/view.php?pic=2u9h5jd&s=5). Ahora necesito pasar el cursor sobre el círculo fb y debería ser azul. Su solución la convierte en un cuadrado blanco para que no aparezca la dosis de la caja y cuando vuelo, tengo un cuadrado azul alrededor del fb. Entonces, ¿qué necesito que el círculo sea azul? –

1

Es un poco tarde, pero me encontré con esta publicación.

No es perfecto, pero esto es lo que hago.

Código HTML

<div class="showcase-menu-social"><img class="margin-left-20" src="images/graphics/facebook-50x50.png" alt="facebook-50x50" width="50" height="50" /><img class="margin-left-20" src="images/graphics/twitter-50x50.png" alt="twitter-50x50" width="50" height="50" /><img class="margin-left-20" src="images/graphics/youtube-50x50.png" alt="youtube-50x50" width="50" height="50" /></div> 

Código CSS

.showcase-menu { 
    margin-left:20px; 
    margin-right:20px; 
    padding: 0px 20px 0px 20px; 
    background-color: #C37500; 
    behavior: url(/css/border-radius.htc); 
    border-radius: 20px; 
    } 

.showcase-menu-social img:hover { 
    background-color: #C37500; 
    opacity:0.7 !important; 
    filter:alpha(opacity=70) !important; /* For IE8 and earlier */ 
    box-shadow: 0 0 0px #000000 !important; 
} 

Ahora mi radio de borde de 20 píxeles coincide exactamente con el radio imagen Frontera. Como puede ver, el menú .showcase tiene el mismo fondo que .showcase-menu-social. Lo que hace es permitir que la "opacidad" surta efecto y no se muestra ningún fondo o borde "cuadrado", por lo que la imagen reduce ligeramente su saturación al pasar el mouse.

Es un efecto agradable y le da al espectador la opinión de que la imagen está enfocada. Estoy bastante seguro sobre un fondo más oscuro, tendría incluso un mejor efecto.

Lo bueno es que este es un código HTML-CSS válido y se validará. Para ser honesto, debería funcionar en elementos que no sean imágenes tan buenos como las imágenes.

¡Disfrútalo!

+0

Si tiene una clase llamada 'margin-left-20', también podría estar diciendo' style = "margin-left: 20px;" ' –

0

Utilice la propiedad de color de fondo en lugar de la propiedad de fondo en su CSS. Así su código se verá así:
.fb-icon:hover {
background: blue;
}

1

Una solución alternativa sería usar la nueva funcionalidad de imagen de la máscara CSS que funciona en todo, aparte de IE (todavía no se admite en EI11). Esto sería más versátil y fácil de mantener que algunas de las otras soluciones sugeridas aquí. También podría, en general, usar SVG. p.

item { mask: url('/mask-image.png'); } 

Hay un ejemplo del uso de la imagen de una máscara aquí:

http://codepen.io/zerostyle/pen/tHimv 

y un montón de ejemplos aquí:

http://codepen.io/yoksel/full/fsdbu/ 
Cuestiones relacionadas