clase:daw:diw:1eval:tema03.c
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| clase:daw:diw:1eval:tema03.c [2025/11/05 12:16] – [Arquitectura CSS] Lorenzo | clase:daw:diw:1eval:tema03.c [2026/10/23 23:04] (actual) – Reorganización del módulo: contenido movido a las páginas nuevas de clase:daw:diw claude | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== 3. Creación de componentes: | ||
| - | Vamos ahora a ver lo mas importante de todo el módulo. ¡Como organizar nuestras clases CSS!. Antes de empezar puede leer este artículo que habla sobre la importancia de una arquitectura CSS: [[https:// | ||
| - | |||
| - | |||
| - | ===== Arquitectura CSS ===== | ||
| - | |||
| - | |||
| - | Cuando nos enfrentamos a proyectos grandes, puede que nuestros compañeros no entiendan nuestras líneas de código, para eso se crearon las arquitecturas de CSS. | ||
| - | |||
| - | Los objetivos son: | ||
| - | * Predecible: Escribir reglas claras. | ||
| - | * Reutilizable: | ||
| - | * Mantenible: Que sea fácil de leer y adaptarnos a los estándares. | ||
| - | * Escalable: Que pueda crecer fácilmente pero sin afectar el rendimiento. | ||
| - | |||
| - | Buenas prácticas | ||
| - | * Establecer reglas para que el equipo se entienda. | ||
| - | * Explicar la estructura base o dar los fundamentos del proyecto a un nuevo integrante. | ||
| - | * Evitar hojas de estilo muy extensas. | ||
| - | * Tener una buena documentación explicando ciertos aspectos del código. | ||
| - | |||
| - | |||
| - | ===== BEM ===== | ||
| - | Como arquitectura CSS vamos a seguir durante todo el curso una llamada [[http:// | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | ===== Bloques y Elementos ===== | ||
| - | |||
| - | Lo primero es identificar los bloques de nuestra página. Esos bloque son como componentes u objetos que la página. En las siguientes imágenes podemos ver ejemplos de bloques. | ||
| - | |||
| - | {{head-marked2.jpg? | ||
| - | {{list-of-goods.jpg? | ||
| - | |||
| - | Vemos que un bloque puede o no tener dentro otro bloque. En bloque " | ||
| - | |||
| - | Como los bloques pueden ser muy complejos, cada bloque puede tener si lo necesita de " | ||
| - | |||
| - | {{menu-items2.jpg? | ||
| - | |||
| - | El componentes de " | ||
| - | |||
| - | Por último nos quedarían los modificadores que luego veremos. | ||
| - | |||
| - | Así que BEM significa lo siguiente: | ||
| - | * **B**loque | ||
| - | * **E**lemento | ||
| - | * **M**odificador | ||
| - | |||
| - | Así que vamos a tener clases CSS que serán de tipo Bloque, de tipo Elemento o de tipo Modificador. Pasemos a ver un ejemplo. | ||
| - | |||
| - | Imaginar el siguiente panel: | ||
| - | |||
| - | {{panel.png|}} | ||
| - | |||
| - | Su HTML sería una cosa así: | ||
| - | |||
| - | <sxh html> | ||
| - | <div> | ||
| - | < | ||
| - | <div> | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | Todo ese HTML forma el bloque " | ||
| - | Así que las clases CSS van a ser las siguientes | ||
| - | * Bloque: panel | ||
| - | * Elemento: < | ||
| - | * Elemento: < | ||
| - | |||
| - | <sxh html> | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | Como vemos el nombre de la clase CSS de un bloques es como el nombre del bloque con el prefijo " | ||
| - | |||
| - | ¿Que ocurre con el tag <p>. No forma parte del panel . Es otro bloque que podemos meter dentro del panel pero no forma parte del bloque " | ||
| - | |||
| - | Veamos otro ejemplo con un botón: | ||
| - | |||
| - | {{: | ||
| - | |||
| - | Solo hay un bloque llamado " | ||
| - | |||
| - | <sxh html> | ||
| - | <div class=" | ||
| - | </ | ||
| - | |||
| - | Por último nos faltan los modificadores. Imaginar que queremos que el panel pueda tener varios colores: | ||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | ===== Modificadores ===== | ||
| - | |||
| - | ¿Como modificamos el CSS para incluir esos nuevos colores? Pues con un modificador. | ||
| - | |||
| - | <sxh html> | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | Vemos que hemos añadido a todas las clases una nueva clase que se llama igual a la que ya hay pero acabada " | ||
| - | |||
| - | Así que pasemos ahora a ver una serie de reglas: | ||
| - | * En cada tag solo puede haber una clase de bloque o de elemento | ||
| - | * Las clases de elemento siempre estarán en un tag que está dentro de otro tag de tipo bloque. | ||
| - | * Un elemento o un bloque puede tener mas clases CSS siempre que sean de tipo modificador y que sean modificadores del bloque o elemento al que pertenecen. | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | Hemos visto que los bloques empiezan por " | ||
| - | * **c-**: Para bloques que son componentes visuales. Como paneles, botones, árboles, etc. | ||
| - | * **l-**: Para bloques que son de Layout. El layout es un tipo de bloque que solo se dedica a indicar como se colocan otros bloques dentro de él. Sirve para organizar los divs dentro de la página. Un componente visual también dice como se organizan sus elementos dentro de la página pero no se dedica en exlusiva a colocar cosas. | ||
| - | |||
| - | |||
| - | Dentro de los modificadores hay de otro tipo que es el modificador global que empieza por **g--** (la letra g y dos guiones). Es un modificador que se puede usar con cualquier componente. Se suele usar para definir cosas como los margenes, los paddings, etc. De esa forma no es necesario tener el mismo modificador en cada componente. | ||
| - | |||
| - | Veamos ahora un ejemplo un poco mas complejo | ||
| - | |||
| - | <sxh html> | ||
| - | <body class=" | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | <img class=" | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | </ | ||
| - | </ | ||
| - | <div class=" | ||
| - | <form class=" | ||
| - | <input class=" | ||
| - | <input class=" | ||
| - | <input class=" | ||
| - | <button class=" | ||
| - | </ | ||
| - | </ | ||
| - | <div class=" | ||
| - | <div class=" | ||
| - | <img class=" | ||
| - | <img class=" | ||
| - | <img class=" | ||
| - | <img class=" | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | Están los siguientes bloques de tipo componentes y sus elementos: | ||
| - | * c-body | ||
| - | * c-logo | ||
| - | * c-menu | ||
| - | * < | ||
| - | * c-form | ||
| - | * c-input | ||
| - | * c-button | ||
| - | * c-social | ||
| - | |||
| - | Luego están los Layouts | ||
| - | * l-page | ||
| - | * l-horizontal | ||
| - | |||
| - | Están los modificadores de cada componente o elemento | ||
| - | * < | ||
| - | * < | ||
| - | * < | ||
| - | * c-button | ||
| - | * c-button--primary | ||
| - | * c-button--normal | ||
| - | |||
| - | Y por último están los modificadores globales: | ||
| - | * g--margin-4 | ||
| - | * g--margin-bottom-6 | ||
| - | |||
| - | {{: | ||
| - | |||
| - | |||
| - | ---- | ||
| - | |||
| - | Sobre BEM hay mucha documentación, | ||
| - | * Metodología BEM | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * {{ : | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * BEM Avanzado | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | *Otras metodologías o arquitecturas. | ||
| - | * [[http:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | |||
clase/daw/diw/1eval/tema03.c.1762341393.txt.gz · Última modificación: por Lorenzo
