b{zYn57@b$=$9Sw^I3
zcEXp0VfbmG*fdOZX;UUZ268%>b#8#;d7o%Ms7OP(qj~XHizBg#W_5|I2sf^Hi?2vs
zX}Eq>C}%Q=hsKzK;n#b?S0V)wh?rPW%Gim#Sd0Y+ghf_r-1dggsD#dDjmuRjf>@2g
zCMo~ZMct-8@8*CsuyfS-Try^k@^}L+2!A*bkM78T=TwjHXcYXILwgv3JeYy6W_EWZ
tb_uDFb;pn^GfELDkrPRg6={(diIEwpksHa89qExD36dcxl1xwl06S*t=Vkx^
literal 0
HcmV?d00001
diff --git a/assets/javascripts/scripts.js b/assets/javascripts/scripts.js
index c92a1b4..b5979cd 100644
--- a/assets/javascripts/scripts.js
+++ b/assets/javascripts/scripts.js
@@ -1,3 +1,11 @@
$(document).ready(function(){
prettyPrint();
+
+ // Altera links externos para abrirem em uma nova aba
+ var domain = document.location.protocol+'//'+document.location.host,
+ links = $('.content a').each(function(index,element) {
+ if(element.href.substr(0,domain.length) !== domain) {
+ element.target = '_blank';
+ }
+ });
});
diff --git a/assets/stylesheets/style.css b/assets/stylesheets/style.css
index 38a6e5e..0ab99d3 100644
--- a/assets/stylesheets/style.css
+++ b/assets/stylesheets/style.css
@@ -265,6 +265,7 @@ article h1,
article h2,
article h3,
article h4,
+article h5,
article li {
padding-left: 20px;
padding-right: 20px;
diff --git a/index.html b/index.html
index 2d38470..f77c055 100644
--- a/index.html
+++ b/index.html
@@ -5,27 +5,27 @@
Comece aqui
-
Informações básicas e importantíssimas para você não se perder no caminho.
-
Continue lendo
+
Informações básicas e importantíssimas para você não se perder no caminho.
+
Continue lendo
Sobre este guia
- Este guia foi criado pela comunidade brasileira de desenvolvimento web para ajudar iniciantes da área que queiram encontrar conteúdo básico de qualidade e assim ingressar na área com mais confiança e conhecimento. Aproveite e divulgue o máximo possível!
+ Este guia foi criado pela comunidade brasileira de desenvolvimento web para ajudar iniciantes da área que queiram encontrar conteúdo básico de qualidade e assim ingressar na área com mais confiança e conhecimento. Aproveite e divulgue o máximo possível!
diff --git a/manual/css/box-model.html b/manual/css/box-model.html
index 4e77cff..67a9469 100644
--- a/manual/css/box-model.html
+++ b/manual/css/box-model.html
@@ -40,7 +40,7 @@ Entendendo como funciona elementos no HTML
- Altura
- 50 (largura definida) +
10 (padding top) +
10 (padding bottom) +
1 (border top) +
1 (border bottom) => 72 pixels de altura
+ 50 (altura definida) +
10 (padding top) +
10 (padding bottom) +
1 (border top) +
1 (border bottom) => 72 pixels de altura
Um exemplo prático pra vermos a dor de cabeça que você pode ter no seu dia a dia. Imagine que você precise ter um elemento que ocupe 100% da largura disponível. Mas também precisa que esse elemento tenha 10 pixels de padding e uma borda de 1 pixel.
diff --git a/manual/css/display.html b/manual/css/display.html
index 8c15b60..3f4b35e 100644
--- a/manual/css/display.html
+++ b/manual/css/display.html
@@ -7,5 +7,29 @@
Propriedade Display
Entendendo e manipulando o fluxo dos elementos
- Esta página está em construção. Volte em breve ou ajude a completá-la!
-
+
+ Entender a propriedade display
é fundamental para que possamos compreender o fluxo e estruturação de uma página web. Todos os elementos por padrão já possuem um valor para a propriedade e, geralmente estas são block
ou inline
.
+
+ Essa propriedade CSS especifica o tipo de renderização do elemento na página. Uma definição que pode auxiliar no entendimento da propriedade é a do Chris Coyier, bastante reconhecido no mundo do CSS, que é a seguinte:
+
+ Todo elemento em uma página web é renderizado como uma caixa retangular. A propriedade display
de CSS vai determinar como essa caixa vai ser comportar
+
+ Os possíveis tipos
+
+ Block
+ O elemento se comporta como um bloco. Ocupando praticamente toda a largura disponível na página. Elementos de parágrafo (p
) e título(h1
, h2
, ...) possuem esse comportamento por padrão.
+
+ Inline
+ O elemento se comporta como um elemento em linha. Exemplos de elemento que se comportam assim são por exemplo as tags span
e a
.
+
+ None
+ Ao contrários dos valores atuais, o valor none
permite, informalmente dizendo, que você desative a propriedade do elemento. Quando você utiliza essa propriedade, o elemento e todos seus elementos filhos não são renderizados na página.
+
+ Uma coisa importante a ressaltar que a propriedade display: none
não é a mesma coisa da propriedade visibility: hidden
. Nessa última o elemento não aparece na tela mas é renderizado na página, ou seja, vemos um espaço vazio no lugar do elemento; já a propriedade display: none
não renderiza o elemento e, o espaço que era ocupado por ele, é ocupado pelo elemento seguinte no fluxo do documento.
+
+ Table
+ O elemento se comporta como uma tabela.
+
+ Inline-block
+ Semelhante ao inline
, no entanto, ao definirmos inline-block
em um elemento, conseguimos definir as propriedades de largura e altura para ele. Coisa que não conseguimos em um elemento com display: inline
.
+
\ No newline at end of file
diff --git a/manual/css/float-clear.html b/manual/css/float-clear.html
index 48a4c65..308fbf2 100644
--- a/manual/css/float-clear.html
+++ b/manual/css/float-clear.html
@@ -15,7 +15,7 @@ Estruturando e flutuando elementos
<div>
<figure>
<img src="img/imagem.jpg" alt="Imagem Xis">
- <Legenda da imagem"</figcaption>
+ <figcaption>Legenda da imagem"</figcaption>
</figure>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eum, fugit, ipsam reprehenderit porro aperiam esse quibusdam ratione excepturi amet est.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eum, fugit, ipsam reprehenderit porro aperiam esse quibusdam ratione excepturi amet est.</p>
@@ -40,7 +40,7 @@ Estruturando e flutuando elementos
margin: 0 0 10px 10px;
}
-Aqui mudamos a direção que a tag figude
vai flutuar e alteramos a margem do lado direito para o lado esquerdo. E teríamos um resultado assim:
+Aqui mudamos a direção que a tag figure
vai flutuar e alteramos a margem do lado direito para o lado esquerdo. E teríamos um resultado assim:
A propriedade clear
Continuando com o nosso exemplo anterior, imagine que agora precisássemos inserir um novo título com mais parágrafos abaixo da imagem. Algo parecido com isso: (para fins de exemplo, diminui o conteúdo textual ao redor da imagem)
@@ -50,7 +50,7 @@ A propriedade clear
<div>
<figure>
<img src="img/imagem.jpg" alt="Imagem Xis">
- <Legenda da imagem"</figcaption>
+ <figcaption>Legenda da imagem"</figcaption>
</figure>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eum, fugit, ipsam reprehenderit porro aperiam esse quibusdam ratione excepturi amet est.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eum, fugit, ipsam reprehenderit porro aperiam esse quibusdam ratione excepturi amet est.</p>
@@ -62,7 +62,7 @@ A propriedade clear
No entanto, chegaríamos num resultado assim:
Por que isso? Como definimos que a tag figure
flutuaria à esquerda, saindo assim do fluxo vertical da página, todo conteúdo que vem após ela começa a preencher o espaço ao redor da imagem. O que acontece é que os parágrafos que vem logo após a tag figure
são menores que a altura da imagem, fazendo com que o título (tag h3
) ao invés de ser renderizada abaixo da imagem, apareça ao lado dela e seguindo o fluxo do documento.
-É aí que entra a propriedade clear. Ela tem a função de controlar o comportamento de elementos que apareçam no fluxo do documento após determinado elemento que possue a propriedade float. Em outras palavras, ela especifica se um elemento deve ser posicionado ao de elementos com float ou se devem ser colocados abaixo deles. A propriedade aceita 4 valores:
+É aí que entra a propriedade clear. Ela tem a função de controlar o comportamento de elementos que apareçam no fluxo do documento após determinado elemento que possue a propriedade float. Em outras palavras, ela especifica se um elemento deve ser posicionado ao lado de elementos com float ou se devem ser colocados abaixo deles. A propriedade aceita 4 valores:
- left: Elemento é empurrado para baixo de elementos com float left;
- right: Elemento é empurrado para baixo de elementos com float right;
diff --git a/manual/css/font.html b/manual/css/font.html
index 67e1b23..cadd5ae 100644
--- a/manual/css/font.html
+++ b/manual/css/font.html
@@ -7,5 +7,25 @@
Propriedade Font
Formatando fonts de texto
+ A font trata das caracteristicas de todos os textos do site. Ela pode ser aplicada diretamente ao elemento body e por consequência todos os elementos filhos herdarão esta propriedade.
+ As propriedades da font são:
+
+ - family
+ -
+
Determina a familia da font a ser usada. Existem dois tipos básicos: as famílias e as famílias genéricas
+ As famílias genéricas podem ser três:
+
+ - serif: Font com serifa.
+ - sans-serif: Font sem serifa.
+ - monoespace: Font com a mesma largura em todos os caracteres.
+
+ Serifa nada mais é do que aquelas pontinhas que tem em algumas fontes tipo Times, ou seja, Times é uma font com serifa e Arial é uma font sem serifa.
+
+ div {
+ font-family: "Times New Roman", Times, serif;;
+ }
+
+ Entre aspas vai o nome da font, seguido da familia (Times) e depois da família genérica (serif).
+
Esta página está em construção. Volte em breve ou ajude a completá-la!
diff --git a/manual/css/seletores-complexos.html b/manual/css/seletores-complexos.html
index 54481ba..d915727 100644
--- a/manual/css/seletores-complexos.html
+++ b/manual/css/seletores-complexos.html
@@ -7,5 +7,62 @@
Seletores complexos
Formatando elementos fora do fluxo normal do DOM
- Esta página está em construção. Volte em breve ou ajude a completá-la!
-
+
+ Selecionando diferentes elementos de um formulário
+
+ Tipos de Inputs
+
+input[type="text"] { ... }
+input[type="email"] { ... }
+
+ No exemplo acima, selecionamos respectivamente elementos input
do tipo text e email.
+
+ Input checkbox
+input[type="checkbox"]:checked { ... }
+ A própria declaração é bem intuitiva. Seleciona elementos do tipo checkobx que estiverem selecionado (ou ticados).
+
+ Input inativo
+input:disabled { ... }
+ Acima, selecionamos um input que esteja com o atributo disabled
, estando assim inativo.
+
+ Selecionamento elementos pela extensão do arquivo
+
+:lang(en) .flag { ... }
+
+ No exemplo, selecionamos o elemento com a classe .flag
que é filho de uma página que possui o valor en
.
+
+
+a[href$=".jpg"] { ... }
+a[href$=".pdf"] { ... }
+
+ Imagine uma lista de arquivos e que você precisa adicionar um ícone ou aplicar um estilo diferente de acordo com o tipo de arquivo em cada link. Com os seletores acima você consegue sem a necessidade de adicionar uma classe para cada um.
+
+ Selecionando elementos pelo target
+#element-id:target { ... }
+ Elementos com âncora linkam o usuário a outras partes da página. Então o elemento acima seria selecionado quando seu id aparecesse na URL do usuário. Geralmente depois de um clique.
+
+ Selecionando elementos pelo atributo
+ Existem seis maneiras diferentes de selecionarmos elementos por seus atributos:
+[att=valor]
+ O atributo tem exatamente o mesmo valor especificado.
+
+[att~=valor]
+ O valor do atributo precisar ser uma lista de valores com espaço. Por exemplo class="box box-color box-sidebar"
, e um dos valores precisa ser exatamente igual ao valor que foi especificado.
+
+[att|=valor]
+ O atributo possui exatamente o mesmo valor que foi especificado ou é imediatamente seguindo de um traço. Dessa maneira, uma classe válida seria valor-X
.
+
+[att^=valor]
+ O valor do atributo começa com o valor que foi especificado na regra.
+
+[att$=valor]
+ O valor do atributo termina com o valor que foi especificado na regra.
+
+[att*=valor]
+ O valor do atributo contém o valor do atributo especificado na regra.
+
+ Selecionando elementos pela negação
+div:not(.estilo) { ... }
+ Acima, selecionamos todas as divs
do documento, exceto as que possuem a classe .estilo
.
+
+
\ No newline at end of file
diff --git a/manual/html/estruturabasica.html b/manual/html/estruturabasica.html
index 78de46e..0ddf10e 100644
--- a/manual/html/estruturabasica.html
+++ b/manual/html/estruturabasica.html
@@ -30,10 +30,10 @@ Iniciando o código básico de HTML
Doctype - Definindo o documento
Uma coisa importante: SEMPRE deve existir o doctype, que é este código <!DOCTYPE html>
.
- O doctype indica para o navegador e outros programas que podem ler seu site, que o código encontrado ali é um código HTML. Assim eles sabem o que fazer para mostrar seu site da melhor forma possível. Lembre-se: o doctype é OBRIGATÓRIO e deve ser sempre a PRIMEIRA LINHA do seu documento.
+ O doctype não é uma tag HTML, mas uma instrução para o navegador e outros programas que podem ler seu site, que o código encontrado ali é um código HTML. Assim eles sabem o que fazer para mostrar seu site da melhor forma possível. Lembre-se: o doctype é OBRIGATÓRIO e deve ser sempre a PRIMEIRA LINHA do seu documento.
HEAD
- Contém informações que não são transpostas visivelmente para o usuário/leitor do documento. São dados implícitos, de uso e controle do documento: vinculação com outros arquivos, aplicação de lógica de programação de scripts e metadados. Na prática, todo o conteúdo do cabeçalho fica delimitado entre a abertura e fechamento dag head
.
+ Contém informações que não são transpostas visivelmente para o usuário/leitor do documento. São dados implícitos, de uso e controle do documento: vinculação com outros arquivos, aplicação de lógica de programação de scripts e metadados. Na prática, todo o conteúdo do cabeçalho fica delimitado entre a abertura e fechamento tag head
.
BODY
Trata-se do documento em si, ou seja, a informação legível para o usuário/leitor do documento. É todo e qualquer texto que se deseja apresentar, assim como toda e qualquer forma de mídia de saída (imagens, sons, miniaplicativos embutidos, conteúdo multimídia, etc). Além disso, toda a apresentação de entrada de dados (formulários) também se aplica neste seção do documento. Na prática, o corpo do documento é delimitado pelo par de tags <body>
e </body>
.
diff --git a/manual/html/index.html b/manual/html/index.html
index 99138bb..f8ea35c 100644
--- a/manual/html/index.html
+++ b/manual/html/index.html
@@ -19,7 +19,7 @@ Camadas de desenvolvimento
O nome HTML
- O acrônico HTML significa em inglês: HyperText Marckup Language. Para gente aqui fica: Linguagem de Marcação de Hipertexto. Bonito, né?
+ O acrônico HTML significa em inglês: HyperText Markup Language. Para gente aqui fica: Linguagem de Marcação de Hipertexto. Bonito, né?
Por trás das palavras Hipertexto e Marcação tem muita história e guardam a real essência da função do HTML. Você vai saber mais na próxima página, onde falamos sobre Semântica, que nada mais é do que a organização da informação usando HTML.
Se você tiver que guardar alguma coisa sobre o que é HTML, guarde isso: HTML serve para dar significado e organizar a informação dos websites.
diff --git a/manual/html/oquemetatags.html b/manual/html/oquemetatags.html
old mode 100644
new mode 100755
index c2a8690..3840ec6
--- a/manual/html/oquemetatags.html
+++ b/manual/html/oquemetatags.html
@@ -7,5 +7,19 @@
O que são metatags?
Informação sobre seu site
+ A Meta Tag, representada pela tag <meta> é uma tag diferenciada das demais por não ter nenhum efeito aparente na página em si, mas sim por ser responsável por ações externas à página, como por exemplo informar à buscadores como Google ou Bing algumas informações a respeito da página, como título e uma breve descrição.
+ Tipos de Meta Tags
+
+ - Author
+ O nome do autor da página.
+ - Copyright
+ Direito autoral da página.
+ - Description
+ Descrição da página.
+ - Expires
+ Data em que o documento deve ser considerado expirado.
+ - Keywords
+ Aqui é um dos locais onde os motores de busca procuram informações a respeito da página.
+
Esta página está em construção. Volte em breve ou ajude a completá-la!
diff --git a/manual/html/oquetags.html b/manual/html/oquetags.html
index c17282f..7cc0687 100644
--- a/manual/html/oquetags.html
+++ b/manual/html/oquetags.html
@@ -5,27 +5,53 @@
{% include submenu-html.html %}
- O que são Tags, atributos e elementos?
- Conhecendo as tags principais e quais seus atributos
-
- O que são tags?
- Cada elemento é representado por uma tag. Cada tag tem seus atributos, e cada atributo tem sua especificação para valores.
- Existem dois tipos de tags, as tags que necessitam de fechamento e as tags que não necessitam de fechamento.
- Para as tags que necessitam de fechamento, utilizamos o sinal de menor ( < ), seguido do nome do elemento e o sinal de maior ( > ) para abertura. Para fechamento, utilizamos o sinal de menor ( < ), seguido de barra ( / ), nome do elemento e o sinal de maior ( > ).
-
-<!-- Exemplo de elemento que necessita de fechamento -->
-<p>A tag do elemento de parágrafo necessita de fechamento.</p>
-
+ O que são Tags, Elementos e Atributos?
+ Conhecendo as principais Tags, Elementos e seus Atributos
+
+ O que são Tags?
+ Tags são o conjunto de caracteres que formam um elemento, ou seja, quando nos referenciamos à Tag "p" estamos falando disso: <p>
+ Existem dois tipos de Tags, as que necessitam de fechamento e as que não necessitam de fechamento.
+ Para as que necessitam de fechamento, utilizamos o sinal de menor ( < ), seguido do nome do elemento e o sinal de maior ( > ) para abertura. Para fechamento, utilizamos o sinal de menor ( < ), seguido de barra ( / ), nome do elemento e o sinal de maior ( > ).
+
+
+ <!-- Exemplo de elemento que necessita de fechamento -->
+ <p>A tag do elemento de parágrafo necessita de fechamento.</p>
+
+
Os elementos que não necessitam de fechamento, também conhecidos como elementos vazios, somente utilizamos o sinal de menor ( < ), seguido do nome do elemento e o sinal de maior ( > ).
-
-<!-- Exemplo de elemento vazio -->
-Texto utilizando<br>
-quebra de linha
-
+
+ <!-- Exemplo de elemento vazio -->
+ Texto utilizando<br>
+ quebra de linha
+
+
+ O que são Elementos?
+ Elementos são formados a partir de Tags e entre as Tags é que está o conteúdo do Elemento.
+ Se quisermos exibir um parágrafo em um site utilizamos a Tag <p> que semanticamente quer dizer que o conteúdo que se espera nesse Elemento é um parágrafo.
+
+ Alguns exemplos:
+
+
+ <!-- A Tag <label> define que o conteúdo do Elemento é uma label (rótulo) -->
+ <label>Informe o seu nome</label>
+
+
+
+ <!-- A Tag <address> define que o conteúdo do Elemento é um endereço (endereços físicos à virtuais) -->
+ <address>
+ Este guia é uma iniciativa da comunidade e do Tableless <a href="http://tableless.com.br/contato">www.tableless.com.br</a>
+ </address>
+
+
+ Não confunda Tags com Elementos
+ As Tags servem para marcar onde começam e terminam os Elementos. Já os Elementos são uma parte conceitual/semântica que têm um começo e fim determinados.
+ Parece uma diferença boba, mas mantenha ela sempre em mente e isso vai fazer toda a diferença no seu entendimento de HTML.
+
+ O que são Atributos?
+ Atributos são informações que passamos na Tag para que ela se comporte da maneira esperada. Existem atributos globais (que funcionam em todas as Tags) e específicos (que são direcionados para cada Tag, através de especificação).
+ Os Atributos possuem nome e um valor, existem Atributos que você vai usar praticamente sempre e existem outros que serão mais raros.
- E atributos?
- Atributos são informações que passamos na tag para que ela se comporte da maneira esperada. Existem atributos globais (que funcionam em todas as tags) e específicos (que são direcionados para cada tag, através de especificação).
Atributos globais
Seguem alguns atributos globais importantes e suas descrições simplificadas:
@@ -56,5 +82,27 @@ Atributos globais
- title
Representa um auxílio ao elemento. Semelhante a dica do elemento.
- Esta página está em construção. Volte em breve ou ajude a completá-la!
+ Como você pôde ver, a sintaxe de Atributos é muito simples, porém, por mais simples que seja é sempre bom ter em mente boas práticas para que se tenha qualidade e fácil manutenção em seu HTML.
+ Existem Atributos em que os valores não precisam ser passados entre aspas, mas manter um padrão ajuda você e ajuda quem quer que seja que no futuro tenha que trabalhar com o seu HTML. Portanto, não é uma regra mas uma boa prática você envolver os valores dos Atributos entre aspas.
+
+
+ <!-- Isso funciona, mas não é recomendável -->
+ <a href="http://tableless.com.br" target=_blank>www.tableless.com.br</a>
+
+ <!-- Isso funciona e é recomendável -->
+ <a href="http://tableless.com.br" target="_blank">www.tableless.com.br</a>
+
+
+ Na prática
+ Agora que você entendeu separadamente o papel das Tags, Elementos e Atributos, vamos ver um exemplo prático:
+
+
+ <!-- A Tag <img> define que o conteúdo do Elemento é uma imagem e os atributos que utilizamos são src e alt -->
+ <img src="logo.png" alt="HTML 5 Logo" />
+
+
+ Analisando o exemplo:
+ No exemplo acima definimos o caminho onde está a imagem com o Atributo src e utilizamos o Atributo alt para descrever que imagem é essa (a utilização do atributo alt é altamente recomendado, pois, mesmo que a imagem não seja carregada por qualquer motivo, o usuário conseguirá identificar que ali era para ser carregado o logo do HTML5).
+
+ Fácil, não? Para saber quais Tags existem e como podem ser utilizadas, acesse a documentação do Mozilla clicando aqui
diff --git a/manual/js/arrays.html b/manual/js/arrays.html
index 5184fa9..bb9203e 100644
--- a/manual/js/arrays.html
+++ b/manual/js/arrays.html
@@ -31,4 +31,50 @@
Valores agrupados
console.log(gaveteiro[2]);
Assim dizemos que gaveteiro na posição 2 recebeu o valor 99.
+
+ Adicionando elementos no array
+ Caso precise adicionar uma nova gaveta, podemos usar o método push:
+
+var gaveteiro = [10,20,30];
+gaveteiro.push(100);
+console.log(gaveteiro[3]); //100
+
+ O método push recebe 100 como parametro e adiciona na ultima posição do array.
+
+ Removendo elementos no array
+ Caso precise remover/recortar uma gaveta, podemos usar os seguintes métodos:
+ - Para remover a ultima gaveta, utilizamos o pop:
+
+var gaveteiro = [10,20,30];
+console.log(gaveteiro[2]); //30
+gaveteiro.pop();
+console.log(gaveteiro[2]); //undefined
+
+ - Para remover a primeira gaveta, utilizamos o shift:
+
+var gaveteiro = [10,20,30];
+console.log(gaveteiro[0]); //10
+gaveteiro.shift();
+console.log(gaveteiro[0]); //20
+
+ - Para retornar apenas algumas gavetas (recortar), utilizamos o slice:
+
+var gaveteiro = [10,20,30];
+var novaGaveta = gaveteiro.slice(1,3);
+console.log(novoGaveteiro); //[20, 30]
+
+
+ Quantidade de elementos do array
+ Depois de ter adicionado várias gavetas, pode surgir a necessidade de saber quantas já existem, para isso vamos acessar a propridade length:
+
+var gaveteiro = [1,2,3,10,20,30];
+console.log(gaveteiro.length); //6
+gaveteiro.push(100);
+gaveteiro.push(200);
+gaveteiro.push(300);
+gaveteiro.push(400);
+console.log(gaveteiro.length); //10
+gaveteiro.push(200);
+console.log(gaveteiro.length); //9
+
diff --git a/manual/js/controles-de-fluxo-e-controles-de-repeticao.html b/manual/js/controles-de-fluxo-e-controles-de-repeticao.html
new file mode 100644
index 0000000..d36264e
--- /dev/null
+++ b/manual/js/controles-de-fluxo-e-controles-de-repeticao.html
@@ -0,0 +1,149 @@
+---
+layout: interna
+title: Controles de Fluxo e Controles de Repetição
+---
+{% include submenu-js.html %}
+
+
+ Declarações (Statements)
+ Entendendo Controles de Fluxo e Controles de Repetição
+
+ Controles de Fluxo
+ São comandos da linguagem que permitem desviar o fluxo do programa, dependendo de um teste.
+
+ IF
+ A sintaxe do if é a seguinte:
+
+if (<teste>) {
+ <código a ser executado caso o teste seja verdadeiro>
+}
+
+
+ Podemos, por exemplo, executar um trecho do código unicamente se uma variavel nossa for maior do que dez.
+
+var x = 11;
+if (x > 10) {
+ console.log('x é maior do que dez, corram para as colinas!');
+}
+
+
+ Note, que o console.log não apareceria caso o valor de x fosse 10, 9, 8...
+
+var x = 9;
+if (x > 10) {
+ console.log('x é maior do que dez, corram para as colinas!');
+}
+console.log('Serei executado independente do if ser true ou false');
+
+
+ ELSE
+ o else não existe sem o if, pois ele não testa nada. Só é executado caso o teste do if retorne falso.
+
+var x = 9;
+if (x > 10) {
+ console.log('x é maior do que dez, corram para as colinas!');
+} else {
+ console.log('Está tudo bem, podemos ficar tranquilos.');
+}
+
+
+ SWITCH
+ O switch é uma estrutura para testes simples, muito usado quando temos que testar uma mesma condição diversas vezes, pois é mais legível do que uma cadeia de else if.
+
+var tinta = 'azul';
+switch (tinta) {
+ case 'azul':
+ console.log('Irei pintar o carro de azul');
+ break;
+ case 'amarela':
+ console.log('Vou pintar a casa de amarelo');
+ break;
+ case 'verde':
+ console.log('Vou pintar o chão da garagem de verde');
+ break;
+ default:
+ console.log('Não vou pintar nada');
+ break;
+}
+
+
+ Note que para cada uma das cores, eu farei uma coisa completamente diferente da outra. Caso a tinta seja verde, eu vou pintar o chão da garagem, mas se a tinha for amarela, irei pintar a casa.
+
+ Se fossemos reescrever esses testes com elseif, ficaria assim:
+
+var tinta = 'azul';
+
+if (tinta === 'azul') {
+ console.log('Irei pintar o carro de azul');
+} else if(tinta === 'amarela') {
+ console.log('Vou pintar a casa de amarelo');
+} else if (tinta === 'verde') {
+ console.log('Vou pintar o chão da garagem de verde');
+} else {
+ console.log('Não vou pintar nada');
+}
+
+ Fica melhor com o switch, ne?!
+
+ Laços de repetição (loops)
+ Se existe uma coisa que os computadores são muito bons é em executar algo várias vezes. Desde que saibamos o que queremos que o computador faça. Felizmente, para não precisamos repetir inúmeras vezes a invocação de uma função ou certo código, existe os loops (laços de repetição).
+
+ FOR
+ Formado por três partes: inicialização, condição e incremento. A sintaxe é:
+
+for (var i = 0; i <= 10; i++) {
+ //código a ser executado até a condição se tornar falsa
+}
+
+
+ FOR IN
+ É utilizado quando não sabemos quantas vezes temos que interar sobre um array ou objeto.
+
+var arr = [1,2,3];
+for(var n in arr) {
+ console.log(n);
+}
+
+
+ FOREACH
+ Utilizamos o foreach
quando queremos percorrer as propriedades de um objeto ou os itens de um array, sem precisamos nos preocupar em contar quantos são.
+
+var arr = [1,2,3];
+arr.forEach(function(each){
+ console.log(each);
+});
+
+
+ WHILE
+ Funciona basicamente igual ao for, e é possível sempre trocar o for() por um while(). Escolhemos um ou outro pela clareza do que estamos fazendo. Geralmente preferimos utilizar o loop for() para interar com contadores e loops while() até que alguma condição mude (de true para false, por exemplo).
+
+var x = true;
+while(x) {
+ console.log('Jane Doe');
+ x = false;
+}
+
+
+ Nesse caso acima, o console.log será executado uma única vez, pois eu altero para false a variavel x, logo na primeira interação do laço. Mas eu poderia ter feito algo assim:
+
+var i = 1,
+ x = 2;
+
+while(x < 20) {
+ x = x + (x * i);
+
+ console.log('O valor atual de x é: ' + x);
+ i++;
+}
+
+
+ DO WHILE
+ Segue o mesmo princípio do while, mas o corpo é sempre executado pelo menos uma vez, independente da condição, pois primeiro ele faz do e depois testa a condição.
+
+do {
+ console.log('Jane Doe');
+} while(false);
+
+ Apesar da condição já começar como falsa, veremos a string "Jane Doe" uma vez no console do browser.
+
+
diff --git a/manual/js/funcoes.html b/manual/js/funcoes.html
index a92b521..30b03f2 100644
--- a/manual/js/funcoes.html
+++ b/manual/js/funcoes.html
@@ -7,5 +7,85 @@
Funções
Criando e usando funções personalizadas
- Esta página está em construção. Volte em breve ou ajude a completá-la!
+
+ Inicialmente, pense em funções como caixinhas mágicas: você joga coisas dentro, algo acontece e você recebe de volta uma transformação do que foi colocado. Por exemplo: imagine uma caixinha em que você coloca dois números: 3 e 5 e a caixa te devolve 8.
+
+ Os números 3 e 5 que colocamos dentro da caixa iremos chamar de argumentos e o 8 que recebemos, iremos chamar de retorno.
+
+ Nem sempre uma função terá argumentos e nem sempre terá um retorno, mas certamente ela irá realizar alguma coisa de nosso interesse, seja mudar a cor de algum elemento, abrir uma janela popup, ou qualquer uma das outras coisas que a linguagem JavaScript pode fazer.
+
+ As linguagens de programação já possuem algumas funções pré-definidas para nos ajudar. Da linguagem JavaScript podemos citar: open()
(usada para abrir janelas popup), parseInt()
(usada para converter um número ou string em inteiro), encodeURI()
(codifica uma cadeia de caracteres em um URI válido)...
+
+ Resolvendo problemas
+
+ Sempre que estivermos programando em qualquer linguagem, temos que ter em mente uma coisa muito importante: "o melhor jeito de resolver um problema grande é dividi-lo em problemas menores", cada um desses "problemas menores" serão resolvidos por funções pequenas, assim juntando as várias pequenas funções, teremos resolvido "o todo".
+
+ Apesar de ser possível escrever todo o código que resolve o problema grande numa única função gigante, não fazemos isso. Pois isso tornaria muito complexo nosso código, dificultaria uma futura manutenção e impossibilitaria o reaproveitamento de pequenas rotinas. Por isso preferimos dividir e depois criar uma função grande que utilize nossas outras funções pequenas, do que escrever tudo num só lugar.
+
+ Declarando
+
+ A declaração de uma função é quando construimos a caixa mágica.
+
+
+function foo() {
+ //corpo
+}
+
+
+ foo
é o nome da função e o código entre as chaves {}, é o corpo da nossa função. A palavra function
é a forma da linguagem JavaScript indicar que estamos declarando uma função (criando a caixa mágica).
+
+ Invocando
+
+ Após construirmos a caixa, ela por si só não faz absolutamente nada até a chamarmos. A invocação consiste em colocar o nome da função seguido pelos parênteses. Isso faz com que o código dentro do corpo da nossa função seja executado.
+
+foo();
+
+
+ Experimente salvar um arquivo .html e abrir com o seu navegador, contendo o seguinte código:
+
+<script>
+function bar() {
+ alert('Hello World');
+}
+</script>
+
+ Após abrir o arquivo com qualquer navegador, você irá notar que não irá acontecer absolutamente nada. Sim, nada. Pois ainda não invocamos a função. Apenas a declaramos. Para invocar, o arquivo ficaria com o seguinte conteúdo:
+
+
+<script>
+// declarando
+function bar() {
+ alert('Hello World');
+}
+
+// invocando
+bar();
+</script>
+
+
+ Exemplo de função com argumentos e retorno
+
+ Lembram que eu iniciei o texto falando de uma caixa mágica que recebia 2 números e devolvia a soma deles ? Essa função ficaria assim:
+
+function somar(x, y) {
+ return x + y;
+}
+
+ E para invocar essa função somar()
podemos passar quaisquer dois números:
+
+somar(3, 5);
+somar(1, 2);
+somar(10, 32);
+
+ Só que não vermos nada, pois não direcionamos o return
para lugar nenhum.
+
+
+<p id="resultado"></p>
+<p id="resultado2"></p>
+<script>
+alert(somar(3, 5));
+document.getElementById('resultado').innerHTML = somar(1, 2);
+document.getElementById('resultado2').innerHTML = somar(10, 32);
+</script>
+
diff --git a/manual/js/index.html b/manual/js/index.html
index 4a162c6..0e857ea 100644
--- a/manual/js/index.html
+++ b/manual/js/index.html
@@ -23,7 +23,7 @@ Camada de comportamento
O JavaScript é a terceira camada de desenvolvimento por que ele manipula as duas primeiras camadas, isto é: HTML e CSS. Imagine que você precise de um Slider de imagens. Toda a movimentação, ações de cliques nas setinhas e etc, é o JavaScript que vai cuidar. É isso que chamamos de comportamento.
Orientado a Objeto
- Talvez seja cedo demais para falar sobre orietação a objetos em linguagens de programação, mas você precisa saber, pelo menos, que o JavaScript é uma linguagem com Orientação a Objetos. Não vamos entrar em detalhes agora, não queremos que você confunda as bolas. Mas saiba que um objeto na programação é um conjunto de informações. Objeto é um grupo de dados. Mas por hora, fique apenas com essas informações. Vamos nos aprofundar em momento oportuno.
+ Talvez seja cedo demais para falar sobre orientação a objetos em linguagens de programação, mas você precisa saber, pelo menos, que o JavaScript é uma linguagem com Orientação a Objetos. Não vamos entrar em detalhes agora, não queremos que você confunda as bolas. Mas saiba que um objeto na programação é um conjunto de informações. Objeto é um grupo de dados. Mas por hora, fique apenas com essas informações. Vamos nos aprofundar em momento oportuno.
Hello World!
Vamos fazer seu primeiro Hello World com JavaScript?
diff --git a/manual/js/o-que-framework.html b/manual/js/o-que-framework.html
index 2cfe2fa..d0da70a 100644
--- a/manual/js/o-que-framework.html
+++ b/manual/js/o-que-framework.html
@@ -14,7 +14,14 @@ Entendendo o conceito
Assim um Framework tem como principal objetivo resolver problemas recorrentes com uma abordagem genérica, permitindo ao desenvolvedor focar seus esforços na resolução do problema em si, e não ficar reescrevendo software. Você pode se perguntar, então Framework é uma biblioteca? Bem quase isso, pode-se dizer que é um conjunto de bibliotecas ou componentes que são usados para criar uma base onde sua aplicação será construída.