2010-03-24 45 views
72

que tienen un li estilo como sigue:¿Cómo hago un borde transparente con CSS?

li{ 
    display:inline-block; 
    padding:5px; 
    border:1px solid none; 
} 
li:hover{ 
    border:1px solid #FC0; 
} 

Cuando se ciernen sobre la li aparece la frontera sin hacer cambio de la li 's alrededor. ¿Es posible tener un 'borde' que no sea visible?

Respuesta

82

Puede usar "transparente" como color. En algunas versiones de IE, aparece como negro, pero no lo he probado desde IE6 días.

http://www.researchkitchen.de/blog/archives/css-bordercolor-transparent.php

+3

Bueno, funcionó en ie8, Mozilla, Opera y Chrome, lo suficientemente bueno para mí, no lo probé en Safari, pero no me importa mucho safari. ¡muchas gracias! –

+4

Sí, es específicamente IE6 que esto no funciona. IE7 está bien. – bobince

+0

muchas gracias, funcionó muy bien para mí –

29

Se podría eliminar el borde y aumentar el relleno:

li{ 
 
     display:inline-block; 
 
     padding:6px; 
 
     border-width:0px; 
 
    } 
 
    li:hover{ 
 
     border:1px solid #FC0; 
 
     padding:5px; 
 
    }
<ul> 
 
    <li>Hovering is great</li> 
 
</ul>

+0

Bueno, esto funcionó como un encanto, solo me preguntaba si había una manera más limpia de cómo hacerlo. si era posible tener un borde invisible? gracias de nuevo por la sugerencia. –

+3

Esto suena como una solución más compatible para mí – NibblyPig

+0

¡Acabo de darme cuenta de que el código funciona de forma opuesta a cómo lo necesita! Fijo. Además, iría con el color transparente. Simplemente no lo sabía: D –

3

Sí, puede utilizar border: 1px solid transparent

Otra solución es utilizar outline en vuelo estacionario (y establezca el borde en 0) que doesn Afectará el flujo de documentos:

li{ 
    display:inline-block; 
    padding:5px; 
    border:0; 
} 
li:hover{ 
    outline:1px solid #FC0; 
} 

NB. Solo puede establecer el esquema como una propiedad sharthand, no para lados individuales. Solo está destinado a ser utilizado para la depuración, pero funciona muy bien.

+0

¡Muchas gracias! Cuantas más opciones tengo, mejor –

3

Como dijo en un comentario que cuantas más opciones tenga, mejor, aquí hay otra.

En CSS3, hay dos diferentes denominados "modelos de caja". Uno agrega el borde y el relleno al ancho de un elemento de bloque, mientras que el otro no. Puede usar este último especificando

-webkit-box-sizing: border-box; 
-moz-box-sizing: border-box; 
-ms-box-sizing: border-box; 
box-sizing: border-box; 

Luego, en los navegadores modernos, el elemento siempre tendrá el mismo ancho. Es decir, si aplica un borde sobre este al desplazarse, el ancho del borde no se agregará al ancho total del elemento; el borde se agregará "dentro" del elemento, por así decirlo. Sin embargo, si recuerdo correctamente, debe especificar el width explícitamente para que esto funcione. Lo cual probablemente no sea una opción para ti en este caso particular, pero puedes tenerlo en cuenta para situaciones futuras.

+0

Este puede ser un caso de uso para un borde transparente: en lugar de aplicar un borde sobre el elemento estacionario, cambie su color de transparente a algo que pueda ver. – DaveWalley

2

This blog entry tiene una forma de emular border-color: transparent en IE6. El siguiente ejemplo incluye el arreglo "hasLayout" que se crió en los comentarios a la entrada de blog:

/* transparent border */ 
.testDiv { 
    width: 200px; 
    height: 200px; 
    border: solid 10px transparent; 
} 
/* IE6 fix */ 
*html .testDiv { 
    zoom: 1; 
    border-color: #FEFEFE; 
    filter: chroma(color=#FEFEFE); 
} 

Asegúrese de que el border-color utilizado en la solución IE6 no se utiliza en cualquier parte del elemento .testDiv. Cambié el ejemplo de pink a #FEFEFE porque parece ser aún menos probable que se use.

10

bueno esto es la mejor solución que he tenido .. esto es CSS3

uso siguiente propiedad a su div o trasparente frontera en cualquier lugar que quieren poner

por ejemplo,

div_class { 
border: 10px solid #999; 
background-clip: padding-box; /* Firefox 4+, Opera, for IE9+, Chrome */ 
} 

esto funcionará ..

27

Muchos de ustedes deben aterrizar aquí para encontrar una solución para el borde opaco en lugar de uno transparente. En ese caso, puede usar rgba, donde a significa alpha.

.your_class { 
    height: 100px; 
    width: 100px; 
    margin: 100px; 
    border: 10px solid rgba(255,255,255,.5); 
} 

Demo

Aquí, se puede cambiar el opacity del border de 0-1


Si simplemente desea un borde transparente completa, lo mejor que puede utilizar es transparent, como border: 1px solid transparent;

+0

Y puede usar esta herramienta para convertir de color hexadecimal a rgba ... http://www.hexcolortool.com ... donde puede especificar opcionalmente el color hexadecimal en la URL, como ... http : //www.hexcolortool.com/#ffcc00 – clayRay

0

La solución más fácil para esto es t o use rgba como color: border-color: rgba(0,0,0,0); que es el color del borde completamente transparente.

Cuestiones relacionadas