Saltar al contenido

¿Cómo hacer un borde transparente usando CSS?

Solución:

Bueno, si quieres completamente transparente, puedes usar

border: 5px solid transparent;

Si te refieres a opaco / transparente, entonces puedes usar

border: 5px solid rgba(255, 255, 255, .5);

Aquí, a significa alfa, que puede escalar, 0-1.

También algunos podrían sugerirle que use opacity que también hace el mismo trabajo, la única diferencia es que hará que los elementos secundarios también se vuelvan opacos, sí, hay algunas soluciones, pero rgba parece mejor que usar opacity.

Para navegadores más antiguos, siempre declare el color de fondo usando #(hexadecimal) como una alternativa, de modo que si los navegadores antiguos no reconocen el rgba, aplicarán el hex color a tu elemento.

Manifestación

Demo 2 (Con una imagen de fondo para div anidado)

Demo 3 (Con un img etiqueta en lugar de una background-image)

body {
    background: url(http://www.desktopas.com/files/2013/06/Images-1920x1200.jpg);   
}

div.wrap {
    border: 5px solid #fff; /* Fall back, not used in fiddle */
    border: 5px solid rgba(255, 255, 255, .5);
    height: 400px;
    width: 400px;
    margin: 50px;
    border-radius: 50%;
}

div.inner {
    background: #fff; /* Fall back, not used in fiddle */
    background: rgba(255, 255, 255, .5);
    height: 380px;
    width: 380px;
    border-radius: 50%; 
    margin: auto; /* Horizontal Center */
    margin-top: 10px; /* Vertical Center ... Yea I know, that's 
                         manually calculated*/
}

Nota (Para la demostración 3): La imagen se escalará de acuerdo con la altura y el ancho proporcionados, así que asegúrese de que no rompa la relación de escala.

También puedes usar border-style: double con background-clip: padding-box, sin el uso de ningún elemento adicional (pseudo-). Probablemente sea la solución más compacta, pero no tan flexible como las demás.

Por ejemplo:

<div class="circle">Some text goes here...</div>

.circle{
    width: 100px;
    height: 100px;
    padding: 50px;
    border-radius: 200px;
    border: double 15px rgba(255,255,255,0.7);
    background: rgba(255,255,255,0.7);
    background-clip: padding-box;
}

Resultado

Si observa de cerca, puede ver que el borde entre el borde y el fondo no es perfecto. Esto parece ser un problema en los navegadores actuales. Pero no se nota tanto cuando el borde es pequeño.

Utilizando el :before pseudo-elemento,
CSS3 border-radius,
y algo transparencia es bastante fácil:

DEMO EN VIVO

ingrese la descripción de la imagen aquí

<div class="circle"></div>

CSS:

.circle, .circle:before{
  position:absolute;
  border-radius:150px;  
}
.circle{  
  width:200px;
  height:200px;
  z-index:0;
  margin:11%;
  padding:40px;
  background: hsla(0, 100%, 100%, 0.6);   
}
.circle:before{
  content:'';
  display:block;
  z-index:-1;  
  width:200px;
  height:200px;

  padding:44px;
  border: 6px solid hsla(0, 100%, 100%, 0.6);
  /* 4px more padding + 6px border = 10 so... */  
  top:-10px;
  left:-10px; 
}

los :before se adhiere a nuestro .circle otro elemento que solo necesitas hacer (ok, bloque, absoluto, etc …) transparente y jugar con el opacidad del borde.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *