Análisis de tareas por diseño (sass, pug, gulp, bem)

Para juniors, para juniors ... o comenzarán aquí ... sí, nosotros sí ...

Completé el proyecto (sitio) pug + sass + es6 + gulp + BEM. Durante el desarrollo, me encontré con muchas dificultades. Este artículo está dirigido a principiantes, para aquellos que no conocen los márgenes negativos, han escuchado sobre la metodología de nombres BEM, pero no la han probado, para aquellos que no tienen una amplia experiencia en desarrollo. Espero que te interese aquí. Si lees esto en el trabajo, sentado en 4 monitores y con una mano escribes el código para AI, y con la otra mano hojeando el centro, entonces me gustaría escuchar tus críticas constructivas sobre los métodos que se usaron aquí.

Margen negativo y ancho 110%
Hace mucho tiempo que conozco ese truco, pero lo apliqué solo por primera vez en la práctica. Hubo una restricción en el diseño (contenedor = ancho: 1170 px, borde rojo). A la derecha, el contenido correspondía a la restricción y era adyacente al borde, pero a la izquierda, la imagen salió del borde. Al principio esto puede dar miedo, pero vale la pena saber más sobre el funcionamiento de margin-letf: -100px y ya sabes cómo resolver la tarea. Por cierto, esto es flexible y en amarillo marqué los límites de los objetos.

Estamos acostumbrados a usar el ancho, la altura como 100%, y esto está claro, todo para la adaptación, usando el ancho, puede lograr un resultado similar al de los márgenes negativos. Simplemente dele el tamaño al descendiente más grande que su padre (por ejemplo, ancho: 130%)


BEM css estructura
Esto fue probablemente lo más difícil para mí.

imagen

Esta imagen demuestra bien mi proyecto, y de hecho cualquier proyecto. Cuando escribe las primeras cien líneas, todo parece simple y no nota problemas. Así que finaliza el proyecto, con una longitud de 900 líneas e inesperadamente para usted, decidió desplazarse por el archivo, bien, o agregar consultas de medios.



Escribes estilos para un elemento en los medios, miras el sitio y no entiendes por qué los estilos no funcionan según lo requerido. En busca de un problema que ya pasó 15 minutos, verificó las tareas en trago y hojeó el archivo css compilado.

Por casualidad, por accidente ... encuentra el problema en una hoja de estilos en cascada, o más bien, en la forma en que los estilos se aplican a los elementos. Al comienzo de mi camino a la web, ciertamente leí que los selectores tienen diferentes prioridades de aplicación. En resumen, para un selector ordinario (div, ul, a, p, etc.) selector -1 punto, para la clase 10, para el identificador 100.



Después de verificar cuidadosamente todos los anidamientos, todavía encontré un error. Resulta que necesitas monitorear el anidamiento de elementos, y darle a esto no el último significado.

Esto puede incluir la estructura del archivo css (sass). Hay un bloque de "cartera", en él hay muchos elementos del tipo "cartera __ *", pero dos clases en este anidamiento son superfluas, en mi opinión.

Este fue el primer proyecto en el que intenté adherirme estrictamente a BEM, pero no pasé un minuto diseñando desde el principio, sino que se me ocurrieron clases sobre la marcha, lo que llevó al hecho de que el apoyo se brinda con dificultad.



Pero esto, en mi opinión, es un buen ejemplo de BEM



Clases largas de BEM
Leí sobre este problema en uno de los artículos sobre BEM, pero yo mismo lo encontré por primera vez. Es muy similar a los problemas con bootstrap, también tenía ... hay clases largas. ¿Cómo puedo pasar con el número mínimo de clases?

Esto es por defecto btn.



Y estos ya son botones modificados ...









Selectores complejos
En vista del hecho de que tuve que escribir en BEM, algunas complicaciones en el proyecto vinieron de aquí. Ya escribí sobre clases largas, aquí hay otro caso.

Había 6 elementos similares en la página. Cuando los medios consultan, era necesario ocultar una cierta cantidad de elementos. Después de todo, no cree nuevas clases para cada objeto. Tuve que usar la pseudo-clase nth-child (). Anteriormente, se usaba solo de forma recortada (child (1), child (3), child (4), etc.), ahora era necesario ocultar todos los elementos excepto los dos primeros. Después de pasar 5 minutos leyendo documentación, utilicé nth-child (n + 3), obteniendo así el resultado que necesitaba.



Otro ejemplo de cómo puede llevar el elemento deseado a través de un grupo de selectores y no encontrar una clase especial para este elemento.



Ver la imagen de abajo. La siguiente entrada div.1> p seleccionará solo objetos con la clase "2", div.3> p en consecuencia recibirá objetos con la clase "4". La imagen muestra cómo funciona esto. Los elementos más cercanos se seleccionan en la jerarquía.



Conclusión


Estoy escribiendo este artículo porque Estoy interesado en esto, estoy interesado en desmontar mis proyectos. Esto me da la oportunidad de desarrollar y cerrar la brecha en mi conocimiento de ciertas tecnologías. Gracias por leer, espero que lo hayan disfrutado.

Source: https://habr.com/ru/post/es432248/


All Articles