Mulheres incríveis estão se superando no mercado Tech
38 |
Ao todo, somos apresentados a 30 mulheres, que tornaram a sua luta peça fundamental na construção do mundo. O projeto conseguiu aqui reunir variadas faixas etárias e diferentes áreas de atuação.
114 |
115 |
116 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Plano de Aulas
2 |
3 | > Plano de aulas para a semana do dia 13/08/2018 - 17/08/2018, sobre HTML e CSS básico.
4 | > Este repositório será populado conforme o andamento das aulas.
5 |
6 | ---
7 |
8 |
9 | ## Obrigada às nossas contribuidoras!!
10 | Esse material foi criado colaborativamente pela equipe Reprograma e com a ajuda de voluntárias.
11 | Nos ajudaram com o layout dos exercícios e implementação no Figma:
12 | - [Rafaella Volkmann](http://ralfa.me/)
13 | - [Sandy Zambeli](https://www.behance.net/sandyzambe950b)
14 |
15 | Nos ajudaram com a resolução dos exercícios:
16 | - [Luciana Primante](https://github.com/lprimante)
17 | - [Monique Rodrigues](https://github.com/MoniqueRodrigues)
18 | - [Natalia Izui](https://github.com/natizui)
19 | - [Pamella Azevedo](https://github.com/pamellaazevedo)
20 |
21 |
22 | **Muito obrigada!!**
23 |
24 |
25 | ---
26 |
27 | ## Issues - como utilizar nesse repositório
28 | As issues neste repositório podem ser usadas como formas de enviar perguntas acerca do assunto da semana de fundamentos de HTML e CSS.
29 | Para fazer a sua pergunta, basta escrever um resumo dela na área do título e uma descrição sobre problema ou dúvida.
30 |
31 | Na descrição, é recomendável ser o mais específica possível. Se possível, colocar **partes do seu código** em HTML e CSS ou **link para o seu repositório** para referência. Especificar também o **navegador** utilizado e o tamanho de tela.
32 | Veja o exemplo na aba Issues. Para documentação de formatação de textos do Github, acesse esse [link](https://guides.github.com/features/mastering-markdown/).
33 |
34 | ---
35 |
36 | ### Aula 01 - Introdução à HTML e CSS
37 |
38 | Iniciaremos com assuntos básicos de estrutura, nomenclatura e anatomia de HTML e CSS.
39 | - [Editores de texto e organização de pastas](#editores-de-texto);
40 | - [HTML: anatomia e introdução de tags](#html);
41 | - [CSS: anatomia e introdução de propriedades](#css);
42 | - [Classes, id](#classes-e-id);
43 | - [Github Desktop](#github-desktop).
44 |
45 | #### Editores de texto
46 | Para se modificar um arquivo `.html` e `.css`, precisamos de editor de texto. Apesar de que um simples bloco de notas pode ser a ferramenta para criação desses arquivos, vários softwares foram lançados no mercado para gostos dos programadores, oferecendo funcionalidades e plugins para facilitar o desenvolvimento. Alguns notáveis são:
47 | - [Sublime Text](https://www.sublimetext.com/);
48 | - [Notepad++](https://notepad-plus-plus.org/);
49 | - [Atom](https://atom.io/);
50 | - O que vamos usar durante as aulas é o [Visual Studio Code](https://code.visualstudio.com/);
51 |
52 | A estrutura de pastas básicas é:
53 | ```
54 | index.html
55 | /css
56 | style.css
57 | /img
58 | imagem.jpg
59 | ```
60 | Ou seja, uma pasta com um arquivo `index.html` na raiz e duas pastas: uma `/css` para inserção de nossos estilos `.css` e outra `/img`, para inserção de nossas imagens.
61 |
62 |
63 | #### HTML
64 | HTML é a abreviação de **Hyper Text Markup Language** (linguagem de marcação em hipertexto). Ou seja, não se trata de uma linguagem de programação, pois não tem lógica (algoritmos, processos etc). Ele cria a **estrutura** de uma página ou aplicação web, determinando a separação de layout e seu conteúdo.
65 |
66 | Documentos `.html` possuem tags de estruturação básica:
67 | ```html
68 |
69 |
70 |
71 |
72 |
73 | ```
74 |
75 | Internamente, as tags html possuem uma anatomia básica também:
76 | ```html
77 |
78 | conteúdo
79 |
80 | ```
81 |
82 | Comentários em HTML:
83 | ```html
84 |
85 | ```
86 |
87 | #### CSS
88 | CSS é abreviação de **Cascading Style Sheet** (folha de estilos em cascata). É a linguagem que define **estilos** para o HTML, portanto, não se trata de linguagem de programação. CSS tem "cascata" no nome, devido a sua forma de determinar a propriedade de um elemento - levando em consideração *hierarquia de seletores* e de chamadas de estilo (_inline, internal e external_).
89 |
90 | Para fazer o link de um arquivo `.css` em um documento `.html`, devemos inserir a tag `` no `` do documento, com o `href` do caminho do arquivo.
91 | ```html
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | ```
100 |
101 | Dentro do arquivo `.css`, a anatomia é:
102 | ```css
103 | seletor {
104 | propriedade: valor;
105 | }
106 | ```
107 |
108 | Exemplo:
109 | ```css
110 | p {
111 | color: red;
112 | }
113 | ```
114 |
115 | Comentários em CSS:
116 | ```css
117 | /* Sou um comentário CSS */
118 | ```
119 |
120 |
121 | > **ATENÇÃO!**
122 | > Não esqueçam de **indentar** o código! Isso ajuda na sua legibilidade, manutenção e colaboração com outros desenvolvedores.
123 | >
124 | > Para indentar, selecione a linha do código e aperte *tab*.
125 |
126 | #### Classes e id
127 | Classes e ids são atributos que podem ser inseridos em qualquer tag dentro da ``. Eles são **atributos de nomeação**, sendo `class` usada majoritariamente para referência em CSS e `id` para Javascript.
128 | Uma diferença entre os dois é que podem haver várias classes com o mesmo valor, ao passo que ids devem ser **únicos**.
129 |
130 |
131 | #### Propriedades e tags
132 | Verificar os arquivos de exercícios para vê-los em prática.
133 |
134 | HTML | CSS
135 | ------------ | -------------
136 | Tags de **estrutura**: !doctype, html, head, body | Propriedades de **background**: background-imagem, background-color
137 | Tags no **head**: meta (charset), title, link | Propriedades de **texto**: text-align, font-family, font-size, text-decoration, font-size, text-transform
138 | Tags de **divisão**: div | Propriedades de **layout**: width, margin, padding, display (inline-block)
139 | Tags de **texto**: h1 ao h6, p | Propriedade de **cor**: color
140 | Tag de **link**: a | Propriedade de **decoração**: box-shadow, border
141 | Tag de **imagem**: img |
142 |
143 | **Macete de centralização**: apenas para elementos block.
144 | 1. Definir um tamanho para seu elemento através da propriedade `width`;
145 | 2. Definir `margin: 0 auto;`
146 |
147 |
148 | #### Github Desktop
149 | Github é uma rede de repositórios de códigos abertos, muito utilizada por desenvolvedores.
150 |
151 | Para a primeira semana, vamos utilizar a versão software do [Github](https://desktop.github.com/).
152 |
153 | ##### Meu primeiro repositório sem afobação
154 |
155 | **NO GITHUB.COM**
156 | 1. Crie uma conta em https://github.com
157 | 2. No seu perfil, crie um repositório. Defina o nome do seu repositório, uma descrição e crie em *Create repository*.
158 |
159 | **NO GITHUB DESKTOP**
160 | 1. Na interface do *Github Desktop*, efetue o log in na sua conta.
161 | 2. Vá em File > Clone Repository (ou ctrl + shift + O).
162 | 3. Na lista de repositórios, selecione aquela que você acabou de criar. Veja onde está o endereço do *Local path*. Lá é para onde você vai copiar seus arquivos para subir para o Github.com.
163 | 4. Apertando ok, vá para a pasta do *local path*, copie seus documentos que quer subir para ela.
164 | 5. Na interface do *Github Desktop*, você deve ver a listagens de arquivos modificados ou adicionados à esquerda.
165 | 6. Na esquerda abaixo, escreva uma mensagem no campo *Summary* e clique em Commit to master. Depois isso NÃO SE DESESPERE: seus arquivos vão sumir de vista. **ISTO ESTÁ CORRETÃO**
166 | 7. Depois disso, acima, clique em Push ou Publish. Veja a página do seu repositório do github.com para ver seus arquivos lindos na nuvem.
167 |
168 | ---
169 |
170 | ### Aula 02 - Listas e Display
171 |
172 | Na parte da manhã, teremos contato com a versão desktop do Github, onde vamos subir todos os nossos exercícios a partir desse momento.
173 | Na parte da tarde, veremos display e listas.
174 | - [CSS: cascata em external, internal e inline](#css-external-internal-e-inline);
175 | - [Metodologia BEM](#método-bem).
176 | - [Documentação HTML e CSS](#documentação-html-e-css);
177 | - [Conceito de display inline, block e inline-block](#display-inline-block-e-inline-block);
178 | - [Listas ordenadas e não ordenadas](#listas-ordenadas-e-não-ordenadas);
179 | - [Pseudo-classes: hover, active, focus e visited](#pseudo-classes);
180 |
181 | #### CSS: external, internal e inline
182 | A chamada de marcação de estilo pode ser feita de três formas:
183 | - External: fazendo um `` por uma tag na ``, para conectar a um estilo externo.
184 | ```html
185 |
186 |
187 |
188 |
189 | ```
190 | - Internal: ainda no ``, abrir uma tag `
198 |
199 | ```
200 | - Inline: estilo de css que é inserido como atributo em uma tag.
201 | ```html
202 |
203 | ```
204 | Sobre as prioridades, o inline tem a máxima prioridade, enquanto o external tem a menor.
205 | ```
206 | inline > internal > external
207 | ```
208 |
209 | Por esse motivo, por questões de responsividade e de escalabilidade do código, não vamos trabalhar com estilos inline nem internal.
210 | Para trabalharmos questões de hierarquia, vamos tentar ser mais específicas em nossos seletores no CSS externo.
211 |
212 |
213 | #### Método BEM
214 | O [método BEM](https://en.bem.info/methodology/quick-start/) é um sistema de nomenclatura de aplicações e documentos web, criado pela Yandex. O método, que define um sistema lógico e coerente de nomenclatura de arquivos e códigos de linguagens como HTML, CSS e Javascript, divide as partes em:
215 |
216 | *BEM : block | element | modifier*
217 |
218 | **block**: propósito. O que é isso? Ele é semanticamente independente de outros elementos. Exemplos são: section, menu, error, button, header, logo, search-form, form.
219 | - O bloco não deve influenciar seu ambiente, ou seja, não deve haver margin, padding ou position nesse objeto;
220 | - Eles podem estar um dentro do outro (nesting);
221 |
222 | **element**: uma parte do *block* que não pode ser usado separadamente dele.
223 | Nome: block-name__element-name, search-form__input, search-form__button.
224 | - Elementos podem estar dentro de um outro elemento;
225 | - Elementos são *sempre* parte de um block, não de um outro elemento. Ou seja, não pode haver uma classe do tipo block__elem1__elem2 (sugestão: block__elem1-elem2 ou block__elem2);
226 |
227 | São opcionais, nem todos os blocks tem elementos.
228 |
229 | > Block ou element?
230 | >
231 | > Block: se a seção de código tem a chance de ser re-utilizada e não depende de outros elementos da página para ser implementado.
232 | >
233 | > Element: se a seção de código não pode ser usada separadamente de um parent (block).
234 |
235 | **modifier**: define *aparência*, *estado* ou *comportamento* de um block ou element. Seu nome define sua aparência. Qual o seu tamanho? Qual o seu tema? Exemplos: size_s, theme_islands. Ele é separado do nome do block ou element por um _. Exemplos: block-name_modifier-name e block-name__element-name_modifier-name.
236 | Usos:
237 | - Estados: true, false, enabled e disabled. Estados true não precisam de modifier. search-form__button_disabled.
238 | - Valores: tamanhos, design. search-form__button_size_s, search-form_theme_islands.
239 | - Modifiers não podem ser usados sozinhos.
240 |
241 | **mix**: técnica de usar diferentes entidades de BEM. Combine o comportamento e estilo de múltiplas entidades sem duplicar o código e crie componentes de UI semanticamente, baseado nos já existentes.
242 | Por exemplo: btn btn_purple. O mix btn é uma classe independente do btn_purple, e pode ser usada em outros lugares do documento.
243 |
244 |
245 | #### Documentação HTML e CSS
246 | É importante saber onde consultar quando houver dúvida sobre tags de HTML, seletores e propriedades de CSS. Existem várias fontes de documentação.
247 | - [Tags de HTML - W3Schools](https://www.w3schools.com/tags/default.asp);
248 | - [Propriedades de CSS - W3Schools](https://www.w3schools.com/cssref/default.asp);
249 | - [Seletores de CSS - W3Schools](https://www.w3schools.com/cssref/css_selectors.asp);
250 | - [Documentação HTML - MDN](https://developer.mozilla.org/pt-BR/docs/Web/HTML/HTML5);
251 | - [Documentação CSS - MDN](https://developer.mozilla.org/pt-BR/docs/Web/CSS);
252 | - [Várias documentações](https://devdocs.io/).
253 |
254 | As documentações da MDN estão parcialmente na língua portuguesa. Quem tem conhecimento de inglês pode contribuir traduzindo seus artigos para o português e deixar a documentação mais acessível.
255 |
256 |
257 | #### Display inline, block e inline-block
258 | Toda tag em HTML tem por padrão algum valor de display. Os três mais básicos são inline, block e inline-block, cujo entendimento é de extrema importância para manipulação eficiente de elementos na sua página web.
259 |
260 | **Block**: são elementos que "ocupam" toda a largura do elemento pai, fazendo com que não deixe outros elementos do lado dele. Mesmo que seja forçado a ter uma medida menor (a partir de propriedade `width`), ele não deixa outro elemento na mesma linha horizontal.
261 | - Podem conter outros tipos de elementos (inline, block e inline-block);
262 | - Pode estar dentro somente de outros elementos block;
263 |
264 | **Inline**: são elementos que ocupam somente o espaço do conteúdo.
265 | - Não podem conter elementos block;
266 | - Podem estar dentro de qualquer tipo de elemento (block, inline, inline-block);
267 | - Não cria linhas novas;
268 | - Não se consegue definir propriedades de `width` e `height` para ele.
269 |
270 | 
271 |
272 | **Inline-block**: são elemento híbridos, que permitem que outros elementos fiquem um ao lado do outro (em linha), mas que também possam receber valores de width e height.
273 | > Fonte da imagem: https://stackoverflow.com/questions/9189810/css-display-inline-vs-inline-block
274 |
275 | #### Listas ordenadas e não ordenadas
276 | Listas são usadas para enumeração de items. No HTML, eles também são utilizados para marcação de outros elementos, como itens de menu de navegação.
277 | Para criar uma lista *ordenada*, devemos fazer:
278 | ```html
279 |
280 |
Item 1
281 |
Item 2
282 |
Item 3
283 |
284 | ```
285 |
286 | Para criar uma lista *não ordenada*, devemos fazer:
287 | ```html
288 |
289 |
Item
290 |
Item
291 |
Item
292 |
293 | ```
294 |
295 |
296 | #### Pseudo-classes
297 | Pseudo-class são palavras que são adicionadas aos seletores, para especificar um estado especial.
298 | Para tags de link (a), são comuns as pseudo-classes de:
299 | - `a:hover` (é ativada quando o mouse fica sobre o elemento);
300 | - `a:active` (quando o link é clicado);
301 | - `a:focus` (quando o link é focado, através de navegação por tab ou por clique. É importante para acessibilidade. Por padrão aparece um contorno azul no elemento focado);
302 | - `a:visited` (quando o link já foi visitado, de acordo com o histórico do navegador do usuário).
303 |
304 |
305 | HTML | CSS
306 | ------------ | -------------
307 | Tags de **lista**: ul, ol, li | Propriedades de **layout**: box-sizing, display (inline, block, inline-block)
308 | Tag de **layout**: span | Propriedades de **animação**: transition
309 | | Propriedades de **alinhamento**: vertical-align
310 |
311 |
312 | ---
313 |
314 | ### Aula 03 - HTML5 e Navegação
315 |
316 | - [Playground para front-end: Codepen](https://codepen.io/);
317 | - O que é HTML5? HTML semântico e suas tags;
318 | - [Coding Dojo, Saiba mais - Link](https://www.devmedia.com.br/o-que-e-o-coding-dojo/30517).
319 |
320 | #### HTML5 e tags semânticas
321 | HTML5 foi uma grande atualização da linguagem de markup, feita em 2014, que definiu e criou novas maneiras de se mostrar conteúdo multimídia (vídeo, áudio etc) e deixar o documento mais semântico.
322 |
323 | O que significa deixar nosso documento mais semântico? Significa deixá-lo mais legível para algoritmos de sites de busca e para outros desenvolvedores.
324 | Ao invés de criar tags `div` com classes de "nav", "header", "footer", "section", foram criadas novas tags com os mesmos nomes.
325 |
326 | Exemplo de um documento sem tags semânticas:
327 | ```html
328 |
359 |
360 |
361 |
364 | ```
365 | Nota-se que nem todas as classes foram transformadas em tags semânticas, como o menu.
366 |
367 | Tags semânticas mais usadas são: `header`, `nav`, `section`, `article`, `main` e `footer`.
368 |
369 | 
370 |
371 | [Lista completa de tags semânticas](https://www.w3schools.com/html/html5_semantic_elements.asp)
372 |
373 |
374 | HTML |
375 | ------------ |
376 | Tags **semântico**: nav, header, main, section, article, aside, footer |
377 |
378 | ---
379 |
380 | ### Aula 04 - Tabelas
381 |
382 | - Nevegação superior.
383 | - Tabelas: tags e anatomia;
384 |
385 | #### Navegação
386 | Para definir barras de navegação, não precisamos saber de mais nenhuma tag nova. Existe, porém uma maneira específica de criá-las. A mais simples barra superior de navegação se faz com uma tag `` e `