CursosEmpresasBlogLiveConfPrecios

Anidaciones

Clase 9 de 21 • Curso de Sass 2018

Clase anteriorSiguiente clase

Contenido del curso

Preprocesador Sass

  • 1
    Qué aprenderás sobre Sass

    Qué aprenderás sobre Sass

    00:37 min
  • 2
    Introducción al Curso de Sass

    Introducción al Curso de Sass

    00:49 min
  • 3
    Diferencias entre Sass, Stylus y Less

    Diferencias entre Sass, Stylus y Less

    02:37 min
  • 4
    Compilación de código en archivos CSS

    Compilación de código en archivos CSS

    09:13 min

Instalación

  • 5
    Estructura de CSS

    Estructura de CSS

    08:59 min

Variables

  • 6
    Variables

    Variables

    15:22 min
  • 7
    Reto

    Reto

    03:12 min
  • 8
    Solución al reto

    Solución al reto

    15:54 min

Anidaciones

  • 9
    Anidaciones

    Anidaciones

    Viendo ahora

Mixins

  • 10
    Mixins

    Mixins

    10:27 min
  • 11
    Continuando con Mixins

    Continuando con Mixins

    05:42 min
  • 12
    Uso de la directiva `content` (`block` en Stylus)

    Uso de la directiva `content` (`block` en Stylus)

    05:38 min
  • 13
    Extend

    Extend

    11:01 min

Funciones

  • 14
    Funciones

    Funciones

    05:43 min
  • 15
    Directiva

    Directiva

    03:25 min
  • 16
    Ejemplos de funciones

    Ejemplos de funciones

    05:42 min
  • 17
    Reto

    Reto

    01:13 min
  • 18

    Reto - Solución

    00:44 min

Controles de Flujo

  • 19
    Listas y directiva each

    Listas y directiva each

    05:24 min
  • 20
    Ciclos FOR/EACH

    Ciclos FOR/EACH

    04:07 min
  • 21
    Condicionales

    Condicionales

    11:05 min
Tomar examen
Resumen

