Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. CSS

Gráficos en CSS: cómo crear un organigrama

by
Difficulty:IntermediateLength:MediumLanguages:

Spanish (Español) translation by Ana Paulina Figueroa Vazquez (you can also view the original English article)

En tutoriales anteriores hemos aprendido cómo crear diferentes tipos de gráficos, incluyendo gráficos de barras, gráficos de termómetro y gráficos de anillo. Hoy continuaremos este camino construyendo un organigrama puramente en CSS.

¿Estás listo para poner a prueba tus habilidades en CSS?

El organigrama que vamos a construir

Este es el gráfico en CSS que vamos a crear:

Está compuesto por cuatro niveles y describe la estructura jerárquica de una empresa.

¿Qué es un organigrama?

Para averiguar qué es un organigrama, tomemos prestada la definición de Wikipedia:

"Un diagrama organizativo, también llamado organigrama o tabla organizacional, es un diagrama que muestra la estructura de una organización y las relaciones y rangos relativos de sus partes y puestos/trabajos. El término también se usa para diagramas similares, por ejemplo aquellos que muestran los diferentes elementos de un campo del conocimiento o de un grupo de lenguajes."

Aquí puedes ver un ejemplo:

De S.s.kulkarni9090, trabajo propio, CC BY-SA 3.0

Este tipo de gráfico se usa comúnmente para presentar las relaciones entre las personas o los departamentos de una empresa. En un sitio web corporativo, probablemente lo encontrarás en la página "Acerca de nosotros" o "Empresa".

También verás organigramas usados para representar árboles genealógicos (consulta el árbol genealógico de la familia real británica y la línea de sucesión en el sitio web de la BBC). Son ideales para ilustrar jerarquías.

1. Especifica el contenedor

Nuestro gráfico residirá en el interior de un contenedor:

2. Define algunos estilos básicos

Antes de ir por sus niveles, configuraremos algunas reglas de restablecimiento y clases de ayuda:

Presta atención a la clase rectangle. La agregaremos a cada nodo/elemento de nuestro gráfico.

Nota: no optimicé el CSS por simplicidad. Esto te ayudará a comprender mejor los estilos de cada nivel.

3. Especifica los niveles

En este punto estamos listos para especificar los niveles del gráfico; como discutimos anteriormente, aquí tendremos cuatro de ellos:

Levels

Cada nivel representará un rol en una empresa, comenzando por el de mayor rango.

Nivel #1

El primer nivel incluirá solamente un nodo:

Level 1

HTML

Para describirlo usaremos una etiqueta h1, ya que es la parte más importante de nuestro gráfico:

CSS

Usaremos su pseudoelemento ::before para crear una relación entre el primer nivel y el segundo:

Nivel #2

El segundo nivel estará compuesto por dos nodos:

Level 2

Como veremos en un momento, cada nodo incluirá otros nodos hijos.

Estos nodos hijos representarán niveles inferiores de la jerarquía administrativa.

HTML

Para describirlo, usaremos una lista ordenada con dos elementos de lista. Cada elemento de lista contendrá un elemento h2:

CSS

Crearemos el diseño de este nivel gracias a la ayuda de CSS Grid.

A continuación usaremos el pseudoelemento ::before de elementos específicos para crear las asociaciones entre los nodos de este nivel y los niveles adyacentes:

Observa que también definimos el pseudoelemento ::after de los nodos de segundo nivel. Esto aparecerá solamente en las pantallas pequeñas.

Nivel #3

El tercer nivel incluirá cuatro nodos.

Asociaremos los primeros dos nodos con el primer nodo del segundo nivel, y asociaremos los dos últimos nodos con su segundo nodo:

Level 3

HTML

Definiremos dos listas nuevas todavía dentro de la lista inicial en donde reside el segundo nivel. Cada una de ellas contendrá dos elementos de lista. Para cada elemento de lista especificaremos un elemento h3:

CSS

Posicionaremos los nodos nuevamente gracias a la ayuda de CSS Grid.

De la misma forma, estableceremos el pseudoelemento ::before de elementos específicos para crear las conexiones necesarias:

Nivel #4

Para el cuarto nivel necesitaremos dieciséis nodos. Estos serán distribuidos igualmente en cuatro listas.

Cada nodo del tercer nivel incluirá una lista:

Level 4

HTML

Definiremos cuatro listas nuevas todavía en el interior de la lista inicial en la que reside el segundo nivel. Cada una de ellas contendrá cuatro elementos de lista. Para cada elemento de lista especificaremos un elemento h4:

CSS

Nuevamente estableceremos el pseudoelemento ::before de elementos específicos para asociar los nodos del cuarto nivel con sus padres:

Los organigramas y la responsividad

Lograr que un organigrama sea responsivo es complicado. Recuerdo tener que reconstruir el marcado una o dos veces hasta llegar a esta versión. Por lo tanto, si planeas crear un gráfico de ese tipo, te recomiendo que sigas un enfoque basado en los dispositivos móviles.

Con todo esto en mente, este es su diseño para dispositivos móviles:

Responsive Layout of Organization Chart

Para lograr este comportamiento tenemos que modificar algunos estilos:

¡Hemos terminado nuestro gráfico en CSS!

¡Enhorabuena, amigos! Sin escribir una sola línea de JavaScript, hemos logrado construir un organigrama completamente funcional.

Recordemos lo que construimos:

Por supuesto, ten en cuenta que nuestro gráfico tiene una estructura específica. Dependiendo de tus necesidades es posible que quieras enriquecer su contenido o modificar su diseño. Si necesitas algo más avanzado o dinámico, echa un vistazo a algunas bibliotecas de JavaScript como Highcharts.js.

¿Alguna vez has creado un gráfico en CSS? Si es así, ¡por favor comparte tu experiencia con nosotros!

Más gráficos en CSS (algunas veces con JavaScript)

Si aún necesitas un poco de inspiración, no olvides consultar mis otros gráficos en el archivo de Tuts+ o haz una búsqueda rápida en CodePen.

Como siempre, ¡muchas gracias por leer!

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.