CursosEmpresasBlogLiveConfPrecios

Mixins

Clase 14 de 42 • Curso de Preprocesadores CSS

Clase anteriorSiguiente clase

Contenido del curso

Introducción
  • 1
    Qué aprenderás sobre preprocesadores

    Qué aprenderás sobre preprocesadores

    02:39
  • 2
    Conceptos básicos de CSS

    Conceptos básicos de CSS

    05:13
  • 3
    Selectores de CSS

    Selectores de CSS

    11:43
Evolución de las Tecnologías de Front-End
  • 4
    Introducción a los Preprocesadores

    Introducción a los Preprocesadores

    05:37
  • 5
    Metodologías para estructurar código

    Metodologías para estructurar código

    04:07
  • 6
    Introducción a BEM

    Introducción a BEM

    07:26
  • 7
    Guías para creación y mantenimiento de código

    Guías para creación y mantenimiento de código

    06:59
  • 8
    Instalación de herramientas de compilación

    Instalación de herramientas de compilación

    04:03
Preprocesadores para HTML
  • 9
    Introducción a Pug

    Introducción a Pug

    01:02
  • 10
    Sintaxis

    Sintaxis

    12:39
  • 11
    Interpolación

    Interpolación

    07:19
  • 12
    Variables

    Variables

    07:11
  • 13
    Condicionales y Loops

    Condicionales y Loops

    06:25
  • 14
    Mixins

    Mixins

    08:57
  • 15
    Includes y Extends

    Includes y Extends

    07:49
  • 16
    Finalizando ejercicio de Landing Page

    Finalizando ejercicio de Landing Page

    08:59
Less
  • 17
    Introducción a Less

    Introducción a Less

    13:06
  • 18
    Anidamiento e imports

    Anidamiento e imports

    07:10
  • 19
    Variables

    Variables

    10:19
  • 20
    Funciones

    Funciones

    07:59
  • 21
    Mixins

    Mixins

    12:09
  • 22
    Finalizando ejercicio de página de artículos

    Finalizando ejercicio de página de artículos

    06:21
Sass
  • 23
    Introducción a Sass

    Introducción a Sass

    12:29
  • 24
    Variables

    Variables

    12:32
  • 25
    Imports y Extends

    Imports y Extends

    12:18
  • 26
    Mixins

    Mixins

    06:06
  • 27
    Funciones

    Funciones

    11:44
  • 28
    Condicionales y Loops

    Condicionales y Loops

    10:06
  • 29
    Finalizando ejercicio de perfil de usuario

    Finalizando ejercicio de perfil de usuario

    07:57
Stylus
  • 30
    Introducción a Stylus

    Introducción a Stylus

    11:06
  • 31
    Variables

    Variables

    10:32
  • 32
    Mixins

    Mixins

    09:54
  • 33
    Funciones

    Funciones

    11:03
  • 34
    Condicionales y Loops

    Condicionales y Loops

    10:32
Desarrollo del proyecto Platzi Games
  • 35
    Introducción al proyecto

    Introducción al proyecto

    02:49
  • 36
    Plantillas modulares con PUG: Header

    Plantillas modulares con PUG: Header

    10:41
  • 37
    Plantillas modulares con PUG: Footer

    Plantillas modulares con PUG: Footer

    11:15
  • 38
    Grid System con Sass

    Grid System con Sass

    11:36
  • 39
    Mixins para manejo de fuentes responsivas

    Mixins para manejo de fuentes responsivas

    12:44
  • 40
    Funciones para media queries

    Funciones para media queries

    12:19
  • 41
    Finalizando el proyecto

    Finalizando el proyecto

    10:01
Conclusiones y Cierre
  • 42
    Conclusiones y Cierre

    Conclusiones y Cierre

    01:24
    Omar Guadarrama

    Omar Guadarrama

    student•
    hace 6 años

    Si también usamos each nos ahorrariamos poner +caja tres veces:

    each titulo in titulos +caja("imagen.png", titulo, 'Lorem ipsum dolor sit amet consectetur adipisicing elit')

    Nos da:

    <div class="caja"> <divclass="caja__imagen"><imgsrc="../images/imagen.png"alt="imagen"/></div> <divclass="caja__contenido"> <h3>Subtitulo 1</h3> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p> <aclass="buton">Leer más</a> </div> </div> <div class="caja"> <divclass="caja__imagen"><imgsrc="../images/imagen.png"alt="imagen"/></div> <divclass="caja__contenido"> <h3>Subtitulo 2</h3> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p> <aclass="buton">Leer más</a> </div> </div> <div class="caja"> <divclass="caja__imagen"><imgsrc="../images/imagen.png"alt="imagen"/></div> <divclass="caja__contenido"> <h3>Subtitulo 3</h3> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p> <aclass="buton">Leer más</a> </div> </div>
      Efraín Hernández García

      Efraín Hernández García

      student•
      hace 5 años

      Excelente ejercicio!

      Addi Alberto Salazar Espinosa

      Addi Alberto Salazar Espinosa

      student•
      hace 5 años

      Interesante! :)

    Sneider Sanchez

    Sneider Sanchez

    student•
    hace 6 años

    Como comentó @Herkom podemos usar each para no repetir codigo. Asimismo ponemos agregar el lorem upsum a una variable para disminuir las lineas del codigo:

    -var titulos = ["Subtitulo 1", "Subtitulo 2" , "Subtitulo 3"] -var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ex mi, gravida sit amet imperdiet vel, sodales a mi. Proin sit amet tellus nec nisl bibendum ornare nec at augue. Integer semper feugiat varius." (...) each i in titulos +caja('imagen.png', i, lorem)
      Maricruz Pizaña Solano

      Maricruz Pizaña Solano

      student•
      hace 5 años

      Gracias por el aporte ;)

      Bernardo Aguayo Ortega

      Bernardo Aguayo Ortega

      student•
      hace 5 años

      caramba! me esta encantando pug!

    Moises Rolando Machuca Valverde

    Moises Rolando Machuca Valverde

    student•
    hace 6 años

    Los Mixins me dejo sin palabras 😑😁

      Addi Alberto Salazar Espinosa

      Addi Alberto Salazar Espinosa

      student•
      hace 5 años

      x2 :O

      Maricruz Pizaña Solano

      Maricruz Pizaña Solano

      student•
      hace 5 años

      Ya somos tres.

    Beto Toro

    Beto Toro

    student•
    hace 6 años

    Por si acaso con "alt-z" pueden ajustar el texto de lorem ipsum al ancho de la pantalla. Y ajusta todo, hasta links muy largos

      Bernardo Aguayo Ortega

      Bernardo Aguayo Ortega

      student•
      hace 5 años

      Gracias bro!!

      Oscar Yunior Huarza

      Oscar Yunior Huarza

      student•
      hace 5 años

      Buen dato bro

    Juan Esteban Galvis

    Juan Esteban Galvis

    student•
    hace 5 años

    Realicé el llamado a los mixin con un loop para no repetir el código 3 veces:

    each InfoCajas in ArraySubtitulos +Card("imagen.png", InfoCajas, "Lorem ipsum dolor sit amet consectetur")
      Platzi Team

      Platzi Team

      student•
      hace 5 años

      Ey! Genial copañero, gran aporte y muy interesante como aplicates dos clase, me parece fantastico

      Addi Alberto Salazar Espinosa

      Addi Alberto Salazar Espinosa

      student•
      hace 5 años

      Super! :O

    Andrés Antonio Azuara Portillo

    Andrés Antonio Azuara Portillo

    student•
    hace 6 años

    I made another solution not to call the mixin three times, and it's the next:

    -var i = 1 while i < 4 +caja("imagen.png", titulos[i++], "lorem...")
      Francisco Javier Araujo de la Garza

      Francisco Javier Araujo de la Garza

      student•
      hace 6 años

      Solo funcionaria mientras la imagen y contenido sean los mismos en todos los elementos, en mi opinion creo que lo correcto seria crear un arreglo para cada variable

      Carlos Lefin Henriquez

      Carlos Lefin Henriquez

      student•
      hace 4 años

      fjaraujo. Esto si puede funcionar si tambien creamos una Array de: -imagenes [ ] -contenido [ ]

      entonces podriamos hacer el recorrido como el del ejemplo

      +caja("imagenes[ i++] ", titulos[ i++] "contenido[ i++] ")

    Daniel Alejandro Romero

    Daniel Alejandro Romero

    student•
    hace 4 años

    para los que no confiaban en pug

    pug.jpg

    Wilson Orlando Capacho Carmona

    Wilson Orlando Capacho Carmona

    student•
    hace 6 años

    Que belleza ese mixin...que cosa mas buena ome

      Maricruz Pizaña Solano

      Maricruz Pizaña Solano

      student•
      hace 5 años

      Opino lo mismo. :)

    Jeremy Palomino

    Jeremy Palomino

    student•
    hace 5 años

    **Tecnicamente, los mixin funcional como las funciones: **

    • Creamos bloques de codigo reutilizables
    • La mandamos a llamar
    • Podemos pasarle parametros
      Irving Juárez

      Irving Juárez

      student•
      hace 4 años

      Técnicamente, estas en lo correcto. Se agrega un input y nos arroja un output

    Fabian Flores

    Fabian Flores

    student•
    hace 5 años

    Declarando Mixin

    Captura de pantalla 2021-05-25 205300.png
    Llamando Mixin
    code2.png

      Asbel Jose Herrera Morales

      Asbel Jose Herrera Morales

      student•
      hace 4 años

      super el aporte. Pero creo que debes sacar +imagen de los " "

    Nerio José Balza Durán

    Nerio José Balza Durán

    student•
    hace 5 años

    Al comienzo del modulo pense que no seria tan necesario cambiar a pug, pero viendo las funcionalidades tan utiles que trae, no hay duda que si vale la pena el cambio

    Emiliano David Vigna

    Emiliano David Vigna

    student•
    hace 4 años

    Si usamos el each, y en vez de colocar que tome los datos de un arreglo, podemos hacer un arreglo con los indices, y de esa forma cambiar los valores que deseemos pero en simultaneo

    -var forEachArray = ["Subtitle 1","Subtitle 2","Subtitle 3"] -var contenido = ["asdfasdf","werwerwer","Lorem6"] -var images = ["imagen1","imagen2","imagen3"] -var vector = ["0","1","2"] main.conenido each pos1 in vector +caja(images[pos1] ,forEachArray[pos1],contenido[pos1]) ```
      Jaime Isaí Orellana Mejia

      Jaime Isaí Orellana Mejia

      student•
      hace 4 años

      Funciona muy bien, pero no entiendo como funciona ¿?

      Emiliano David Vigna

      Emiliano David Vigna

      student•
      hace 4 años

      El each in primero genera la variable pos1 que le va asignar el valor que se encuentra en vector, y va hacer tantas asignaciones como longitud tenga el arreglo/variable. Como el arreglo vector, es 0,1,2, cuando llamo al mixing +caja(imagen[pos1], ...) estaria haciendo el siguiente loop:

      1. Hace pos1 = 0 -> El 0 lo obtiene del primer valor del arreglo vector

      2. Llama a +caja y en ++imagen[pos1]++ => imagen[0] por lo tanto entrega el valor de "imagen1"

      3. Hace pos1 = 1 -> El 1 lo obtiene del segundo valor del arreglo vector

      4. Llama a +caja y en ++imagen[pos1]++ => imagen[1] por lo tanto entrega el valor de "imagen2"

      Y así repite el loop una vez mas. Espero haber sido claro. 🙂

    Leo Montoya

    Leo Montoya

    student•
    hace 6 años

    porque cuando cambio un dato en el html no se cambia en el pug?

      Fernando Andres Muñoz Suazo

      Fernando Andres Muñoz Suazo

      student•
      hace 6 años

      Hola Leonardo, eso se debe a que el preprocesador funciona en una sola vía es decir de pug a html, pero no de html a pug. Recuerda que el archivo .pug es al final un proceso de JavaScript embedido, y el archivo .html no es más que eso, html.

      Simón Arenas

      Simón Arenas

      student•
      hace 6 años

      Justo iba a preguntar eso. Entonces no hay una forma de que se haga automáticamente?

    Efraín Hernández García

    Efraín Hernández García

    student•
    hace 5 años

    Esto cambia por completo mi perspectiva sobre pug. Esto es definitivamente hacer HTML con super poderes

    Max Felipe Hess Alvarez

    Max Felipe Hess Alvarez

    student•
    hace 3 años

    los mixins son como funciones :)

    Kevin Andres Curruchich Xocop

    Kevin Andres Curruchich Xocop

    student•
    hace 4 años

    Me siento mal de haber dicho en clases pasadas que no me gustaba Pug 😫😫😫

      Daniel Alejandro Romero

      Daniel Alejandro Romero

      student•
      hace 4 años
      pug.jpg
    Aldo Miguel Ortiz Parodi

    Aldo Miguel Ortiz Parodi

    student•
    hace 4 años

    14. Mixins:

    Interesante el tema de los mixin, esto cada vez se asemeja más a un lenguaje de programación que a un lenguaje de marcado.

    Les comparto el código de la clase.

    Código PUG:

    -var titulo = "Titulo Principal"; -var titulos = ["Título Principal", "Subtítulo 1", "Subtítulo 2", "Subtítulo 3"]; //-var usuario = "David"; mixin caja(imagen, titulo, contenido) .caja .caja__imagen: img(src="../images/"+imagen) .caja__contenido h3=titulo p=contenido a.buton Leer Mas doctype html html head meta(charset="UTF-8") link(rel="stylesheet", href="../css/ejercicio-pug.css") body header h1 PlatziGames if usuario a Hola #{usuario} else a.boton Registro section.intro .intro__imagen: img(src="../images/imagen.png") .intro__contenido h2 #{titulos[0]} p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias quos veritatis eligendi? Ex maiores rerum exercitationem consectetur, porro eaque culpa quisquam labore span debitis ab esse doloremque, dolor odio unde tempora. a.boton Leer más ul each titulo in titulos li=titulo main.contenido +caja('imagen.png',titulos[1],'Lorem ipsum dolor sit amet') +caja('imagen.png',titulos[2],'Lorem ipsum dolor sit amet') +caja('imagen.png',titulos[3],'Lorem ipsum dolor sit amet')
    Juan Ignacio Recofsky

    Juan Ignacio Recofsky

    student•
    hace 6 años

    Deberian llamarlos "Salvavidas"

    Christian David Sánchez

    Christian David Sánchez

    student•
    hace 6 años

    Mixins que belleza.

    Leonardo Pesina aviles

    Leonardo Pesina aviles

    student•
    hace 6 años

    ¿Por que él hace: main.contenido .caja__imagen .caja __contenido? Siguiendo BEM, debió haber sido: main.contenido .main__caja__imagen .main__caja__contenido ¿O esta él en lo correcto, y si es así, no esta contradiciendo la metodologia BEM?

      Roger Carlos Ariel Alba

      Roger Carlos Ariel Alba

      student•
      hace 6 años

      Hola!

      Creo que el main no lo tomo en cuenta, me parece congruente tu propuesta pero creo que sería así:

      .main__caja--imagen .main__caja--contenido

      Qué te parece?

      Saludos!

      Carlos Francisco Betancourt Requena

      Carlos Francisco Betancourt Requena

      student•
      hace 6 años

      Hola Leonardo, yo pienso que la clase "contenido" no puede usarse como un bloque, ya que esta misma clase puede ser usada como un "container", en donde defines un ancho máxico, el margen, el padding, etc. O bien, está clase puede ser utilizada nuevamente en otra página del sitio para envolver el contenido de un post, por ejemplo.

      El maestro está usando como bloque la clase "caja", ya que le da independencia la componente que se compone de la imagen, título y descripción.

      Todo esto tu lo defines, de la forma que te funcione mejor, pero como lo define el maestro creo que es una forma correcta y coherente.

      Espero ser de ayuda; un saludo!

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads