├── README.md
├── final
├── assets
│ ├── butterfly.png
│ ├── cat.png
│ ├── crab.png
│ ├── deer.png
│ └── main-image.png
├── index.html
├── styles.css
├── styles.css.map
└── styles.scss
├── initial
├── index.html
└── styles.scss
└── readme-assets
├── cat-section-mobile.png
├── cat-section-web.png
├── crab-section.png
├── elements-landing-page.png
├── footer.png
├── header.png
├── landing-mobile.gif
├── landing-web.gif
├── main-section.png
├── search.png
└── title.png
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## ¿ Qué haremos ?
4 |
5 | Haremos una Landing Page tanto para Web como para Mobile usando SASS y BEM.
6 |
7 | ## ¿ Qué debemos hacer para comenzar ?
8 |
9 | 1. Debes tener instalado Git en tu computador.
10 | 2. Clonar este repositorio. Nos puedes preguntar si tienes dudas de cómo hacer este paso.
11 | 3. Abrir tu editor de código favorito: Visual Studio Code, Atom, Webstorm...
12 | 4. Abrir este repositorio en tu editor de código.
13 | 5. Escuchar atentamente las indicaciones posteriores. Haremos todo en conjunto, así que debemos esperar a que todos estemos en este paso.
14 |
15 | # Comencemos con nuestra Landing Page !
16 |
17 | 1. [Introducción a SASS](#1-introducción-a-sass-syntactically-awesome-stylesheets)
18 | 2. [Introducción a BEM](#2-introducción-a-bem-block-element-modifier)
19 | 3. [Después de clonar el repositorio...](#3-después-de-clonar-el-repositorio)
20 | 4. [Conozcamos la estructura de nuestra Landing Page](#4-conozcamos-la-estructura-de-nuestra-landing-page)
21 | 5. [Definición de elementos](#5-definición-de-elementos)
22 | 6. [Instalación de SASS](#6-instalación-de-sass)
23 | 7. [Variables: Paleta de colores y fuentes](#7-variables-paleta-de-colores-y-fuentes)
24 | 8. [Header](#8-header)
25 | 9. [Main Section](#9-main-section)
26 | 10. [Search Section](#10-search-section)
27 | 11. [Primary Section](#11-primary-section)
28 | 12. [Secondary Section](#12-secondary-section)
29 | 13. [Footer](#13-footer)
30 |
31 | ## 1. Introducción a SASS (Syntactically Awesome StyleSheets)
32 |
33 | SASS es un preprocesador de CSS y nos permite escribir CSS con unas pequeñas modificaciones: podemos hacer variables, extender estilos de otras clases, hacer anidamientos, utilizar condicionales, entre otros.
34 |
35 | Aquí te compartimos algunos recursos:
36 |
37 | * Documentación oficial: https://sass-lang.com/
38 | * Cheatsheet: https://devhints.io/sass
39 |
40 | ## 2. Introducción a BEM (Block, Element, Modifier)
41 |
42 | BEM es una convención de nomenclatura para los nombres de nuestras clases en CSS.
43 |
44 | * Documentación: https://seesparkbox.com/foundry/bem_by_example
45 |
46 | ## 3. Después de clonar el repositorio...
47 |
48 | Después de clonar el repositorio encontrarás dos carpetas: inicial y final. Tú comenzarás a escribir código en el `index.html` que dejamos para ti en la carpeta inicial. Y porsupuesto, en la carpeta final está el resultado al que debemos llegar.
49 |
50 | ## 4. Conozcamos la estructura de nuestra Landing Page
51 |
52 | Aquí te presentamos la estructura de nuestra Landing Page. Para este caso, escogimos una página de animales pero tú puedes hacerla del tema que quieras: motos, carros, maquillaje, ropa, fitness... e inclusive, tu propia página web.
53 |
54 | * ## Landing Page | Diseño Web
55 |
56 | > Mockup Link: https://goo.gl/Qbngyz
57 |
58 |
59 |
60 | * ## Landing Page | Diseño Móvil
61 |
62 | > Mockup Link: https://goo.gl/gGkwDq
63 |
64 |
65 |
66 | ## 5. Definición de elementos
67 |
68 | Para comenzar a maquetar nuestra Landing Page es importante poder reconocer los elementos que allí se encuentran. Es decir, si tiene navbar, header, secciones, imágenes, footer, etc.
69 |
70 | Este es un paso fundamental ya que te ayudará a conocer mejor el proyecto que vas a realizar y también puedes empezar a detectar si trabajarás con flexbox, css grid, boostrap, material design, etc. Es decir, empezarás a levantar requisitos. Además te ayudará a estructurar y tener una visión más clara de tu HTML.
71 |
72 |
73 |
74 | Como pudiste ver, tendremos: Header, Main Section, Search Section, Primary Section, Secondary Section y Footer. Estos elementos serán nuestros pequeños bloques de HTML.
75 |
76 | ## 6. Instalación de SASS
77 |
78 | Lo primero que debes saber es que *no* puedes insertar directamente un archivo `.scss` en un archivo `.html`.
79 |
80 | ¿Por qué?
81 |
82 | Porque SASS al ser un preprocesador de CSS3 y no es soportado en los navegadores web. Por lo tanto, los pasos a seguir son:
83 |
84 | ### 1. Instalación de SASS en tu computador.
85 |
86 | * Si usas **npm** debes poner en tu consola: `npm install -g sass`
87 | * Si usas **Chocolatey Package Manager** (Windows) debes poner en tu consola: `choco install sass`
88 | * Si eres MAC OS X debes poner en tu consola: `brew install sass/sass/sass`
89 |
90 | > Documentación oficial: https://sass-lang.com/install
91 |
92 | ### 2. Correr el proyecto con SASS
93 |
94 | Para poder visualizar tus proyectos de sass en el navegador, debes escribir en tu consola: `sass --watch tu-ruta/sass-workshop/initial/styles.scss tu-ruta/sass-workshop/initial/styles/index.css`
95 |
96 | * > Nota 1: "tu-ruta" es el lugar en tu computador en donde clonaste el repositorio. Un ejemplo puede ser: /Users/PepitaPerez/Documentos/... es decir que lo que deberías escribir en tu consola es: `sass --watch /Users/PepitaPerez/Documentos/sass-workshop/initial/styles.scss /Users/PepitaPerez/Documentos/sass-workshop/initial/styles/index.css`
97 |
98 | * > Nota 2: La ruta de tu proyecto la puedes conseguir haciendo `pwd` en tu consola. Si eres Windows con el comando `cd`
99 |
100 | ### 3. Ver tu proyecto en el navegador
101 |
102 | Al correr el comando anterior, notarás en tu código que se crea un archivo `styles.css.map`. Si sí, ya puedes ir a tu navegador y poner la ruta del `index.html` de tu proyecto.
103 |
104 | Siguiendo la línea del ejemplo anterior, deberías poner: `file:///Users/PepitaPerez/Documentos/sass-workshop/initial/index.html`
105 |
106 | ## 7. Variables: Paleta de colores y fuentes
107 |
108 | Las variables en SASS son un camino para almacenar información y poder reutilizarla.
109 |
110 | En nuetro caso, la paleta de colores es:
111 |
112 | * Verde: #99DDCC
113 | * Rosado: #FA91A7
114 | * Amarillo: #D9E540
115 | * Blanco: #FFF
116 |
117 | y, la fuente que usaremos será **Arial**.
118 |
119 | > Nota: Recuerda que puedes escoger los colores y las fuentes que desees.
120 |
121 | Lo que haremos para definir estas *variables* en nuestro archivo `styles.scss` es escribir lo siguiente:
122 |
123 | ```
124 | $green: #99DDCC;
125 | $pink: #FA91A7;
126 | $yellow: #D9E540;
127 | $white: #FFF;
128 | $font-arial: arial;
129 | ```
130 |
131 | ## 8. Header
132 |
133 | * Imagen del mockup:
134 |
135 |
136 |
137 | Podemos notar que nuestro Header debe ocupar todo el ancho de nuestra página (tanto en web como en mobile), un largo de 80px y que además tiene un texto en mayúscula y centrado. Así que:
138 |
139 | * En el archivo HTML escribiremos lo siguiente:
140 |
141 | ```
142 |
143 | ```
144 |
145 | * En el archivo SCSS escribiremos lo siguiente:
146 |
147 | ```
148 | .header {
149 | background-color: $green;
150 | color: $white;
151 | width: 100%;
152 | height: 80px;
153 | text-transform: uppercase;
154 | font-family: $font-arial;
155 | font-size: 18px;
156 | font-weight: bold;
157 | letter-spacing: 5px;
158 | display: flex;
159 | align-items: center;
160 | justify-content: center;
161 | }
162 | ```
163 |
164 | Puedes notar que tenemos: `font-family`, `font-size`, `font-weight` y con SASS podemos escribir eso así:
165 |
166 | ```
167 | font: {
168 | family: $font-arial;
169 | size: 18px;
170 | weight: bold;
171 | }
172 | ```
173 |
174 | Así que nuestra clase `.header` quedaría:
175 |
176 | ```
177 | .header {
178 | background-color: $green;
179 | color: $white;
180 | width: 100%;
181 | height: 80px;
182 | text-transform: uppercase;
183 | letter-spacing: 5px;
184 | display: flex;
185 | align-items: center;
186 | justify-content: center;
187 | font: {
188 | family: $font-arial;
189 | size: 18px;
190 | weight: bold;
191 | }
192 | }
193 | ```
194 |
195 | Sin embargo, si pensamos a futuro vamos a notar que necesitaremos centrar elementos usando `display: flex`, por lo que sería útil hacer una clase que centre elementos y así poderla reutilizar más adelante. Por lo tanto, crearemos una clase llamada `.center` con lo siguiente:
196 |
197 | ```
198 | .center {
199 | display: flex;
200 | align-items: center;
201 | justify-content: center;
202 | }
203 | ```
204 |
205 | Y, en nuestra clase `.header` vamos a heredar de `.center` usando `@extend` así:
206 |
207 | ```
208 | .header {
209 | @extend .center;
210 | background-color: $green;
211 | color: $white;
212 | width: 100%;
213 | height: 80px;
214 | text-transform: uppercase;
215 | letter-spacing: 5px;
216 | font: {
217 | family: $font-arial;
218 | size: 18px;
219 | weight: bold;
220 | }
221 | }
222 | ```
223 |
224 | También podemos sacar dos clases más para poderlas reutilizar más adelante:
225 |
226 | ```
227 | .size-container {
228 | width: 100%;
229 | height: 80px;
230 | }
231 |
232 | .letter-transform {
233 | text-transform: uppercase;
234 | letter-spacing: 5px;
235 | }
236 | ```
237 |
238 | Finalmente, nuestra clase `.header` quedaría:
239 |
240 | ```
241 | .header {
242 | @extend .center;
243 | @extend .size-container;
244 | @extend .letter-transform;
245 | background-color: $green;
246 | color: $white;
247 | font: {
248 | family: $font-arial;
249 | size: 18px;
250 | weight: bold;
251 | }
252 | }
253 | ```
254 |
255 | ## 9. Main Section
256 |
257 | * Imagen del mockup:
258 |
259 |
260 |
261 | * En el archivo HTML escribiremos lo siguiente:
262 |
263 | ```
264 |
265 |
266 |
267 | ```
268 |
269 | * En el archivo SCSS escribiremos lo siguiente:
270 |
271 | ```
272 | .main {
273 | img {
274 | width: 100%;
275 | height: 100%;
276 | }
277 | }
278 | ```
279 |
280 | ## 10. Search Section
281 |
282 | * Imagen del mockup:
283 |
284 |
285 |
286 | * En el archivo HTML escribiremos lo siguiente:
287 |
288 | ```
289 |
290 |
Search
291 |
292 |
293 |
294 |
295 |
296 | ```
297 |
298 | El ícono lo puedes sacar de Font Awesome. Puedes escoger el ícono que más te guste aquí: https://fontawesome.com/icons?d=gallery
299 |
300 | * En el archivo SCSS escribiremos lo siguiente:
301 |
302 | ```
303 | .search {
304 | &__title {
305 | @extend .center;
306 | @extend .size-container;
307 | @extend .letter-transform;
308 | background-color: $green;
309 | color: $white;
310 | font: {
311 | family: $font-arial;
312 | size: 18px;
313 | }
314 | }
315 | &__input {
316 | background-color: $white;
317 | display: grid;
318 | grid-template-columns: 60px auto;
319 | justify-items: center;
320 | align-items: center;
321 | input {
322 | @extend .size-container;
323 | border: 0px;
324 | outline: none;
325 | font-size: 18px;
326 | letter-spacing: 5px;
327 | }
328 | }
329 | }
330 | ```
331 |
332 | ## 11. Primary Section
333 |
334 | Esta sección debemos pensarla tanto para dispositivos web como para mobile. Vamos a notar que hay un pequeño cambio en los tamaños de las imágenes y descripciones.
335 |
336 | Con *CSS Grid* haremos una cuadrícula imaginaria como la que vemos a continuación:
337 |
338 | * Imagen del mockup:
339 |
340 |
341 |
342 | Lo que va a cambiar será la ubicación de los elementos en las diferentes filas. Así:
343 |
344 | En Web:
345 |
346 | | Column 1 | Column 2 | |
347 | |---|---|---|
348 | | Imagen Cangrejo | Descripción Mariposa | **Row 1** |
349 | | Imagen Cangrejo | Imagen Mariposa | **Row 2** |
350 | | Imagen Cangrejo | Imagen Mariposa | **Row 3** |
351 | | Descripción Mariposa | Imagen Mariposa | **Row 4** |
352 |
353 | En Mobile:
354 |
355 | | Column 1 | Column 2 | |
356 | |---|---|---|
357 | | Imagen Cangrejo | Descripción Mariposa | **Row 1** |
358 | | Imagen Cangrejo | Descripción Mariposa | **Row 2** |
359 | | Descripción Mariposa | Imagen Mariposa | **Row 3** |
360 | | Descripción Mariposa | Imagen Mariposa | **Row 4** |
361 |
362 | * En el archivo HTML escribiremos lo siguiente:
363 |
364 | ```
365 |
366 |
367 |