Colores¶
Material for MkDocs aporta una configuración de colores basada en el tema Material de Google. Más allá de este estándar, podemos personalizar nuestras páginas web usando otros colores que sean de nuestro agrado.
Esquemas de color¶
Al conjunto de colores aplicado se le llama "esquema". Material for MkDocs incluye de serie dos esquemas de color, uno claro y otro oscuro, llamados default y slate respectivamente. Como su nombre indica, el esquema por defecto es el claro.
Si queremos un tema oscuro, podemos establecerlo en mkdocs.yml:
theme:
name: material
palette:
scheme: slate
O si queremos optar por el color claro de forma explícita:
theme:
name: material
palette:
scheme: default
Selector de paleta¶
Podemos hacer uso a la vez de ambos esquemas mencionados, el claro y el oscuro, mostrando en la cabecera del documento un selector en forma de icono sobre el que se pueda pulsar. Cada icono representa un esquema. En el archivo mkdocs.yml tenemos que escribir algo así como:
theme:
name: material
palette:
- scheme: default
toggle:
icon: material/toggle-switch-off-outline
name: Modo oscuro
- scheme: slate
toggle:
icon: material/toggle-switch
name: Modo claro
Véase que, en este caso, el parámetro palette cambia de naturaleza, convirtiéndose en una lista de dos elementos:
theme:
palette:
- scheme: default
- scheme: slate
Cada esquema lleva asociado un botón selector (toggle) con dos propiedades:
namees el texto emergente que se muestra al pasar el ratón por el icono-
icones uno de los proporcionados por Material for MkDocs, como vimos en el capítulo dedicado a iconos. Algunos de los más adecuados para este propósito pueden ser:- + –
material/toggle-switch-off-outline+material/ toggle-switch - + –
material/weather-sunny+material/weather-night - + –
material/eye-outline+material/eye - + –
material/lightbulb-outline+material/lightbulb - + –
material/brightness-4+material/brightness-7
- + –
Ajustar la paleta al sistema de forma automática¶
Podemos ajustar la paleta de colores a la configuración del ordenador donde se está visualizando la documentación, indicando el esquema a aplicar a cada caso:
theme:
name: material
palette:
- media: "(prefers-color-scheme: light)"
scheme: default
toggle:
icon: material/toggle-switch-off-outline
name: Modo oscuro
- media: "(prefers-color-scheme: dark)"
scheme: slate
toggle:
icon: material/toggle-switch
name: Modo claro
Cuando el usuario entra en el sitio web, se evalúa cada "media" y se toma el primer esquema que coincida con el sistema.
Color primario¶
Más allá de la selección de un esquema claro u obscuro, podemos cambiar el color de determinados elementos. El denominado color primario es aquel que se usa para la cabecera de la página web, así como elementos tales como los enlaces. Por defecto es indigo , una especie de azul oscuro intenso. Podemos configurarlo:
theme:
name: material
palette:
primary: indigo
...y cambiarlo por:
- primary: red
- primary: ink
- primary: purple
- primary: deep purple
- primary: indigo
- primary: blue
- primary: light blue
- primary: cyan
- primary: teal
- primary: green
- primary: light green
- primary: lime
- primary: yellow
- primary: amber
- primary: orange
- primary: deep orange
- primary: brown
- primary: grey
- primary: blue grey
- primary: black
- primary: white
Color de resalte¶
El Accent Color se usa para resaltar elementos con los que podemos interaccionar, como por ejemplo, al pasar el ratón por un enlace.
theme:
name: material
palette:
accent: indigo
Por defecto es indigo. Puede ser:
red pink purple deep purple
indigo blue light blue cyan
teal green light green lime
yellow amber orange deep orange
Colores personalizados¶
¿Que hacer si ninguno de los colores estándar mencionados coincide con nuestro color corporativo? Material for MkDocs asocia cada color a un nombre identificador, lo que en el mundo de las páginas web se llama "variables CSS". Por ejemplo, el color primario se representa internamente mediante la variable md-primary-fg-color. De esta forma, en una hoja de estilos CSS podemos redefinir esa variable, asociándola a un nombre de color tomado del estándar CSS:
--md-primary-fg-color: crimson;
...o bien, usando códigos de color:
--md-primary-fg-color: #dc143c;
Para aquellos que sean neófitos en la sintaxis CSS, diremos que los colores se pueden representar mediante su nombre simbólico o su código de color. Ver referencia de nombres y códigos en:
https://www.w3.org/wiki/CSS/Properties/color/keywords
Vamos a aplicar nuestros colores favoritos modificando las variables de Material for MkDocs. En el archivo de configuración escribimos:
theme:
name: material
palette:
primary: custom
Seguidamente tenemos que crear una hoja de estilos donde modificar los valores de las variables. Lo indicamos en la configuración:
extra_css:
- estilos/mis_estilos.css
El siguiente paso es crear una carpeta /docs/estilos y poner allí nuestro archivo mis_estilos.css. Entre otras cosas, en el texto de ese archivo incluimos algo así como:
:root {
--md-primary-fg-color: #EE0F0F;
--md-primary-fg-color--light: #ECB7B7;
--md-primary-fg-color--dark: #90030C;
}
Véase que aplicamos esta regla CSS a la clase genérica :root, que representa todo el documento. ¿Como averiguar los nombres del resto de variables? Podemos tomar como guía las definiciones de colores de Material for Mkdocs.
¿Cual es el código de cada color? Lo veremos a continuación.
Códigos de colores¶
¿Como es posible que cada color tenga un código? Para un recién llegado al mundo de las imágenes digitales, esto puede parecer sorprendente. A fin de cuentas, en la fotografía de un paisaje podemos tener millones de tonalidades, lo que aparentemente es difícil de catalogar. Pero no debemos olvidar que todo color es una combinación de otros tres básicos, rojo, verde y azul.
Imaginemos que la cantidad de cada color básico va de 0 a 100. Supongamos que queremos obtener un verde azulado . Tendríamos:
- Rojo: 0
- Verde: 50, en una escala de 0 a 100
- Azul: 50, idem
Con lo que el verde azulado se indica como 0, 50, 50.
Los valores 0, 0, 0 para los tres colores básicos representan la ausencia de color, es decir, el negro. Por el contrario, los valores 100, 100, 100 representarían el blanco. La siguiente combinación:
- Rojo: 0
- Verde: 100, en una escala de 0 a 100
- Azul: 100, idem
Representaría un verde azulado más luminoso, un color conocido como cian .
¿Cuantos colores podemos representar con este sistema? En principio podemos lograr 100 x 100 x 100 combinaciones de colores diferentes, es decir, un millón. Pero en el mundo de los fotografía digital, la cantidad de cada color básico se mide tomando valores de 0 a 255, lo que nos proporciona 16.777.216 millones de combinaciones, suficiente para el ojo humano, que según los estudios realizados, no llega a distinguir tantas tonalidades.
Por lo tanto:
- 255, 0, 0 representa un rojo puro
- 0, 255, 0 representa el verde puro
- 0, 0, 255 representa el azul
- 0, 0, 0 representa el negro
- 255, 255, 255, es el blanco
Representación hexadecimal¶
En el mundo de la informática, es costumbre representar los valores numéricos en sistema de numeración hexadecimal, en lugar del decimal, al que estamos habituados. En este cuaderno no vamos a hacer una introducción a los sistemas de numeración. Basta con saber que en hexadecimal se cuenta de dieciséis en dieciséis, y se utilizan los siguientes símbolos:
0 1 2 3 4 5 6 7 8 9 A B C D E F
Veamos una simple calculadora hexadecimal. Introduzca en la casilla superior un valor en sistema decimal o hexadecimal. Pulsando en alguno de los dos botones, se hace la conversión deseada y se muestra el resultado.
Introduzca valor:
Resultado:
Usando el sistema hexadecimal, en lugar de usar un rango de valores de 0 a 255, los colores básicos van de 0 a FF, con lo cual:
- FF, 0, 0 es el rojo
- 0, FF, 0 es el verde
- 0, 0, FF es el azul
- 0, 0, 0 es el negro
- FF, FF, FF es el blanco
Representando colores¶
Los códigos hexadecimales se pueden escribir en mayúsculas o minúsculas, y en las hojas de estilo van precedidos por un símbolo #. Para indicar un color se usan seis dígitos, los dos primeros para la cantidad de rojo, de 00 a FF, los dos siguientes para el verde, y los dos últimos para el azul. Por ejemplo, si queremos los párrafos de cabecera en rojo:
h1 {
color: #ff0000;
}
Veamos varios ejemplos de colores:
| Color | Código | |
|---|---|---|
| rojo | #FF0000 |
|
| verde | #00FF00 |
|
| azul | #0000FF |
|
| amarillo | #FFFF00 |
|
| cian | #00FFFF |
|
| fucsia | #FF00FF |
|
| negro | #000000 |
|
| gris | #808080 |
|
| gris claro | #C0C0C0 |
|
| blanco | #FFFFFF |
|
| marrón | #800000 |
|
| verde oscuro | #008000 |
|
| azul oscuro | #000080 |
|
| dorado | #808000 |
|
| púrpura | #800080 |
|
| verde azulado | #008080 |
Veamos una sencilla calculadora de códigos de color:
Pulse en el botón para seleccionar un color:
Código de color seleccionado:
#000000
Rojo: #000000
Verde: #000000
Azul: #000000
Esta codificación se denomina RGB, abreviatura de los tres colores básicos, red, green y blue. Como alternativa, se pueden usar otras codificaciones, como es el caso de HSL, que también utiliza tres códigos para cada color, indicando los valores de Matiz, Saturación y Luminosidad. Véase artículo en la Wikipedia.
Dado que este cuaderno no es un tutorial de CSS, no profundizaremos en ello.
Colores de elementos¶
Más allá de los esquemas, y de la configuración de variables que representan colores, podemos asignar manualmente el color de un elemento o un grupo de elementos. Por ejemplo, si queremos un párrafo en color rojo, podemos escribir:
Texto en color rojo
{: style="color:red;"}
Recuérdese que, para aplicar reglas de estilo a un párrafo en formato markdown, tenemos que activar la extensión attr_list.
También podemos usar reglas de estilo en archivos de hojas de estilos:
-
Para cambiar el color de los párrafos de cabeceras:
.md-typeset h1 {color: SteelBlue; } .md-typeset h2 {color: CadetBlue; } .md-typeset h3 {color: CadetBlue; } -
Para cambiar el color de texto y color de fondo en las cabeceras de tablas:
.md-typeset__table thead { color: white; background-color: #5382B0;}
Vemos que Material for MkDocs define una clase md-typeset a la que pertenecen los textos del documento.
¡Cuidado! El uso de reglas CSS muy personalizadas puede entrar en conflicto con los esquemas generados por Material for MkDocs. Además, no tenemos garantía de que nuestro diseño sea compatible con futuras versiones del software. El "tuneado" de colores se debe hace de manera muy sobria, y asumiendo los posibles riesgos.