SlideShare una empresa de Scribd logo
1 de 72
Descargar para leer sin conexión
VARIABLES NATIVAS CSS
FRONT-END CON SUPERPODERES
https://www.wptarragona.com/
https://www.meetup.com/es-ES/wordpresstarragona/
var me = {
name: Aleix Martí Carmona
age: 33
job: {
company: Interactius
web: https://interactius.com
position: front-end
technologies: [
HTML,
CSS,
JS,
WordPress
]
since: 2014
}
twitter: @Nemesis_XIII
codepen: https://codepen.io/Aleix/
}
Icons made by Freepik from www.flaticon.com
Esta presentación contiene fragmentos de código
No todo el código está completo. Es funcional pero
es a título de ejemplo
Para cualquier duda consulte con su programador
ÍNDICE
1. INTRODUCCIÓN A LAS VARIABLES CSS
2. CÓMO SE USAN
3. ¡VAMOS AL LÍO!
4. EJEMPLOS DE USO
5. INTEGRACIÓN CON WORDPRESS
01
INTRODUCCIÓN A LAS VARIABLES CSS
CUSTOM PROPERTIES
Características
● Similares a las variables de los preprocesadores (LESS, SCSS …)
● No necesitan ser compiladas
● No hace falta refrescar la página para ver los cambios
● Código semántico
● Evitan código duplicado
● Facilitan cambios
● Integración con preprocesadores
● Compatibles con la mayoría de navegadores
INTRODUCCIÓN A LAS VARIABLES CSS
Similares a las variables de los preprocesadores
CARACTERÍSTICAS
$card-padding: 2em;
$main-color: #BADA55;
.card {
padding: $card-padding;
background-color: $main-color;
}
.title {
color: $main-color;
}
:root {
--main-color: #BADA55;
--card-padding: 2em;
}
.card {
padding: var(--card-padding);
background-color:var(--main-color);
}
.title {
color: var(--main-color);
}
Variables CSS
Permiten guardar valores para poder usarlos múltiples veces
SCSS
No necesita compilación
CARACTERÍSTICAS
$card-padding: 2em;
$main-color: #BADA55;
.card {
padding: $card-padding;
background-color: $main-color;
}
.title {
color: $main-color;
}
.card {
padding: 2em;
background-color: #BADA55;
}
.title {
color: #BADA55;
}
Una vez compiladas, las variables de los preprocesadores mantienen su valor
SCSS compiladoSCSS sin compilar
:root {
--main-color: #BADA55;
--card-padding: 2em;
}
.card {
padding: var(--card-padding);
background-color:var(--main-color);
}
.title {
color: var(--main-color);
}
Variables CSS
Código semántico
CARACTERÍSTICAS
.card {
padding: 2em;
background: linear-gradient(
to bottom,
rgba(0,0,255,1),
rgba(0,0,255,0.2));
color: #BADA55;
}
:root {
--card-padding: 2em;
--blue-gradient: linear-gradient(
to bottom,
rgba(0,0,255,1),
rgba(0,0,255,0.2));
--brand-color: #BADA55;
}
.card {
padding: var(--card-padding);
background: var(--blue-gradient);
color: var(--brand-color);
}
Si las variables están bien definidas, el código es más legible
CSS usando variablesCSS sin usar variables
Integración con preprocesadores
CARACTERÍSTICAS
:root {
--main-color: red;
}
$main-color: var(--main-color);
.card {
color: $main-color;
}
:root {
--main-color: red;
}
.card {
color: var(--main-color);
}
Se pueden integrar con preprocesadores para conseguir el máximo potencial de ambos
SCSS compilado usando variablesSCSS sin compilar usando variables
Compatibilidad con la mayoría de navegadores
CARACTERÍSTICAS
https://caniuse.com/#feat=css-variables
02
CÓMO SE USAN
DECLARACIÓN, SINTAXIS Y SCOPE
DECLARACIÓN
CÓMO SE USAN
--padding: 20px;
--main-color: #BADA55;
--Shadow: 0 0 10px 5px cyan;
--gradient: linear-gradient (to left, blue, red);
--color: var(--main-color);
Se declaran con un doble
guión seguido del nombre
de la variable.
Permiten guiones y
mayúsculas.
Pueden contener cualquier
valor válido de propiedades
CSS, incluso valores
complejos.
Se puede asignar otra
variable como valor.
color: var(--main-color);
color: var(--main-color, yellow);
color: var(--main-color, var(--fallback-color, #FF0))
color: red;
color: var(--main-color);
USO
CÓMO SE USAN
Para llamarlas, se usa la
función: var().
Se puede añadir un valor
como fallback, para que se
use en caso que la variable
no esté definida.
Se puede usar otra variable
como fallback.
Para evitar
incompatibilidad con
navegadores, se puede
definir la propiedad sin
variable.
SCOPE
CÓMO SE USAN
// Global scope
:root {
--color: red;
}
// Local scope
.card {
--card-color: blue;
}
div {
color: var(--color);
background-color: var(--card-color);
}
Se puede delimitar el scope
o ámbito de uso.
Si se declaran en el scope
:root serán accesibles
desde todo el documento.
Si se declaran en un ámbito
limitado, sólo de podrán
usar dentro de ése
elemento.
div.card {
color: var(--color);
background-color: var(--card-color);
}
SCOPE
CÓMO SE USAN
:root {
--color: blue;
}
#foo {
--color: orange;
}
.card {
--color: red;
}
* {
color: var(--color);
}
<p>some text</p>
<div id=”foo”>
<p>some text</p>
<div class="card">
<p>more text</p>
</div>
</div>
Dado el siguiente código, ¿de qué color serán los textos?
<p>some text</p>
<div id="foo">
<p>some text</p>
<div class="card">
<p>more text</p>
</div>
</div>
03
¡VAMOS AL LÍO!
EL PODER DE JAVASCRIPT
Skype permite elegir la configuración del tema entre claro y oscuro
¡VAMOS AL LÍO!
THEMES PERSONALIZADOS
<article class=”bright”>
<header> Another Brick in the Wall
</header>
<main>
<p>
We don't need no education….
</p>
</main>
<footer> &copy; Pink Floyd </footer>
</article>
<article class=”dark”>
<header> Another Brick in the Wall
</header>
<main>
<p>
We don't need no education….
</p>
</main>
<footer> &copy; Pink Floyd </footer>
</article>
article.bright header,
article.bright footer {
color: #222;
background: hsl(0,0%,80%);
}
article.bright main {
background-color: hsl(0,0%,95%);
color: #222;
}
article.dark header,
article.dark footer {
color: #fff;
background: hsl(0,0%,20%);
}
article.dark main {
background-color: hsl(0,0%,40%);
color: #fff;
}
article.bright header,
article.bright footer {
color: #222;
background: hsl(0,0%,80%);
}
article.bright main {
background-color: hsl(0,0%,95%);
color: #222;
}
article.dark header,
article.dark footer {
color: #fff;
background: hsl(0,0%,20%);
}
article.dark main {
background-color: hsl(0,0%,40%);
color: #fff;
}
¡VAMOS AL LÍO!
THEME DINÁMICO - CLASS
<article>
<header> Another Brick in the Wall
</header>
<main>
<p>
We don't need no education….
</p>
</main>
<footer> &copy; Pink Floyd </footer>
</article>
¡VAMOS AL LÍO!
THEME DINÁMICO - VARIABLES
article {
--text-color: #222;
--bg-color: hsl(0,0%,80%);
--bg-color-main: hsl(0,0%,95%);
}
header,
footer {
color: var(--text-color);
background: var(--bg-color);
}
article {
background-color: var(--bg-color-main);
color: var(--text-color);
}
article {
--text-color: #fff;
--bg-color: hsl(0,0%,20%);
--bg-color-main: hsl(0,0%,40%);
}
header,
footer {
color: var(--text-color);
background: var(--bg-color);
}
main {
background-color: var(--bg-color-main);
color: var(--text-color);
}
¡VAMOS AL LÍO!
THEME DINÁMICO
Fuente: imgflip.com
1. Controlar el elemento “root”:
const root = document.documentElement;
¡VAMOS AL LÍO!
THEME DINÁMICO
Los 4 pasos de JavaScript
4. Modificar el valor de la variable:
function changeVar() {
root.style.setProperty(‘--variable’, ‘valor’);
}
2. Controlar el “disparador” de la acción:
const btn = document.getElementById(‘boton’);
3. Capturar el evento o acción:
boton.addEventListener( ‘click’, changeVar);
¡VAMOS AL LÍO!
<button value="dark">Dark</button>
<button value="bright">Bright</button>
/* Definimos por defecto el tema claro */
:root {
--text-color: #222;
--bg-color: hsl(0,0%,80%);
--bg-color-main: hsl(0,0%,95%);
}
header,footer {
color: var(--text-color);
background: var(--bg-color);
}
main {
background-color: var(--bg-color-main);
color: var(--text-color);
}
// Al hacer click en el botón cambiamos los estilos
const root = document.documentElement;
const themes = document.querySelectorAll('button');
themes.forEach((theme) => {
theme.addEventListener('click', changeTheme)
})
function changeTheme(ev) {
switch (ev.target.value) {
case 'bright':
root.style.setProperty('--text-color', '#222');
root.style.setProperty('--bg-color', 'hsl(0,0%,80%)');
root.style.setProperty('--bg-color-main', 'hsl(0,0%,95%)');
break;
case 'dark':
root.style.setProperty('--text-color', '#fff');
root.style.setProperty('--bg-color', 'hsl(0,0%,20%)');
root.style.setProperty('--bg-color-main', 'hsl(0,0%,40%)');
break;
}
}
THEME DINÁMICO
¡VAMOS AL LÍO!
THEME DINÁMICO
¡VAMOS AL LÍO!
THEME DINÁMICO
Fuente: reactiongifs.com
28 / 0
04
EJEMPLOS DE USO
FRONT-END CON SUPERPODERES
Hue: ángulo de la rueda de color
Saturation: vívido o gris
Lightness: añadirle blanco o negro
Color puro: hsl( (0-360), 100%, 50%)
Fuente: sarasoueidan.com
hsl( 240, 100%, 50%)
#0000ff, rgb( 0, 0, 255 )
EJEMPLOS DE USO
HSL = Hue, Saturation, Lightness
hsl( 240, 100%, 30%)
#000099, rgb( 0, 0, 153 )
hsl( 240, 100%, 80%)
#9999ff, rgb( 153, 153, 255 )
EJEMPLOS DE USO
1. CSS
EJEMPLOS DE USO
2. INPUT TYPE: RANGE
EJEMPLOS DE USO
<input type="range"
id="color-range" min="10" max="90"
value="0" step="1">
/* El color del main es el mismo que el
header/footer pero con más brillo */
:root {
--text-color: #fff;
--bg-color: hsl(0, 0%, 20%);
--bg-color-main: hsl(0, 0%, 40%);
}
header,footer {
color: var(--text-color);
background: var(--bg-color);
}
main {
background-color:var(--bg-color-main);
color: var(--text-color);
}
const root = document.documentElement;
const range = document.querySelector('#color-range');
range.addEventListener("input", changeTheme);
// El color de background se obtiene directamente del valor del input
// El color del texto es el inverso del valor del input
function changeTheme(e) {
let value = e.target.value;
let v = Number(value) + Number(20);
let bg = 'hsl(0,0%,'+ value +'%)';
let text = 'hsl(0,0%,'+ (100-value) +'%)';
let main = 'hsl(0,0%,'+ v +'%)';
root.style.setProperty("--bg-color", bg);
root.style.setProperty("--bg-color-main", main);
root.style.setProperty("--text-color", text);
}
2. INPUT TYPE: RANGE
EJEMPLOS DE USO
3. INPUT TYPE: COLOR
<input type="color" id="inputColor">
<input type="color" id="inputMainColor">
<input type="color" id="inputTextColor">
:root {
--text-color: #fff;
--bg-color: hsl(0,0%,20%);
--bg-color-main: hsl(0,0%,40%);
}
header,footer {
color: var(--text-color);
background: var(--bg-color);
}
main {
color: var(--text-color);
background-color: var(--bg-color-main);
}
const root = document.documentElement;
const inputColor = document.getElementById("inputColor");
const inputMainColor = document.getElementById("inputMainColor");
const inputTextColor = document.getElementById("inputTextColor");
// Cada input asigna el color a una parte distinta:
// header/footer, main, text
inputColor.addEventListener("input", function () {
root.style.setProperty("--bg-color", inputColor.value);
}, false);
inputMainColor.addEventListener("input", function() {
root.style.setProperty("--bg-color-main", inputMainColor.value);
}, false);
inputTextColor.addEventListener("input", function() {
root.style.setProperty("--text-color", inputTextColor.value);
}, false);
EJEMPLOS DE USO
3. INPUT TYPE: COLOR
“UN GRAN PODER CONLLEVA
UNA GRAN RESPONSABILIDAD”
Fuente: pixabay.com
EJEMPLOS DE USO
3. INPUT TYPE: COLOR
Fuente: imgur.com
EJEMPLOS DE USO
3. INPUT TYPE: COLOR
EJEMPLOS DE USO
4. PREVIEW (MOUSEOVER / MOUSEOUT)
<button id="batman"
value="batman">Batman</button>
/* Se usan las variables principales y se
definen otras para cada tema */
:root {
--batman-color-hue: ...
--batman-bg: …
--superman-color-hue: ...
--superman-bg: ...
--color-hue: 0;
--bg: 0;
}
main {
color: hsl(var(--color-hue), 100%, 50%);
background-color: var(--bg);
}
// Al pasar el cursor por encima del botón cambian los estilos
// A la variable principal se le asigna el valor de otra variable
const batman = document.getElementById('batman');
batman.addEventListener("mouseover", function(){
root.style.setProperty( '--color-hue', 'var(--batman-color-hue)' );
...
});
EJEMPLOS DE USO
4. PREVIEW (MOUSEOVER / MOUSEOUT)
data-status=”closed” data-status=”open”
EJEMPLOS DE USO
5. DATA-ATTRIBUTE
<div id="options" data-status="closed">
<button id="btn"></button>
<div id="panel">...</div>
</div>
const root = document.documentElement;
const btn = document.getElementById("btn");
const options = document.getElementById("options");
// Al hacer click sobre el botón de menú
// cambia el estado “data-status” para abrir/cerrar la caja*
btn.addEventListener( "click", function() {
if ( options.getAttribute( 'data-status' ) == 'closed' ){
options.setAttribute('data-status', 'open');
} else {
options.setAttribute('data-status', 'closed');
}
});
[data-status="open"]{
--status-opacity: 1;
--status-height: auto;
--status-icon: "f00d";
}
[data-status="closed"]{
--status-opacity: 0;
--status-height: 0;
--status-icon: "f013";
}
[data-status] #btn:before {
content: var(--status-icon);
}
[data-status] #panel {
opacity: var(--status-opacity);
height: var(--status-height);
}
EJEMPLOS DE USO
5. DATA-ATTRIBUTE
EJEMPLOS DE USO
6. DATA-ATTRIBUTE
<body data-theme="sith">
<header>...</header>
<main>
<p>A long time ago in a galaxy far far away...</p>
<article class="card">
<div class="card__bottom">
<h2></h2>
<button class="card__button">
JOIN US!
</button>
</div>
</article>
</main>
<footer>...</footer>
</body>
/* Se definen variables para cada tema y se usan de
forma genérica */
[data-theme="yoda"] {
--bg-img: url('yoda.jpg');
--cite: 'May WordPress be with you';
}
[data-theme="vader"] {
--bg-img: url('vader.jpg');
--cite: 'Join the WordPress side';
}
.card {
background-image: var(--bg-img);
}
.card h2:before {
content: var(--cite);
}
EJEMPLOS DE USO
6. DATA-ATTRIBUTE
EJEMPLOS DE USO
7. INPUT TYPE: RADIO, DATA-ATTRIBUTE
<article id="theme" data-theme="red">
…
<input id="green" type="radio" name="color"
value="green">
[data-theme="red"]{
--h: 0;
--text-color: hsl(0,100%,100%); // blanco
}
[data-theme="green"]{
--h: 120;
--text-color: hsl(0,100%,0%); // negro
}
[data-theme="blue"]{
--h: 240;
--text-color: hsl(0,100%,100%); // blanco
}
header, footer {
color: var(--text-color);
background-color: hsl( var(--h), 100%, 50% );
}
const root = document.documentElement;
const colors = document.querySelectorAll('input');
const theme = document.getElementById("theme");
colors.forEach((color) => {
color.addEventListener('click', setTheme)
})
function setTheme(ev) {
switch (ev.target.value) {
case 'red':
theme.setAttribute('data-theme', 'red');
break;
case 'green':
theme.setAttribute('data-theme', 'green');
break;
case 'blue':
theme.setAttribute('data-theme', 'blue');
break;
}
}
EJEMPLOS DE USO
7. INPUT TYPE: RADIO, DATA-ATTRIBUTE
Fuente: sarasoueidan..com
EJEMPLOS DE USO
COLOR HARMONIES
EJEMPLOS DE USO
8. INPUT TYPE: RANGE, HSL COMPLEMENTARIO
<input type="range"
name="color" id="color" min="0" max="360"
value="0" step="1">
/* Se calcula el color complementario */
:root {
--h: 0;
--comp-h: calc( var(--h) - 180);
}
/* El color del main es el mismo que el
header/footer pero con más brillo: 50% - 80% */
header, footer {
background-color: hsl( var(--h), 100%, 50% );
color: hsl( var(--comp-h), 100%, 50% );
}
main {
background-color: hsl( var(--h), 100%, 80% );
color: hsl( var(--comp-h), 100%, 80% );
}
const root = document.documentElement;
const values = document.getElementById("values");
cost color = document.getElementById("color");
color.addEventListener('input', function(){
root.style.setProperty("--h", color.value);
}, false);
EJEMPLOS DE USO
8. INPUT TYPE: RANGE, HSL COMPLEMENTARIO
https://www.opendyslexic.org/
EJEMPLOS DE USO
OPEN DYSLEXIC
EJEMPLOS DE USO
9. INPUT TYPE: RADIO, FONT-FAMILY
<input type="radio" name="font"
value=”dancing”>
<input type="radio" name="font"
value=”dyslexic”>
/* Se aplica la fuente a todos los
elementos */
:root {
--font-family: 'Dancing Script';
}
* {
font-family: var(--font-family);
}
const root = document.documentElement;
const fonts = document.querySelectorAll( 'input[name="font"]' );
fonts.forEach( ( font ) => {
font.addEventListener( 'click', changeTheme )
})
function changeTheme(ev) {
switch (ev.target.value) {
case 'dyslexic':
root.style.setProperty('--font-family', 'opendyslexic');
break;
case 'dancing':
root.style.setProperty('--font-family', 'Dancing Script');
break;
}
}
EJEMPLOS DE USO
9. INPUT TYPE: RADIO, FONT-FAMILY
Guardar un valor:
localStorage.setItem('key', 'value');
Recuperar un valor:
localStorage.getItem('key');
EJEMPLOS DE USO
BONUS TRACK: LOCAL STORAGE
const save = document.getElementById( 'save' );
save.addEventListener( 'click', function() {
localStorage.setItem( 'color', 'blue' );
}, false);
document.addEventListener( 'DOMContentLoaded', function(){
const root = document.documentElement;
color = localStorage.getItem( 'preferences' );
root.style.setProperty('--main-color', color);
})
GUARDAR:
CARGAR:
EJEMPLOS DE USO
BONUS TRACK: LOCAL STORAGE
let preferences = [];
save.addEventListener( 'click', function() {
preferences[0] = inputColor.value;
preferences[1] = inputMainColor.value;
preferences[2] = inputTextColor.value;
localStorage.setItem( 'preferences', JSON.stringify(preferences) );
}, false);
if( localStorage.getItem( 'preferences' ) ){
preferences = JSON.parse( localStorage.getItem( 'preferences' ) );
root.style.setProperty('--bg-color', preferences[0]);
root.style.setProperty('--bg-color-main', preferences[1]);
root.style.setProperty('--text-color', preferences[2]);
}
EJEMPLOS DE USO
BONUS TRACK: LOCAL STORAGE
Fuente: knowyourmeme.com
https://codepen.io/Aleix
Collection: CSS Variables
05
INTEGRACIÓN CON WORDPRESS
YA QUE ESTAMOS EN UN MEETUP DE WORDPRESS...
INTEGRACIÓN CON WORDPRESS
FORMAS DE INTEGRACIÓN
● Child theme
● Theme propio
● Plugin
INTEGRACIÓN CON WORDPRESS
CHILD THEME: TWENTY-SEVENTEEN
functions.php
INTEGRACIÓN CON WORDPRESS
CHILD THEME: TWENTY-SEVENTEEN
style.css
INTEGRACIÓN CON WORDPRESS
CHILD THEME: TWENTY-SEVENTEEN
script.js
INTEGRACIÓN CON WORDPRESS
CHILD THEME: TWENTY-SEVENTEEN
INTEGRACIÓN CON WORDPRESS
THEME PROPIO: UNDERSCORES
https://underscores.me/
INTEGRACIÓN CON WORDPRESS
THEME PROPIO: UNDERSCORES
footer.php
INTEGRACIÓN CON WORDPRESS
THEME PROPIO: UNDERSCORES
style.css
INTEGRACIÓN CON WORDPRESS
THEME PROPIO: UNDERSCORES
theme.js
INTEGRACIÓN CON WORDPRESS
THEME PROPIO: UNDERSCORES
functions.php
INTEGRACIÓN CON WORDPRESS
THEME PROPIO: UNDERSCORES
INTEGRACIÓN CON WORDPRESS
PLUGIN + TWENTY-FIFTEEN
custom-theme.php
INTEGRACIÓN CON WORDPRESS
PLUGIN + TWENTY-FIFTEEN
custom-theme.js
INTEGRACIÓN CON WORDPRESS
PLUGIN + TWENTY-FIFTEEN
custom-theme.css
INTEGRACIÓN CON WORDPRESS
PLUGIN + TWENTY-FIFTEEN
Fuente: kisspng.com
JS
const root = document.documentElement;
root.style.setProperty('--main-color', '#666');
CSS
:root {
--main-color: #BADA55;
}
div {
color: var(--main-color);
}
POST-ITS
Fuente: flickr.com - Brickset

Más contenido relacionado

La actualidad más candente

La actualidad más candente (14)

ETIQUETAS HTML ANIMADAS
ETIQUETAS HTML ANIMADASETIQUETAS HTML ANIMADAS
ETIQUETAS HTML ANIMADAS
 
Atributos de BODY;MARQUEE y TABLE
Atributos de BODY;MARQUEE y TABLEAtributos de BODY;MARQUEE y TABLE
Atributos de BODY;MARQUEE y TABLE
 
Tarea 2 de programación avanzada
Tarea  2 de programación avanzada Tarea  2 de programación avanzada
Tarea 2 de programación avanzada
 
Que es html
Que es htmlQue es html
Que es html
 
Semana 3 Maquetación CSS
Semana 3   Maquetación CSSSemana 3   Maquetación CSS
Semana 3 Maquetación CSS
 
Estilo & CSS3
Estilo & CSS3Estilo & CSS3
Estilo & CSS3
 
Semana 3 Introduccion CSS
Semana 3   Introduccion CSSSemana 3   Introduccion CSS
Semana 3 Introduccion CSS
 
Etiquetas Basicas de Html
Etiquetas Basicas de HtmlEtiquetas Basicas de Html
Etiquetas Basicas de Html
 
ETIQUETAS HTML ANIMADAS
ETIQUETAS HTML ANIMADASETIQUETAS HTML ANIMADAS
ETIQUETAS HTML ANIMADAS
 
Elianyyyyy
ElianyyyyyElianyyyyy
Elianyyyyy
 
Curso HTML 5 & jQuery - Leccion 7
Curso HTML 5 & jQuery - Leccion 7Curso HTML 5 & jQuery - Leccion 7
Curso HTML 5 & jQuery - Leccion 7
 
PHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHPVigo #09: Preprocesadores CSS/SASS por Sergio CarracedoPHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
PHPVigo #09: Preprocesadores CSS/SASS por Sergio Carracedo
 
Curso desarrollo frontend: HTML - CSS - jQuery
Curso desarrollo frontend: HTML - CSS - jQueryCurso desarrollo frontend: HTML - CSS - jQuery
Curso desarrollo frontend: HTML - CSS - jQuery
 
19 tips para css
19 tips para css19 tips para css
19 tips para css
 

Similar a Variables nativas CSS, Front-End con superpoderes para tu WordPress

Similar a Variables nativas CSS, Front-End con superpoderes para tu WordPress (20)

CSS3
CSS3CSS3
CSS3
 
Sass: CSS con Superpoderes
Sass: CSS con SuperpoderesSass: CSS con Superpoderes
Sass: CSS con Superpoderes
 
Adaptando CSS a los programadores: SASS y Compass
Adaptando CSS a los programadores: SASS y CompassAdaptando CSS a los programadores: SASS y Compass
Adaptando CSS a los programadores: SASS y Compass
 
Hipervinculos
HipervinculosHipervinculos
Hipervinculos
 
Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)
Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)
Introducción a SASS - Diseño de Interfaces Web (Desarrollo de Aplicaciones Web)
 
Laboratorio 03
Laboratorio 03Laboratorio 03
Laboratorio 03
 
Sass - Preprocesador de CSS
Sass  - Preprocesador de CSSSass  - Preprocesador de CSS
Sass - Preprocesador de CSS
 
Intro a Sass
Intro a Sass Intro a Sass
Intro a Sass
 
Front end basics - Sass
Front end basics - SassFront end basics - Sass
Front end basics - Sass
 
Sngular - Sass: Vitamina tu CSS
Sngular - Sass: Vitamina tu CSSSngular - Sass: Vitamina tu CSS
Sngular - Sass: Vitamina tu CSS
 
Etilos
Etilos Etilos
Etilos
 
Frameworks CSS
Frameworks CSSFrameworks CSS
Frameworks CSS
 
Introducción a los Frameworks CSS
Introducción a los Frameworks CSSIntroducción a los Frameworks CSS
Introducción a los Frameworks CSS
 
Html5 css3
Html5 css3Html5 css3
Html5 css3
 
html5-css3
html5-css3html5-css3
html5-css3
 
Sitios responsivos con Adaptive Theme
Sitios responsivos con Adaptive ThemeSitios responsivos con Adaptive Theme
Sitios responsivos con Adaptive Theme
 