En esta clase nos vamos a concentrar en las anidaciones. Para mostrarte esto vamos a trabajar con los botones.

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
        Sergio Toshio Minei

        Sergio Toshio Minei

        student•
        hace 8 años

        Creo que las anidaciones pueden ser muy útiles para las pseudoclases. Algo así:

        .btn { color: red; &:hover { color:blue; } }
          Alexander Valencia

          Alexander Valencia

          student•
          hace 7 años

          exacto

          Jonathan Martinez Martinez

          Jonathan Martinez Martinez

          student•
          hace 5 años

          Buen Aporte!

        Alan Mena

        Alan Mena

        student•
        hace 8 años

        En proyectos grandes cuya finalidad es crear componentes reutilizables, la metodología BEM juega un papel muy importante.

        SASS:

        .Block { &__Element { &-Modifier { } } }

        CSS:

        .Block__Element-Modifier
          Daniel Martínez

          Daniel Martínez

          teacher•
          hace 8 años

          Un detalle, el Modifier, va con DOS guiones:

          .Block { &__Element { &--Modifier { } } }```
          Alan Mena

          Alan Mena

          student•
          hace 8 años

          Incluso es válido tener una sintaxis personalizada, pues en realidad la idea es que se respete el concepto base de tener esos tres niveles. (Bloque, elemento, modificador)

          En el sitio oficial de la metodología lo manejan de las dos formas:
          Con uno y con dos.

          BEM.png

          Por jerarquía me hace un poco más de sentido que el modificador maneje solo un guión. Pero en efecto. Es indistinto.

        Sergio Toshio Minei

        Sergio Toshio Minei

        student•
        hace 8 años

        Anidaciones

        .btn { font-size: 15pt; &__icon { font-size: .6em; } &.btn--info { background-color: $color-info; } }

        El comodín & se usa para hacer referencia al padre.

        Pueden ver el resumen completo del curso aquí.

          Emerson Cedeño

          Emerson Cedeño

          student•
          hace 7 años

          oiga mi hermano, ese repositorio de los resúmenes de los cursos suyo en github está muy elegante! felicitaciones! #aplausos

          Sergio Toshio Minei

          Sergio Toshio Minei

          student•
          hace 7 años

          muchas gracias @ecedenyo 😃

        Fabricio Micheli

        Fabricio Micheli

        student•
        hace 7 años

        Acá escribo una serie de definiciones interesantes para entender cada uno de los componentes de la metodología BEM:

        BLOCK: Entidad individual que tiene significado por sí misma (Ej. header, container, menu, input).

        ELEMENT: Parte de un bloque que no tiene sentido individual y está semánticamente vinculado a una entidad de tipo bloque (Ej. Menu item, list item, header title)

        MODIFIER: Es una bandera de un bloque o elemento. Se usa para cambiar o modificar una apariencia o un comportamiento (Ej. disabled, highlighted, fixed)

        Pablo Pérez Chueca

        Pablo Pérez Chueca

        student•
        hace 7 años

        ¿Hay alguna forma de hacer que el IntelliSense de VS Code sugiera las variables definidas en Sass?

          Francisco Manuel Velásquez Escobar

          Francisco Manuel Velásquez Escobar

          student•
          hace 7 años

          Tengo la misma duda

          Enrique Devars

          Enrique Devars

          teacher•
          hace 7 años

          Pueden hacerlo con esta extensión 😃

          SCSS IntelliSense

        Juan C Felizzola

        Juan C Felizzola

        student•
        hace 8 años

        Block Element Modifier = BEM

        Para referirnos al padre usamos &

          Gerardo Nava Pereda

          Gerardo Nava Pereda

          student•
          hace 7 años

          Ahora es más útil (entre otras convenciones de naming):

        José Heriberto López Ruiz

        José Heriberto López Ruiz

        student•
        hace 6 años

        A partir del min. 11:03 da la impresión de que debió de haber mostrado la pantalla, pero no lo hizo. ¿Es a caso un error de edición?

          Massimo Di Berardino

          Massimo Di Berardino

          student•
          hace 6 años

          ¡Hola Jose! Gracias por tu feedback, lo vamos a comunicar al equipo para solucionarlo.

          Victor Juan Morales Romo

          Victor Juan Morales Romo

          student•
          hace 6 años

          Hola Pepe el se referia a que iban en el mismo niven asi ya que btn--ejemplo se refiere a modificador si tu cliente te pide cambiarlo varias veces

          .btn{ display: inline-block; color: $buttoncolor; background-color: $buttonbackgroundcolor; line-height: 2.5; border-radius: $border-radius; &__icon{ font-size: $buttonfontsize; } } .btn--info{ background-color:$color-info; }
        Enzo Ivan Valdez

        Enzo Ivan Valdez

        student•
        hace 5 años

        Pueden declarar la variable: $font-size: 62.5%; _Y esto los dejará jugar con rem, ejemplo:: 1rem == 10px.

        Pablo Andres

        Pablo Andres

        student•
        hace 7 años

        Qué muestra acá? Alguien se da cuenta?

          Enrique Espina

          Enrique Espina

          student•
          hace 7 años
          &__icon { font-size:.6em; } &.btn--info { background-color: $color-info; } }
          Carlos Jesús Fernández Salazar

          Carlos Jesús Fernández Salazar

          student•
          hace 7 años

          Exacto, también se podría usar

          & &--info { ... }

          😄

        Hernán Arica

        Hernán Arica

        student•
        hace 6 años

        Que buen curso!!!!! lo necesitaba muchoooo gran profesor!!

        Ivan Daniel Cuevas

        Ivan Daniel Cuevas

        student•
        hace 5 años

        En algunas propiedades de CSS también podemos utilizar anidaciones como por el ejemplo con padding o con margin. Esto se hace de la siguiente forma:

        //Código en Sass p { padding: auto { bottom: 25px; top: 50px; right: 30px; }
        /*Código compilado en CSS*/ p { padding: auto; padding-bottom: 25px; padding-top: 50px; padding-right: 30px; }
        Gerardo Ruiz

        Gerardo Ruiz

        student•
        hace 7 años

        Si llama al padre con & se heredan los atributos del padre o no los hereda?

          Diego Forero

          Diego Forero

          Team Platzi•
          hace 7 años

          El signo de & es como un placeholder que completa con el padre para crear al final el nombre de la clase, en ningún momento pone los atributos definidos para la clase padre dentro de la clase anidada. Por ejemplo

          .Boton { width: 100px &--default { background: blue color: white } &--success { background: green color: white } }

          Esto da como salida

          .Boton { width: 100px } .Boton--default { background: blue color: white } .Boton--success { background: green color: white }

          Para usarlo pones la clase Boton y Boton--default en el atributo class del tag html, si usas solo Boton--default el tag no va a tener el width del 100px

          Jose Antonio Padron Fernandez

          Jose Antonio Padron Fernandez

          student•
          hace 7 años

          tengo una duda, no entendí muy bien el final del vídeo, cual de las 3 opciones es mejor para anidar?, personalmente me parece mejor la opción 1 pero quiero saber sus opiniones:

          opción 1 .btn{ &--default { } &--success { } } opción 2 .btn{ } btn--default { } btn--success { } opción 3 .btn{ btn--default { } btn--success { } }```
        jorge espinoza

        jorge espinoza

        student•
        hace 7 años

        BEM

        Anderson Gil Petit

        Anderson Gil Petit

        student•
        hace 6 años

        Para los que quieran profundizar en la metodologia BEM: https://en.bem.info

        Asis Melgarejo Lopez

        Asis Melgarejo Lopez

        student•
        hace 6 años

        La diferencia entre:

        .btn .btn__info{ }``` y

        .btn__info{ }

        es que la primera tiene un valor de 20y la segunda un valor de 10.
        Juan Vicente Cordero

        Juan Vicente Cordero

        student•
        hace 7 años

        Para no perderse en los niveles de anidamiento, sería conveniente hacer como en otros lenguajes de programación, en la medida de lo posible de las exigencias del código, no extender los anidamientos más haya de cuatro niveles.

        Jhon Alexander Romero Gonzaga

        Jhon Alexander Romero Gonzaga

        student•
        hace 6 años

        http://getbem.com/

          Christian Velázquez

          Christian Velázquez

          student•
          hace 6 años

          Gracias por el dato

        Cesar Israel Aguilar Carrera

        Cesar Israel Aguilar Carrera

        student•
        hace 6 años

        Excelentes conceptos

        Enrique Alejandro Saban

        Enrique Alejandro Saban

        student•
        hace 6 años

        No se vió lo que hizo al final.

        En Bootstrap se usa por ejemplo : class="btn btn-info", se puede lograr esto ?

          Yamid Vélez Muñoz

          Yamid Vélez Muñoz

          student•
          hace 6 años

          Yo como propuesta, sin ser muy conocedor del frontend ni de Bootstrap usaria extend para replicar la misma funcionalidad que hace class=“btn btn-info”,

          Te dejo mi propuesta o mi solución

          Código sass

          .btn { display: inline-block; width: 100px; height: 80px; background-color: grey; } .btn-info { @extend .btn; color: #fff; background-color: #5bc0de; border-color: #46b8da; }

          Este código es solo un ejemplo y nos daria como resultado algo asi :

          .btn, .btn-info { display: inline-block; width: 100px; height: 80px; background-color: grey; } .btn-info { color: #fff; background-color: #5bc0de; border-color: #46b8da; }

          Considero que con esta alternativa y pensando en que son clases para usar en botones, se podria usar de la siguiente forma

          <button type="button" class="btn-info">Info</button>
        Fabricio Micheli

        Fabricio Micheli

        student•
        hace 7 años

        Pregunta… las anidaciones son recomendables utilizarlas siempre utilizarlas con la metodología BEM? o podemos también usarlas para reflejar alguna estructura del DOM más compleja para que sea más legible en el CSS?

          Edward Steven Ramos Palacios

          Edward Steven Ramos Palacios

          teacher•
          hace 7 años

          BEM es una metodología muy transversal. Desde mi opinión yo te recomiendo que siempre la uses, ya que de esta forma tus estilos no van acoplados a la estructura de tu HTML. BEM te permite tener tus estilos reusables.