Como crear bordes redondeados utilizando solo CSS y sin imágenes

Pablo

Si hay una propiedad que amo y que todavía no esta del todo implementada por todos los navegadores es border-radius una propiedad que trajo CSS3 y que nos permite en resumidas cuentas transformar bordes rectangulares en bordes redondeados, sin utilizar absolutamente ninguna imagen.

¿Qué tal es la compatibilidad con los distintos navegadores?

Esta propiedad de CSS3 todavía no esta soportada en su totalidad por todos los navegadores, así que se imaginaran que con la border-radius pasa exactamente lo mismo y no se equivocan.  La propiedad esta soportada por Firefox 3.0 o superiores, Chrome desde la primera versión y Safari desde la versión 3.1.  Y todavía no es compatible con Internet Explorer ni Opera, aunque probablemente en Opera sea compatible a partir de la nueva versión.

Como todavía CSS3 no esta implementado completamente el nombre de la propiedad puede variar un poco, por ejemplo para Chrome o Safari utilizaremos -webkit-border-radius mientras que para Firefox -moz-border-radius.

En lo particular que la propiedad no este soportada por IE/Opera me sigue molestando bastante, no obstante, yo la utilizo igual, llegado el caso las personas que usen Internet Explorer/Opera no verán bordes redondeados, ellos verán esquinas cuadradas y listo. No es algo grave ni nada, y sinceramente no creo que amerite la colocación de un script ni de un hack. Haciendo esto ultimo solo cambiaríamos un problema por otro, ya que en lugar de utilizar imágenes estaríamos recargando todo con js o distintas técnicas molestas.

Empecemos. El espacio de trabajo

Para hacer todas estas pruebas lo primero que voy a crear es una simple DIV con un tamaño predeterminado y con un color de fondo. El resultado seria una caja común y corriente con las esquinas cuadradas.

Primero el HTML

[HTML]

[/HTML]

Ahora el CSS
[CSS].demo {background: #009933; width:585 px; height: 110 px;}[/CSS]

El resultado:

DIV Inicial

Primeros pasos para aplicar bordes redondeados CSS

Comencemos con la declaración básica. Apliquemos un ángulo de 15px en todos los bordes, agregando el siguiente código para que Firefox lo interprete.

[CSS].demo {-moz-border-radius:15 px;}[/CSS]

Una vez aplicada la propiedad el resultado será el siguiente:

bordes redondeados css

Ahora vamos a detenerlos a explicar un poco como funciona esto, cuando solo colocamos un valor, el mismo se aplicara en todas las esquinas, no obstante podemos declarar cada valor de forma independiente y esto lo hacemos de la siguiente manera:

  • -moz-border-radius-topleft: Esquina superior izquierda.
  • -moz-border-radius-topright: Esquina superior derecha.
  • -moz-border-radius-bottomleft: Esquina inferior superior izquierda.
  • -moz-border-radius-bottomright: Esquina inferior superior derecha.

Así que en pocas palabras la versión resumida seria idéntica a:

resumen propiedad radius

Perfecto, pero ¿se pueden combinar las distintas esquinas?

La respuesta es…Si!!! Y es de lo más divertido combinar distintos tamaño o bien dejar alguna esquina cuadra mientras que las otras son redondeadas. Además que quedan perfectas el efecto visual es muy bueno. Vamos con ejemplos.

[CSS].demo {-moz-border-radius:15px 55px;}[/CSS]

Al declarar solo dos dimensiones las mismas se aplicaran de la siguiente manera:

  • -moz-border-radius:15px 55px => 15px Esquina Sup IZQ y Esquina Inf DER
  • -moz-border-radius:15px 55px=> 55px Esquina Sup. DER y Esquina Inf. IZQ

Y el resultado es:

dos esquinas redondeadas

También se pueden declarar solo tres valores. Pero no tiene sentido explicarlo, la mitología es la misma y escribiendo un línea de CSS pueden probarla ustedes mismos :D

¿Y que pasa con los otros navegadores?

Hasta hora probamos todo solamente utilizando Firefox, la razón es simple, es mas didáctico hacerlo así, ahora para Safari y Chrome la forma de lograr los mismos resultados es exactamente idéntico, con la única diferencia que utilizaremos -webkit-border-radius en lugar de -moz-border-radius.

  • -webkit-border-top-left-radius: Esquina superior izquierda.
  • -webkit-border-top-right-radius: Esquina superior derecha.
  • -webkit-border-bottom-left-radius: Esquina inferior superior izquierda.
  • -webkit-border-bottom-right-radius: Esquina inferior superior derecha.

Exactamente funciona igual que en los ejemplos que vimos anteriormente.

Combinando todo para lograr bordes redondeados

Ahora solo resta combinar estas propiedades para lograr la mayor compatibilidad entre los navegadores, quedando de la siguiente manera un borde redondeado compatible con Firefox, Chrome, Safari:

[CSS]
.demo {
-moz-border-radius:15px 55px 5px;
-webkit-border-radius: 15px 55px 5px;
}
[/CSS]

Esto es todo, ya con esto deberíamos lograr nuestros preciados bordes redondeados, livianos, sin recargar con imágenes a nuestros visitantes. Ojala algún día el resto de los navegadores recuerden que existen estándares y los apliquen.

Pablo

Programador desde hace más de 11 años, adicto a internet, cafeinómano, fanático de la información, intento de emprendedor, trabaja de forma compulsiva solo en lo que ama. Sueña con tener una aplicación con más de 1 millón de usuarios.

Comentarios

  1. TecnoBITA Responder

    Es muy agradable el acabado visual que dan los bordes redondeados en los sitios web, sin duda alguna que estas técnicas son muy útiles.

    Curioso que no conocía lo de combinar las esquinas, muy bueno :)

  2. ejosvp Responder

    sencillo, y funcional, los de opera que pena =P, los de IE me caen mal xD

  3. Pablo Responder

    @Tecnobita: Erick, yo lo descubri hace un tiempo y queda genial! :D

    @Ejosvp: Si la verdad que los usuarios de IE se lo pierden :P

  4. Analton Responder

    Muy bueno el post Pablo.
    Una sola cosa para resaltar CSS3 todavía no es estándar. Esta en desarrollo, lo cual quiere decir que quizás mañana la propiedad border-radius no exista.
    Y por eso tambien la implementacion de Gekko y de Webkit (los motores de Firefox, Chrome y Safari) es distinta.
    En la pagina del W3c encontre algunos ejemplos de cosas bastante copadas que se pueden hacer con esta propiedad (esto no significa que los navegadores ya lo implementen de esa forma)
    Les dejo el enlace:
    http://www.w3.org/TR/css3-background/#the-border-radius

  5. Pablo Responder

    @Analton: Buen apunte, sabes que tenes razón, no se porque carajo estaba seguro de que ya estaba estandarizado, debe ser por la cantidad de tiempo que hace que lo estan laburando. Gracias por la data!

  6. Praboy Responder

    uy uy uyy, justo estaba pensando el diseño para un nuevo proyecto…
    Esas esquinas combinadas me abrieron la mente :P

  7. Pablo Responder

    @Praboy: jejejej, genial, me alegro mucho que te sirvan!!! :D

  8. Neri Responder

    El otro día lo leí y lo dejé marcado, ahora ando con un menú en un header y me acordé del efecto y lo puse a práctica, se ve muy bueno, asi que gracias :D

  9. Praboy Responder

    mm hay un problema !!
    Miren como se ve en chrome:
    http://img33.imageshack.us/img33/5548/chvsff.jpg

  10. Javier Responder

    Lo estuve probando con Firefox y con Midori quedan perfecto, con Konqueror quedan cuadrados, que lástima que no es estandar.

  11. fotos locas Responder

    gracias funciona perfecto en firefox

  12. ximena Responder

    no me sirve para IE, lo necesito, porfavor si me pueden dar respuesta.
    Grcias:)

  13. J.v.C Responder

    Gracias por la info =), saludos!

  14. pepito Responder

    Esto realmente que me sirvio gracias por la informacion, y como funcionaria en otros exploradores?

  15. Ricardo Responder

    Muy buena herramienta, el problema es que css3 se podrá utilizar con confianza yo creo que en varios años despues, si aun hay gente usando navegadores antiguos, increible pero cierto. La gente que no sabe del tema se queda con el que viene por defecto en windows xp…lástima que sea el so mas usado.

  16. Carlos Responder

    Muy buen aporte gracias. Internet Explorer apesta ojala desaparezca!!!

  17. Pancho Opcionweb Responder

    Te dejo una recopilación con 16 creadores online de bordes redondeados y demás propiedades css. Espero que te parezca interesante.

    http://www.opcionweb.com/index.php/2012/01/12/creadores-de-bordes-redondeados-css-online/

    Un saludo.

  18. Profesor Yeow Responder

    Gracias por la info. Se agradece

  19. Carlos | tienda airsoft Responder

    Que grande eres, es un gran aporte para la gente que estamos empezando en el mundo web, mil gracias.

Realizar un comentario