Ria 03-html5-css3
Ria 03-html5-css3Ria 03-html5-css3
Ria 03-html5-css3
 
WordCamp Alicante 2017 - De HTML a WordPress
WordCamp Alicante 2017 - De HTML a WordPressWordCamp Alicante 2017 - De HTML a WordPress
WordCamp Alicante 2017 - De HTML a WordPress
 
Html guia 1
Html guia 1 Html guia 1
Html guia 1
 
hojas de_estilo_css
 hojas de_estilo_css hojas de_estilo_css
hojas de_estilo_css
 

Más de WordPress Tarragona

Creando nuestro servidor de pruebas para WordPress por Noé Moreno
Creando nuestro servidor de pruebas para WordPress por Noé MorenoCreando nuestro servidor de pruebas para WordPress por Noé Moreno
Creando nuestro servidor de pruebas para WordPress por Noé MorenoWordPress Tarragona
 
Errores más comunes con WordPress y cómo solucionarlos por Ramón Tomás
Errores más comunes con WordPress y cómo solucionarlos por Ramón TomásErrores más comunes con WordPress y cómo solucionarlos por Ramón Tomás
Errores más comunes con WordPress y cómo solucionarlos por Ramón TomásWordPress Tarragona
 
Ventajas y desventajas de trabajar con Genesis Framework por Nahuai Badiola
Ventajas y desventajas de trabajar con Genesis Framework por Nahuai BadiolaVentajas y desventajas de trabajar con Genesis Framework por Nahuai Badiola
Ventajas y desventajas de trabajar con Genesis Framework por Nahuai BadiolaWordPress Tarragona
 
WordPress multi-idioma: WPML vs MultilingualPress
WordPress multi-idioma: WPML vs MultilingualPressWordPress multi-idioma: WPML vs MultilingualPress
WordPress multi-idioma: WPML vs MultilingualPressWordPress Tarragona
 
Copias de seguridad en WordPress - WordPress Tarragona 2017
Copias de seguridad en WordPress - WordPress Tarragona 2017Copias de seguridad en WordPress - WordPress Tarragona 2017
Copias de seguridad en WordPress - WordPress Tarragona 2017WordPress Tarragona
 
Páginas VS Entradas - WordPress Tarragona 2017
Páginas VS Entradas - WordPress Tarragona 2017Páginas VS Entradas - WordPress Tarragona 2017
Páginas VS Entradas - WordPress Tarragona 2017WordPress Tarragona
 
Intsalacion de word_press_en_local
Intsalacion de word_press_en_localIntsalacion de word_press_en_local
Intsalacion de word_press_en_localWordPress Tarragona
 

Más de WordPress Tarragona (7)

Creando nuestro servidor de pruebas para WordPress por Noé Moreno
Creando nuestro servidor de pruebas para WordPress por Noé MorenoCreando nuestro servidor de pruebas para WordPress por Noé Moreno
Creando nuestro servidor de pruebas para WordPress por Noé Moreno
 
Errores más comunes con WordPress y cómo solucionarlos por Ramón Tomás
Errores más comunes con WordPress y cómo solucionarlos por Ramón TomásErrores más comunes con WordPress y cómo solucionarlos por Ramón Tomás
Errores más comunes con WordPress y cómo solucionarlos por Ramón Tomás
 
Ventajas y desventajas de trabajar con Genesis Framework por Nahuai Badiola
Ventajas y desventajas de trabajar con Genesis Framework por Nahuai BadiolaVentajas y desventajas de trabajar con Genesis Framework por Nahuai Badiola
Ventajas y desventajas de trabajar con Genesis Framework por Nahuai Badiola
 
WordPress multi-idioma: WPML vs MultilingualPress
WordPress multi-idioma: WPML vs MultilingualPressWordPress multi-idioma: WPML vs MultilingualPress
WordPress multi-idioma: WPML vs MultilingualPress
 
Copias de seguridad en WordPress - WordPress Tarragona 2017
Copias de seguridad en WordPress - WordPress Tarragona 2017Copias de seguridad en WordPress - WordPress Tarragona 2017
Copias de seguridad en WordPress - WordPress Tarragona 2017
 
Páginas VS Entradas - WordPress Tarragona 2017
Páginas VS Entradas - WordPress Tarragona 2017Páginas VS Entradas - WordPress Tarragona 2017
Páginas VS Entradas - WordPress Tarragona 2017
 
Intsalacion de word_press_en_local
Intsalacion de word_press_en_localIntsalacion de word_press_en_local
Intsalacion de word_press_en_local
 

