2011-09-19 35 views
15

Necesito modificar un sitio web para hacer que la zona clicable de todos los enlaces sea más grande para dispositivos móviles. Di todos los enlaces un border transparente y un margin negativo del mismo tamaño, para no afectar el flujo de texto. Ahora esto funciona como un encanto. Pero no en elementos que tienen un fondo. El fondo se extiende hasta el borde transparente. Esto es costumbres de ser consistente entre todos los navegadores.Cómo ocultar el fondo debajo del borde

http://jsfiddle.net/hq65C/1/ aquí otro ejemplo: http://jsfiddle.net/DytDA/

¿Por qué es esto? Siempre pensé que el borde está fuera del elemento. ¿Cómo podría arreglar esto? (Necesito una solución que no requiera modificar el HTML).

Respuesta

30

¿Qué tal background-clip: padding-box;?

Demo

+0

esta es la solución que estaba buscando, gracias. Tal vez quiera agregar este enlace a su solución, para que sea perfecto;) http://jsfiddle.net/meo/DytDA/1/ – meo

+0

Genial, gracias. También tiene un soporte bastante bueno (IE9 +): https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip#Browser_compatibility –

0

Creo que si la frontera se encontraban fuera del elemento, el comportamiento que está detrás (que al hacer clic en la frontera se comporta como hacer clic en el interior del elemento) no funcionaría bien

si la imagen de fondo no se repite , puede establecer posición de fondo x posición en la misma cantidad que su ancho de borde. lo demás, también se puede intentar establecer la frontera-color al igual que el color detrás del elemento, pero si se trata de una imagen, buena suerte

+0

Gracias pero la imagen de fondo es un sprite por lo que realmente necesitan una otra solución. – meo

0

CSS background llena el área de la border, con el border-color capas sobre esto.

Como tiene un border transparente, muestra el background-color detrás de él.

Con HTML/CSS sin formato, no estoy seguro de que haya una forma de evitar esto.

Este jsFiddle demostrates esto:

http://jsfiddle.net/hq65C/8/

+0

ok la posición de fondo no cambia, pero muestra más del fondo: http://jsfiddle.net/DytDA/:/ – meo

+0

Sí, eso es porque el rojo no lo está cubriendo. Está ahí detrás del rojo en el primer anclaje. Lo siento, no estoy seguro de que puedas lograr lo que buscas con solo HTML/CSS. Puede haber soluciones javascript/jquery tal vez – Curt

0

probar esto:

<a href="#"><span style="background: red">link</span></a> test test test <br/> 
test test test 

aviso: el lapso significa un elemento en línea con otro estilo (otros valores CSS). otra div que forzará un nuevo bloque.

+0

como escribí en mi Pregunta, modificar el DOM no es una opción. – meo

Cuestiones relacionadas