<!DOCTYPE html>
O Doctype não é uma tag do HTML, mas uma instrução para que o browser tenha informações sobre qual versão de código a marcação foi escrita.
HTML (HyperText Markup Language)
Utilizada para descrever semanticamente a estrutura de um website
Não é uma linguagem de programação mas sim uma linguagem de marcação
As tags básicas do HTML são:
<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title>Exemplo de código HTML</title> </head> <body> <h1>Título principal</h1> <p>Algum texto aqui...</p> <!-- e esse é um comentário! --> </body> </html>
<div>, <p> <!-- tags semânticas --> <header> <!-- cabeçalho, logo, navegação --> <nav> <!-- itens de navegação (links) --> <aside> <!-- sidebar, conteúdo relativo ao pai --> <article> <!-- artigo, um post, etc --> <section> <!-- uma seção, agrupamento do mesmo tema --> <footer> <!-- rodapé, informações de contato -->
Todos eles por são elementos do tipo block
Elementos do tipo block ocupam todo o espaço do seu elemento pai, criando um bloco onde sempre se iniciam em uma nova linha. (esta "caixa" é um exemplo de um elemento block)
<h1>, <h2>, <h3>, <h4>, <h5> e <h6>.
<div class="header"> <div class="navbar"> SECCOMP 2015 </div> </div> <div> <div> <h2>Comentários</h2> </div> <div class="staff_comment"> <p>A seccomp 2015 esta demais!</p> </div> <div class="user_comments"> <div class="user_comment"> <p>Muito bom!</p> <div> <p> Postado em <span>22/10</span> por David. </p> </div> </div> </div> </div>
<header> <nav> SECCOMP 2015 </nav> </header> <article> <header> <h2>Comentários</h2> </header> <section class="staff_comment"> <p>A seccomp 2015 esta demais!</p> </section> <section class="user_comments"> <article class="user_comment"> <p>Muito bom!</p> <footer> <p> Postado em <time datetime="2015-10-22 14:00">22/10</time> por David. </p> </footer> </article> </section> </article>
<ul> <!-- lista não ordenada --> <ol> <!-- lista ordenada (ou reversed), start --> <dl> <!-- lista com definições --> <dt> <!-- item a ser definido --> <dd> <!-- definição --> <menu> <!-- idem a ul, experimental --> <li> <!-- item de uma lista -->
<dl> <dt>Pokemon</dt> <dd>Temos que pegar!</dd> </dl> <ul> <li>Pikachu</li> <li>Charmander</li> </ul> <ol> <li>Pikachu</li> <li value="10">Squirtle</li> </ol>
<form> <!-- container de um formulário, action, method, enctype... --> <button> <!-- botão, pode ser submit, reset, etc --> <fieldset> <!-- agrupamento de campos e labels --> <input> <!-- entrada de dado, texto, senha, hidden, arquivo, checkbox, etc --> <!-- HTML5 range, email, date, color, etc --> <textarea> <!-- campo de texto de várias linhas --> <label> <!-- título/subtítulo, nome do campo --> <select> <!-- entrada de dados com lista de seleção --> <option> <!-- item de uma lista --> <optgroup> <!-- utilizado para agrupar itens de uma lista -->
<form class="row" name="pkm_form" action="" method="get"> <label for="pkms">Pokemon</label> <select name="pkms" id="pkms"> <optgroup label="Starter"> <option>Pikachu</option> <option>Bulbasauro</option> <option>Squirtle</option> <option selected>Charmander</option> </optgroup> <optgroup label="Tipo Pedra"> <option>Onix</option> <option>Geodude</option> </optgroup> <optgroup label="Tipo Fogo (desabilitados)" disabled> <option>Vulpix</option> <option>Rapidash</option> <option>Magmar</option> </optgroup> </select> <fieldset> <legend>Tem certeza?</legend> <input name="sure" id="yes" type="radio"><label for="yes">SIM</label> <input name="sure" id="no" type="radio"><label for="no">NÃO</label> </fieldset> </form>
<img> <!-- insere uma imagem --> <audio> <!-- insere um ou mais arquivos de audio, captions, etc --> <video> <!-- insere um vídeo, poster, subtitles --> <object> <!-- insere um swf, um arquivo via url, etc -->
<img src="resources/starters.png" alt="PKM Starters"> <audio controls="controls" volume="0.5" loop="true"> Mensagem avisando usuário que elemento audio não é suportado <source src="pkm_sound.ogg" type="audio/ogg"> <track kind="captions" src="lyrics.en.vtt" srclang="en" label="EN"> <track kind="captions" src="lyrics.pt.vtt" srclang="en" label="PT-BR"> </audio> <video width="400" controls poster="resources/poster.gif" > <!-- sources mp4, ogg, webm ...--> </video>
<b> e <strong> <!-- negrito e importância --> <i> e <em> <!-- italico e ênfase --> <small> e <big> <!-- 80% e 120% (obsoleto)--> <span> <!-- conteúdo inline (idem ao div) --> <br> <!-- quebra de linha -->
#pokemon { font-size: 90px; font-weight: bold; color: #ffcc00; border: solid 5px white; background-color: rgb(109, 156, 190); padding: 30px 20px; }
Identificadores são utilizados quando o estilo é único e so deve ser utilizado em apenas um elemento.
Exemplo do identificador #pokemon sendo aplicado em uma div
.pokemons { font-size: 36px; padding: 10px; border: solid 1px white; color: #fff; } .water-type { background-color: rgb(109, 156, 190); } .grass-type { background-color: rgba(109, 156, 54, 1); } .fire-type { background-color: hsl(25, 89%, 50%); }
Classes não são únicas e por esse motívo podem (e devem) ser reutilizadas
<div class="pokemons water-type"> Squirtle </div> <div class="pokemons fire-type"> Charmander </div> <div class="pokemons grass-type"> Bulbasaur </div> <div class="pokemons"> Pikachu </div>
Classes podem ser encadeadas, para então formarem novas classes dinâmicas
.pokemons { color: white; font-size: 30px; } .shiny { color: gold; }
A ordem que importa é a ordem no momento da definição e não quando o mesmo é utilizado, portanto:
.pokemons { color: gray; } .fire-type { color: red; }
toda vez em que encadearmos as classes .pokemons e .fire-type, o texto será exibido com a cor vermelha.
Além da ordem, o CSS tem um sistema de pesos, camado de especificidade.
Atributo style > identificador > classes > elementos
Portanto, além da posição do seu CSS declarado, a especificidade em que o CSS foi declarado também importa.
ul li { color: #ccc; } li { margin: 10px; color: #fff; } li.favorite { color: green; } .favorite { color: gold; }
Quando adicionamos !important em qualquer declaração, ela automaticamente recebe o peso máximo.
padding é a propriedade que define o gap entre o elemento e sua borda. não aceita valores negativos
margin é a propriedade que define a margem do elemento em relação ao todo. aceita valores negativos
.custom-class { padding: 10px 15px 5px; margin: -20px 30px; }
em e rem são utilizadas para fontes
display: inline; /* inline, segue o fluxo dos elementos */ display: inline-block; /* características de block, mas se mantem "inline" */ display: block; /* ocupa todo o espaço livre, como um bloco */ display: none; /* oculta o elemento */ display: table; /* replica a estrutura de <table> */ display: table-cell; display: table-column; display: flex; /* magic happens! */
Lorem ipsum dolor sit amet, consectetur adipiscing elit. conteudo inline . Donec at dolor vitae neque dignissim accumsan et non est. Proin egestas posuere nunc non fermentum. Suspendisse dapibus non. Nullam bibendum porttitor diam vitae vestibulum. conteúdo inline-block. Donec id pharetra ligula, ac interdum massa. Maecenas vestibulum id justo vitae euismod. In hac habitasse platea dictumst.
.parent { display: flex; height: 300px; } .child { width: 100px; height: 100px; margin: auto; }
mais informações em https://css-tricks.com/snippets/css/a-guide-to-flexbox/
float é uma propriedade do CSS usada para posicionar os elementos de um website
left | right | none | inherit
Normalmente, quando queremos "quebrar" a linha entre elementos com float, utilizamos uma outra propriedade, chamada clear
both | left | right | none
Quando a propriedade float é informada, o elemento por padrão assume o display block.
static /* posicionamento padrão */ relative /* posicionamento relativo ao container pai */ absolute /* posicionamento absoluto ao container pai (caso o mesmo seja relative) ou então é relativo ao ponto zero da viewport */ fixed /* posicionamento fixo ao ponto zero da viewport, sempre fixo */
/* aplicado para relative, absolute e fixed */ posicionamento: top, right, bottom e left
/* aplicado para absolute e fixed */ z-index
Normalmente, alguns browsers não possuem a implementação de todas as propriedades do CSS e para que seja possível, é necessário utilizar os prefixos de cada browser.
-moz-, -ms-, -webkit-, -o- e -khtml-*
um exemplo seria a propriedade flex:
.my-flex-class { width: 20%; /* For old syntax, otherwise collapses. */ -webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */ -webkit-flex: 1; /* Safari 6.1+. iOS 7.1+, BB10 */ -ms-flex: 1; /* IE 10 */ flex: 1; /* NEW, Spec - Firefox, Chrome, Opera */ }
A propriedade box-sizing é utilizada para calcular a largura e altura dos elementos. Por padrão, essa propriedade é content-box, a qual não leva em conta os valores de borda e padding do elemento.
* { webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
Utilizando border-box, não é necessário ficar (re)calculando os valores de altura e largura quando a borda e/ou o padding do elemento se alterar.
todos os direitos reservados ao seus respectivos autores.