Variables nativas CSS, Front-End con superpoderes para tu WordPress

  • 3.
  • 4. var me = { name: Aleix Martí Carmona age: 33 job: { company: Interactius web: https://interactius.com position: front-end technologies: [ HTML, CSS, JS, WordPress ] since: 2014 } twitter: @Nemesis_XIII codepen: https://codepen.io/Aleix/ }
  • 5. Icons made by Freepik from www.flaticon.com Esta presentación contiene fragmentos de código No todo el código está completo. Es funcional pero es a título de ejemplo Para cualquier duda consulte con su programador
  • 6. ÍNDICE 1. INTRODUCCIÓN A LAS VARIABLES CSS 2. CÓMO SE USAN 3. ¡VAMOS AL LÍO! 4. EJEMPLOS DE USO 5. INTEGRACIÓN CON WORDPRESS
  • 7. 01 INTRODUCCIÓN A LAS VARIABLES CSS CUSTOM PROPERTIES
  • 8. Características ● Similares a las variables de los preprocesadores (LESS, SCSS …) ● No necesitan ser compiladas ● No hace falta refrescar la página para ver los cambios ● Código semántico ● Evitan código duplicado ● Facilitan cambios ● Integración con preprocesadores ● Compatibles con la mayoría de navegadores INTRODUCCIÓN A LAS VARIABLES CSS
  • 9. Similares a las variables de los preprocesadores CARACTERÍSTICAS $card-padding: 2em; $main-color: #BADA55; .card { padding: $card-padding; background-color: $main-color; } .title { color: $main-color; } :root { --main-color: #BADA55; --card-padding: 2em; } .card { padding: var(--card-padding); background-color:var(--main-color); } .title { color: var(--main-color); } Variables CSS Permiten guardar valores para poder usarlos múltiples veces SCSS
  • 10. No necesita compilación CARACTERÍSTICAS $card-padding: 2em; $main-color: #BADA55; .card { padding: $card-padding; background-color: $main-color; } .title { color: $main-color; } .card { padding: 2em; background-color: #BADA55; } .title { color: #BADA55; } Una vez compiladas, las variables de los preprocesadores mantienen su valor SCSS compiladoSCSS sin compilar :root { --main-color: #BADA55; --card-padding: 2em; } .card { padding: var(--card-padding); background-color:var(--main-color); } .title { color: var(--main-color); } Variables CSS
  • 11. Código semántico CARACTERÍSTICAS .card { padding: 2em; background: linear-gradient( to bottom, rgba(0,0,255,1), rgba(0,0,255,0.2)); color: #BADA55; } :root { --card-padding: 2em; --blue-gradient: linear-gradient( to bottom, rgba(0,0,255,1), rgba(0,0,255,0.2)); --brand-color: #BADA55; } .card { padding: var(--card-padding); background: var(--blue-gradient); color: var(--brand-color); } Si las variables están bien definidas, el código es más legible CSS usando variablesCSS sin usar variables
  • 12. Integración con preprocesadores CARACTERÍSTICAS :root { --main-color: red; } $main-color: var(--main-color); .card { color: $main-color; } :root { --main-color: red; } .card { color: var(--main-color); } Se pueden integrar con preprocesadores para conseguir el máximo potencial de ambos SCSS compilado usando variablesSCSS sin compilar usando variables
  • 13. Compatibilidad con la mayoría de navegadores CARACTERÍSTICAS https://caniuse.com/#feat=css-variables
  • 14. 02 CÓMO SE USAN DECLARACIÓN, SINTAXIS Y SCOPE
  • 15. DECLARACIÓN CÓMO SE USAN --padding: 20px; --main-color: #BADA55; --Shadow: 0 0 10px 5px cyan; --gradient: linear-gradient (to left, blue, red); --color: var(--main-color); Se declaran con un doble guión seguido del nombre de la variable. Permiten guiones y mayúsculas. Pueden contener cualquier valor válido de propiedades CSS, incluso valores complejos. Se puede asignar otra variable como valor.
  • 16. color: var(--main-color); color: var(--main-color, yellow); color: var(--main-color, var(--fallback-color, #FF0)) color: red; color: var(--main-color); USO CÓMO SE USAN Para llamarlas, se usa la función: var(). Se puede añadir un valor como fallback, para que se use en caso que la variable no esté definida. Se puede usar otra variable como fallback. Para evitar incompatibilidad con navegadores, se puede definir la propiedad sin variable.
  • 17. SCOPE CÓMO SE USAN // Global scope :root { --color: red; } // Local scope .card { --card-color: blue; } div { color: var(--color); background-color: var(--card-color); } Se puede delimitar el scope o ámbito de uso. Si se declaran en el scope :root serán accesibles desde todo el documento. Si se declaran en un ámbito limitado, sólo de podrán usar dentro de ése elemento. div.card { color: var(--color); background-color: var(--card-color); }
  • 18. SCOPE CÓMO SE USAN :root { --color: blue; } #foo { --color: orange; } .card { --color: red; } * { color: var(--color); } <p>some text</p> <div id=”foo”> <p>some text</p> <div class="card"> <p>more text</p> </div> </div> Dado el siguiente código, ¿de qué color serán los textos? <p>some text</p> <div id="foo"> <p>some text</p> <div class="card"> <p>more text</p> </div> </div>
  • 19. 03 ¡VAMOS AL LÍO! EL PODER DE JAVASCRIPT
  • 20. Skype permite elegir la configuración del tema entre claro y oscuro ¡VAMOS AL LÍO! THEMES PERSONALIZADOS
  • 21. <article class=”bright”> <header> Another Brick in the Wall </header> <main> <p> We don't need no education…. </p> </main> <footer> &copy; Pink Floyd </footer> </article> <article class=”dark”> <header> Another Brick in the Wall </header> <main> <p> We don't need no education…. </p> </main> <footer> &copy; Pink Floyd </footer> </article> article.bright header, article.bright footer { color: #222; background: hsl(0,0%,80%); } article.bright main { background-color: hsl(0,0%,95%); color: #222; } article.dark header, article.dark footer { color: #fff; background: hsl(0,0%,20%); } article.dark main { background-color: hsl(0,0%,40%); color: #fff; } article.bright header, article.bright footer { color: #222; background: hsl(0,0%,80%); } article.bright main { background-color: hsl(0,0%,95%); color: #222; } article.dark header, article.dark footer { color: #fff; background: hsl(0,0%,20%); } article.dark main { background-color: hsl(0,0%,40%); color: #fff; } ¡VAMOS AL LÍO! THEME DINÁMICO - CLASS
  • 22. <article> <header> Another Brick in the Wall </header> <main> <p> We don't need no education…. </p> </main> <footer> &copy; Pink Floyd </footer> </article> ¡VAMOS AL LÍO! THEME DINÁMICO - VARIABLES article { --text-color: #222; --bg-color: hsl(0,0%,80%); --bg-color-main: hsl(0,0%,95%); } header, footer { color: var(--text-color); background: var(--bg-color); } article { background-color: var(--bg-color-main); color: var(--text-color); } article { --text-color: #fff; --bg-color: hsl(0,0%,20%); --bg-color-main: hsl(0,0%,40%); } header, footer { color: var(--text-color); background: var(--bg-color); } main { background-color: var(--bg-color-main); color: var(--text-color); }
  • 23. ¡VAMOS AL LÍO! THEME DINÁMICO Fuente: imgflip.com
  • 24. 1. Controlar el elemento “root”: const root = document.documentElement; ¡VAMOS AL LÍO! THEME DINÁMICO Los 4 pasos de JavaScript 4. Modificar el valor de la variable: function changeVar() { root.style.setProperty(‘--variable’, ‘valor’); } 2. Controlar el “disparador” de la acción: const btn = document.getElementById(‘boton’); 3. Capturar el evento o acción: boton.addEventListener( ‘click’, changeVar);
  • 25. ¡VAMOS AL LÍO! <button value="dark">Dark</button> <button value="bright">Bright</button> /* Definimos por defecto el tema claro */ :root { --text-color: #222; --bg-color: hsl(0,0%,80%); --bg-color-main: hsl(0,0%,95%); } header,footer { color: var(--text-color); background: var(--bg-color); } main { background-color: var(--bg-color-main); color: var(--text-color); } // Al hacer click en el botón cambiamos los estilos const root = document.documentElement; const themes = document.querySelectorAll('button'); themes.forEach((theme) => { theme.addEventListener('click', changeTheme) }) function changeTheme(ev) { switch (ev.target.value) { case 'bright': root.style.setProperty('--text-color', '#222'); root.style.setProperty('--bg-color', 'hsl(0,0%,80%)'); root.style.setProperty('--bg-color-main', 'hsl(0,0%,95%)'); break; case 'dark': root.style.setProperty('--text-color', '#fff'); root.style.setProperty('--bg-color', 'hsl(0,0%,20%)'); root.style.setProperty('--bg-color-main', 'hsl(0,0%,40%)'); break; } } THEME DINÁMICO
  • 27. ¡VAMOS AL LÍO! THEME DINÁMICO Fuente: reactiongifs.com
  • 28. 28 / 0 04 EJEMPLOS DE USO FRONT-END CON SUPERPODERES
  • 29. Hue: ángulo de la rueda de color Saturation: vívido o gris Lightness: añadirle blanco o negro Color puro: hsl( (0-360), 100%, 50%) Fuente: sarasoueidan.com hsl( 240, 100%, 50%) #0000ff, rgb( 0, 0, 255 ) EJEMPLOS DE USO HSL = Hue, Saturation, Lightness hsl( 240, 100%, 30%) #000099, rgb( 0, 0, 153 ) hsl( 240, 100%, 80%) #9999ff, rgb( 153, 153, 255 )
  • 31. EJEMPLOS DE USO 2. INPUT TYPE: RANGE
  • 32. EJEMPLOS DE USO <input type="range" id="color-range" min="10" max="90" value="0" step="1"> /* El color del main es el mismo que el header/footer pero con más brillo */ :root { --text-color: #fff; --bg-color: hsl(0, 0%, 20%); --bg-color-main: hsl(0, 0%, 40%); } header,footer { color: var(--text-color); background: var(--bg-color); } main { background-color:var(--bg-color-main); color: var(--text-color); } const root = document.documentElement; const range = document.querySelector('#color-range'); range.addEventListener("input", changeTheme); // El color de background se obtiene directamente del valor del input // El color del texto es el inverso del valor del input function changeTheme(e) { let value = e.target.value; let v = Number(value) + Number(20); let bg = 'hsl(0,0%,'+ value +'%)'; let text = 'hsl(0,0%,'+ (100-value) +'%)'; let main = 'hsl(0,0%,'+ v +'%)'; root.style.setProperty("--bg-color", bg); root.style.setProperty("--bg-color-main", main); root.style.setProperty("--text-color", text); } 2. INPUT TYPE: RANGE
  • 33. EJEMPLOS DE USO 3. INPUT TYPE: COLOR
  • 34. <input type="color" id="inputColor"> <input type="color" id="inputMainColor"> <input type="color" id="inputTextColor"> :root { --text-color: #fff; --bg-color: hsl(0,0%,20%); --bg-color-main: hsl(0,0%,40%); } header,footer { color: var(--text-color); background: var(--bg-color); } main { color: var(--text-color); background-color: var(--bg-color-main); } const root = document.documentElement; const inputColor = document.getElementById("inputColor"); const inputMainColor = document.getElementById("inputMainColor"); const inputTextColor = document.getElementById("inputTextColor"); // Cada input asigna el color a una parte distinta: // header/footer, main, text inputColor.addEventListener("input", function () { root.style.setProperty("--bg-color", inputColor.value); }, false); inputMainColor.addEventListener("input", function() { root.style.setProperty("--bg-color-main", inputMainColor.value); }, false); inputTextColor.addEventListener("input", function() { root.style.setProperty("--text-color", inputTextColor.value); }, false); EJEMPLOS DE USO 3. INPUT TYPE: COLOR
  • 35. “UN GRAN PODER CONLLEVA UNA GRAN RESPONSABILIDAD” Fuente: pixabay.com EJEMPLOS DE USO 3. INPUT TYPE: COLOR
  • 36. Fuente: imgur.com EJEMPLOS DE USO 3. INPUT TYPE: COLOR
  • 37. EJEMPLOS DE USO 4. PREVIEW (MOUSEOVER / MOUSEOUT)
  • 38. <button id="batman" value="batman">Batman</button> /* Se usan las variables principales y se definen otras para cada tema */ :root { --batman-color-hue: ... --batman-bg: … --superman-color-hue: ... --superman-bg: ... --color-hue: 0; --bg: 0; } main { color: hsl(var(--color-hue), 100%, 50%); background-color: var(--bg); } // Al pasar el cursor por encima del botón cambian los estilos // A la variable principal se le asigna el valor de otra variable const batman = document.getElementById('batman'); batman.addEventListener("mouseover", function(){ root.style.setProperty( '--color-hue', 'var(--batman-color-hue)' ); ... }); EJEMPLOS DE USO 4. PREVIEW (MOUSEOVER / MOUSEOUT)
  • 40. <div id="options" data-status="closed"> <button id="btn"></button> <div id="panel">...</div> </div> const root = document.documentElement; const btn = document.getElementById("btn"); const options = document.getElementById("options"); // Al hacer click sobre el botón de menú // cambia el estado “data-status” para abrir/cerrar la caja* btn.addEventListener( "click", function() { if ( options.getAttribute( 'data-status' ) == 'closed' ){ options.setAttribute('data-status', 'open'); } else { options.setAttribute('data-status', 'closed'); } }); [data-status="open"]{ --status-opacity: 1; --status-height: auto; --status-icon: "f00d"; } [data-status="closed"]{ --status-opacity: 0; --status-height: 0; --status-icon: "f013"; } [data-status] #btn:before { content: var(--status-icon); } [data-status] #panel { opacity: var(--status-opacity); height: var(--status-height); } EJEMPLOS DE USO 5. DATA-ATTRIBUTE
  • 41. EJEMPLOS DE USO 6. DATA-ATTRIBUTE
  • 42. <body data-theme="sith"> <header>...</header> <main> <p>A long time ago in a galaxy far far away...</p> <article class="card"> <div class="card__bottom"> <h2></h2> <button class="card__button"> JOIN US! </button> </div> </article> </main> <footer>...</footer> </body> /* Se definen variables para cada tema y se usan de forma genérica */ [data-theme="yoda"] { --bg-img: url('yoda.jpg'); --cite: 'May WordPress be with you'; } [data-theme="vader"] { --bg-img: url('vader.jpg'); --cite: 'Join the WordPress side'; } .card { background-image: var(--bg-img); } .card h2:before { content: var(--cite); } EJEMPLOS DE USO 6. DATA-ATTRIBUTE
  • 43. EJEMPLOS DE USO 7. INPUT TYPE: RADIO, DATA-ATTRIBUTE
  • 44. <article id="theme" data-theme="red"> … <input id="green" type="radio" name="color" value="green"> [data-theme="red"]{ --h: 0; --text-color: hsl(0,100%,100%); // blanco } [data-theme="green"]{ --h: 120; --text-color: hsl(0,100%,0%); // negro } [data-theme="blue"]{ --h: 240; --text-color: hsl(0,100%,100%); // blanco } header, footer { color: var(--text-color); background-color: hsl( var(--h), 100%, 50% ); } const root = document.documentElement; const colors = document.querySelectorAll('input'); const theme = document.getElementById("theme"); colors.forEach((color) => { color.addEventListener('click', setTheme) }) function setTheme(ev) { switch (ev.target.value) { case 'red': theme.setAttribute('data-theme', 'red'); break; case 'green': theme.setAttribute('data-theme', 'green'); break; case 'blue': theme.setAttribute('data-theme', 'blue'); break; } } EJEMPLOS DE USO 7. INPUT TYPE: RADIO, DATA-ATTRIBUTE
  • 46. EJEMPLOS DE USO 8. INPUT TYPE: RANGE, HSL COMPLEMENTARIO
  • 47. <input type="range" name="color" id="color" min="0" max="360" value="0" step="1"> /* Se calcula el color complementario */ :root { --h: 0; --comp-h: calc( var(--h) - 180); } /* El color del main es el mismo que el header/footer pero con más brillo: 50% - 80% */ header, footer { background-color: hsl( var(--h), 100%, 50% ); color: hsl( var(--comp-h), 100%, 50% ); } main { background-color: hsl( var(--h), 100%, 80% ); color: hsl( var(--comp-h), 100%, 80% ); } const root = document.documentElement; const values = document.getElementById("values"); cost color = document.getElementById("color"); color.addEventListener('input', function(){ root.style.setProperty("--h", color.value); }, false); EJEMPLOS DE USO 8. INPUT TYPE: RANGE, HSL COMPLEMENTARIO
  • 49. EJEMPLOS DE USO 9. INPUT TYPE: RADIO, FONT-FAMILY
  • 50. <input type="radio" name="font" value=”dancing”> <input type="radio" name="font" value=”dyslexic”> /* Se aplica la fuente a todos los elementos */ :root { --font-family: 'Dancing Script'; } * { font-family: var(--font-family); } const root = document.documentElement; const fonts = document.querySelectorAll( 'input[name="font"]' ); fonts.forEach( ( font ) => { font.addEventListener( 'click', changeTheme ) }) function changeTheme(ev) { switch (ev.target.value) { case 'dyslexic': root.style.setProperty('--font-family', 'opendyslexic'); break; case 'dancing': root.style.setProperty('--font-family', 'Dancing Script'); break; } } EJEMPLOS DE USO 9. INPUT TYPE: RADIO, FONT-FAMILY
  • 51. Guardar un valor: localStorage.setItem('key', 'value'); Recuperar un valor: localStorage.getItem('key'); EJEMPLOS DE USO BONUS TRACK: LOCAL STORAGE
  • 52. const save = document.getElementById( 'save' ); save.addEventListener( 'click', function() { localStorage.setItem( 'color', 'blue' ); }, false); document.addEventListener( 'DOMContentLoaded', function(){ const root = document.documentElement; color = localStorage.getItem( 'preferences' ); root.style.setProperty('--main-color', color); }) GUARDAR: CARGAR: EJEMPLOS DE USO BONUS TRACK: LOCAL STORAGE
  • 53. let preferences = []; save.addEventListener( 'click', function() { preferences[0] = inputColor.value; preferences[1] = inputMainColor.value; preferences[2] = inputTextColor.value; localStorage.setItem( 'preferences', JSON.stringify(preferences) ); }, false); if( localStorage.getItem( 'preferences' ) ){ preferences = JSON.parse( localStorage.getItem( 'preferences' ) ); root.style.setProperty('--bg-color', preferences[0]); root.style.setProperty('--bg-color-main', preferences[1]); root.style.setProperty('--text-color', preferences[2]); } EJEMPLOS DE USO BONUS TRACK: LOCAL STORAGE
  • 55. 05 INTEGRACIÓN CON WORDPRESS YA QUE ESTAMOS EN UN MEETUP DE WORDPRESS...
  • 56. INTEGRACIÓN CON WORDPRESS FORMAS DE INTEGRACIÓN ● Child theme ● Theme propio ● Plugin
  • 57. INTEGRACIÓN CON WORDPRESS CHILD THEME: TWENTY-SEVENTEEN functions.php
  • 58. INTEGRACIÓN CON WORDPRESS CHILD THEME: TWENTY-SEVENTEEN style.css
  • 59. INTEGRACIÓN CON WORDPRESS CHILD THEME: TWENTY-SEVENTEEN script.js
  • 60. INTEGRACIÓN CON WORDPRESS CHILD THEME: TWENTY-SEVENTEEN
  • 61. INTEGRACIÓN CON WORDPRESS THEME PROPIO: UNDERSCORES https://underscores.me/
  • 62. INTEGRACIÓN CON WORDPRESS THEME PROPIO: UNDERSCORES footer.php
  • 63. INTEGRACIÓN CON WORDPRESS THEME PROPIO: UNDERSCORES style.css
  • 64. INTEGRACIÓN CON WORDPRESS THEME PROPIO: UNDERSCORES theme.js
  • 65. INTEGRACIÓN CON WORDPRESS THEME PROPIO: UNDERSCORES functions.php
  • 66. INTEGRACIÓN CON WORDPRESS THEME PROPIO: UNDERSCORES
  • 67. INTEGRACIÓN CON WORDPRESS PLUGIN + TWENTY-FIFTEEN custom-theme.php
  • 68. INTEGRACIÓN CON WORDPRESS PLUGIN + TWENTY-FIFTEEN custom-theme.js
  • 69. INTEGRACIÓN CON WORDPRESS PLUGIN + TWENTY-FIFTEEN custom-theme.css
  • 71. Fuente: kisspng.com JS const root = document.documentElement; root.style.setProperty('--main-color', '#666'); CSS :root { --main-color: #BADA55; } div { color: var(--main-color); } POST-ITS