O que é o CSS?

CSS é uma linguagem para formatação de documentos de marcação, tais como HTML ou XML. Seus arquivos são denominados como folhas de estilo por conter todo o código para formatação visual/estilo da página web.


Sintaxe Básica

seletor { propriedade: valor; }

Seletor ID

Utilizado para vincular somente um elemento por página web. Recomendado o uso para marcar coisas na mesma página. Para construí-lo basta que você crie um nome precedido pelo símbolo #.


Seletor Class

Utilizado para vincular um, ou mais, elemento da mesma página web. Indicado quando você precisa atribuir algumas propriedade iguais em elementos diferentes. Para construí-lo basta que você crie um nome precedido por um ponto.


Vários Seletores

Para indicar mais de um seletor para receber o mesmo conjunto de formatações CCS, basta indica-los separados por vírgulas.


h1, h2, h3, p { color: #F00; font-size: 20pt; }

px

É a unidade de pixel; Representa um único ponto em uma tela, ou seja, o menor elemento visual que pode ser exibido. É a unidade mais usada na web para definir dimensões de elementos.

  • Muito usada em dimensões de blocos, fontes, margens entre outros elementos de layout.

em

Unidade relativa ao tamanho da fonte do elemento pai. Um valor de 1em equivale ao tamanho da fonte herdada. Se o tamanho de fonte do elemento pai for 16px, 2em será 32px.

  • Tamanho será duas vezes o tamanho da fonte herdada.
  • Indicada para tamanhos de fonte.

pt

É a unidade de medida tipográfica tradicional. 1 pt equivale a 1/72 de polegada. É muito usada na impressão para definir tamanhos de fonte. No entanto, no design de páginas web, o uso de pt é menos comum.


Hexadecimal

Sistema numérico baseado em 16 que é usado para representar cores na web. Cores hexadecimais são representadas por um símbolo "#" seguido por 6 dígitos (0-9, A-F), onde os dois primeiros dígitos são para vermelho, os dois do meio para verde e os dois últimos para azul (RGB).


Porcentagem

Unidade relativa que representa uma porcentagem de uma medida. Quando usada em tamanhos, é geralmente relativa ao tamanho do elemento pai. Para cores, pode ser usada para opacidade.

  • É indicado para definir larguras e alturas de elementos para criar layouts responsivos, ou ajustar opacidade de cores.

Inline

É utilizado para dar estilo a um elemento HTML específico. Para que isso ocorra é somente preciso adicionar o atributo style para cada tag HTML, sem usar os seletores.


Exemplo:


<body style="background-color: black;">

Incorporado

É adicionado no documento HTML, na parte <head>, a tag <style>.


<!DOCTYPE html>
<html>
<head>
<style>
body {
background-color: blue;
}

h1 {
color: red;
padding: 60px;
}
</style>
</head>
<body>
<h1>Curso Webdesigner</h1>
<p>Este é o nosso parágrafo.</p>
</body>
</html>

Externo

É o mais utilizado. Com ele é necessário linkar o documento HTML num arquivo .css externo. Para que funcione adicione no </head> do documento HTML uma referência para o seu arquivo .css logo após a tag <title>


<link rel="stylesheet" type="text/css" href="style.css">

Sistema de Cores RGB

O sistema de cores usado na web é o RGB (Red, Green, Blue - Vermelho, Verde, Azul). Ele é utilizado por qualquer tela colorida, como CRT, LCD e LED. As cores são formadas ajustando a intensidade de cada canal de cor: vermelho, verde e azul.


Por exemplo, para obter vermelho, basta maximizar a intensidade do canal vermelho e minimizar as dos canais verde e azul.


Os valores variam de "00" (intensidade mínima) a "FF" (intensidade máxima). Assim, Red=00, Green=00, Blue=00 resulta em preto, e Red=FF, Green=FF, Blue=FF resulta em branco.


Sistema de Cores RGB

Linear

Possui uma variação linear de um ponto inical A até um ponto final B.


linear-gradient(to bottom, #F00, #FF0)

Variação linear na vertical de cima para baixo com duas cores.


linear-gradient(45deg, #F00, #00F, #FF0)

Variação linear em 45 graus com três cores.

linear-gradient(to bottom, #F00 0%, #00F 25%, #FF0 50%)

Variação linear na vertical de cima para baixo com três cores em posições definidas.

linear-gradient(to right, #F00, #FF0)

Variação linear na horizontal da esquerda para direita com duas cores.

repeating-linear-gradient

É uma variação do gradiente linear. Funciona repetindo o gradiente configurado até preencher. (repeating-linear-gradient(#F00, #FF0 20%))



Radial

Possui uma variação circular/radial do centro para fora.


radial-gradient(#F00, #FF0)

Variação radial do centro para fora com duas cores.


radial-gradient(#F00, #00F, #FF0)

Variação radial do centro para fora com três cores.

radial-gradient(#F00 0%, #00F 25%, #FF0 50%)

Variação radial do centro para fora com três cores em posições definidas

radial-gradient(circle, #F00, #FF0)

Variação radial circular, independente do formato retangular, a variação do gradiente não será oval e sim circular, do centro para fora com duas cores.

repeating-radial-gradient

É uma variação do gradiente radial. Funciona repetindo o gradiente configurado até preencher. (repeating-radial-gradient(#F00, #FF0 20%))

font-size

Define o tamanho da fonte.


Os valores mais usados são: px, em & porcentagem


font size

font-family

Define a família de fontes.


Com ela pode-se declarar uma fonto específica e uma genérica. Sempre declare uam fonte genérica que corresponda à fonte específica declarada, pois se a específica não estiver disponível no dispositivo do usuário o navegador terá liberdade para escolher uma fonte semelhante da família genérica.


font family

font-weight

Determina o peso da fonte.


É mais utilizada com o valor "bold" para negritar trechos de textos. Os valores numéricos para essa propriedade vão de 100 a 900, mas também pode usar:


normal

font weight

bold

font weight

bolder

font weight

lighter

font weight

font-style

Usada para dar estilo.


Pode ser usada nos seguintes valores:


Normal

Oblique

Italic


line-height

É uma propriedade de dimensionamento que permite estipular espaçamento entre linhas.


Pode ser utilizados diferentes valores como: px, cm, em, %, etc. Números tambem podem ser utilizados.


Lorem, ipsum dolor sit amet consectetur adipisicing elit. Aliquid corporis deleniti expedita ut laboriosam facere eos aut rerum neque doloribus?

font

É indicada quando se quer diminuir o código reunindo todos os valores das propriedades acima em uma só declaração.


font

text-align

É usada para determinar o tipo de alinhamento que um texto possuirá.


Os seus valores são:


Left

Right

Center

Justify


color

Inseri cor no texto.


color

letter-spacing

Controla o espaçamento entre as letras de um texto.


letter spacing

word-spacing

Controla o espacamento entre as palavras de um texto.


word spacing

text-decoration

Define um efeito decorativo no texto. Podendo ser:



None

Sem decoração


text-decoration: none;

Underline

Subinlhado


text-decoration: underline;

Line Through

Linha cortando o texto


text-decoration: line-through;

Blink

Efeito piscante


Não funciona mais no HTML 5


text-decoration: blink;

text-transform

Controla os efeitos de capitalização do texto.


Com ela é possivel definir a caixa das letras (minúsculas e maiúsculas). Os seu valores possíveis são


Capitalize

Transforma o primeiro caracter de cada palavra em maiúscula.


text-transform: capitalize;

Uppercase

Trasnforma todas as letras de todas as palavras em maiúsculas.


text-transform: uppercase;

Lowercase

Transforma todas as letras de todas as palavras em minúsculas.


text-transform: lowercase;

None

Cancela algum valor que tenha sido herdado.


text-transform: none;

text-indent

Define o tamanho da endentação para a primeira linha do texto contida em um bloco, ou seja, o deslocamento para a direita de um parágrafo.


exemplo de text-indent

Como é no código:

text-indent: 50px;

O que é Text-Shadow?

É utilizada para adicionar sombra ao texto. É possivél fazer o texto com múltipas sombras e com a cor da fonte estando na mesma cor do background da página.


Exemplos:


exemplo 1 de text-shadow
color: white;
text-shadow: 3px 3px 6px #5200D8;

exemplo 2 de text-shadow
color: white;
text-shadow: 3px 3px 6px #DAB6FF, -3px -3px 6px #9124ff;

exemplo 3 de text-shadow
color: black; text-shadow: 1px 1px 2px white, 0px 0px 7px #C58BFF, 0px 0px 20px #6303FF;

O que é Box-Shadow?

É utilizada para adicionar sombra ao redor de elementos, como blocos, caixas ou divs.


Width

Define a largura.


Height

Define a altura.


Exemplo de width & height

width: 250px; height: 100px;

Margin

Define a margem externa dos elementos.


margin: 30px;

Padding

Define a margem interna dos elementos.


Exemplo 1
padding: 70px 0px 0px 50px;

Exemplo 2
padding: 0px 50px 70px 0px;

Background

É a propriedade responsável por atribuir valores para características de fundo de sites, seções e blocos. Com ele é possível atribuir valores de cor, posicionamento, imagens para fundo, entre outros


Background-clip

Define a área onde a imagem de fundo é aplicada.


Border-box

Padding-box

Content-box


Background-attachment

Se a imagem fica fixa ou não enquanto rolamos a tela.



Border

Especifica a espessura, o estilo e a cor da borda de um elemento.


None

Sem borda; A borda não será visível.


border-style: none;

Solid

Uma borda sólida, contínua, sem interrupções.


border-style: solid;

Dashed

Uma borda com traços, onde a linha é formada por segmentos quebrados.


border-style: dashed;

Dotted

Uma borda formada por pontos ou círculos.


border-style: dotted;

Double

Uma borda dupla, onde duas linhas sólidas são desenhadas paralelamente.


border-style: double;

Groove

Uma borda que parece esculpida ou em baixo-relevo. A cor da borda é afetada pela cor do elemento.


border-style: groove;

Ridge

Uma borda que parece elevada ou em alto-relevo. A cor da borda é afetada pela cor do elemento.


border-style: ridge;

Inset

Faz com que o elemento pareça elevado em relação à página.


border-style: inset;

Outset

Faz com que o elemento pareça elevado em relação à página.


border-style: outset;

Display

Indica como um elemento será exibido. Por padrão, a maioria dos elementos tem o display configurado em "block" ou "inline-block"


Block

Quebra a linha após o elemento, e sua área ocupa toda a linha onde é inserido. Elementos com display:block configurados por padrão: div, h1 até h6, p, form, header, footer, section e table.


Inline

Os elementos com está configuração não inicia em uma nova linha e nem quebra de linha após o elemento e não ocupam a linha inteira, somente ocupam o espaço de seu conteúdo. Elementos com display:inline configurados por padrão: span, a e img.


Inline-Block

É parecido com o inline, mas ele preserva o tamanho configurado do elemento.


Table-Cell

O elemento se comporta como se fosse uma célula de uma tabela, podendo receber todas as propriedades que usamos para <td>.

Position

Especifica como um elemento será posicionado na tela, controlando o comportamento e a localização desse elemento dentro de sua caixa de contorno ou em relação a outros elementos.


Determina o ponto onde ele começará a ser poscionado e como ele interage com o fluxo normal da página.


Static

Este é o valor padrão para todos os elementos.


Elementos com position: static são posicionados de acordo com o fluxo normal da página, ou seja, aparecem um após o outro.


Eles não respeita as propriedades top, right, bottom e left.



.static {
position: static;
width: 100px;
height: 100px;
background-color: #add8e6;
border: #000 solid 1px;
display: inline-block;
}


Relative

O elemento é posicionado em relação à sua posição normal no fluxo da página. Isso significa que ele pode ser deslocado usando top, right, bottom e left, mas ainda ocupa o espaço em sua posição original.



.relative {
position: relative;
top: 20px;
left: 15px;
width: 100px;
height: 100px;
background-color: #90ee90;
border: #000 solid 1px;
display: inline-block;
}

Absolute

Posiciona o elemento em relação ao seu ancestral mais próximo que não tenha position: static;. Ele pode ser posicionado usando top, left, right, ou bottom.



.absolute {
position: absolute;
bottom: 20px;
left: 15px;
width: 100px;
height: 100px;
background-color: #dda0dd;
border: #000 solid 1px;
display: inline-block;
}

Fixed

Ele fixa o elemento em um ponto específico da janela, e ele permanece ali mesmo quando a página é rolada. Pode ser posicionado usando top, left, right, ou bottom.


.fixed {
position: fixed;
top: 20px;
right: 15px;
width: 100px;
height: 100px;
background-color: #f08080;
border: #000 solid 1px;
display: inline-block;
}

Formatação de Links

Formatar os links é a mesma coisa de formatar um texto normal, a diferença é que podemos especificar uma formatação para cada estado do link.


CYA DEV

Formatando o Link como um botão

Refere-se a aplicar estilo CSS a um elemento <a> para que ele se pareça e funcione visualmente como um botão. Embora links e botões tenham funcionalidades diferentes, às vezes é útil estilizar um link para parecer com um botão por motivos de design ou usabilidade.


CYA DEV

Menu Dropdow sem Script

É um menu suspenso criado apenas com HTML e CSS, sem o uso de JavaScript para controlar seu comportamento. Esse tipo de menu permite que o usuário clique ou passe o cursor sobre um item do menu para revelar uma lista de opções ou submenus que estão "escondidos" por padrão.


Box-Sizing

Permite incluir ao tamanho total de um elemento o padding e a borda.


Sem Box-Sizing

Content-Box

Observe as divs acima em que o tamanho original foi alterado. Isso acontece porque o tamanho total de um elemento é calculado da seguinte forma:

width + padding + border = Largura atual do elemento

height + padding + border = Altura atual do elemento.


Utilizando o box-sizing é possivél que isso não ocorra.


Border-Box

Valores


Content-Box

É o valor padrão do box-sizing.

A largura e a altura definidos para o elemento aplicam-se apenas à área do conteúdo

O padding e as bordas são adicionados fora dessa área, aumentando o tamanho total do elemento.


Código do exemplo anterior


border: var(--secundary-1) solid 4px;
width: 150px;
height: 150px;
color: var(--primary-1);
padding: 50px;
box-sizing: content-box;

Border-Box


Com esse valor, o padding e as bordas são incluídos na largura e altura definidas.


Código do exemplo anterior


border: var(--secundary-1) solid 4px;
width: 150px;
height: 150px;
color: var(--primary-1);
padding: 50px;
box-sizing: border-box;

@media (Layouts Responsivos)

É utilizada para aplicar estilos específicos com base em determinadas condições, como o tamanho da tela ou o tipo de dispositivo que está exibindo o site. Isso é essencial para criar layouts responsivos, ou seja, layouts que se ajustam de forma adequada a diferentes tamanhos de tela, como smartphones, tablets, laptops e desktops.


Sintaxe Básica


@media condição (not|only) mediatype and (expressões) {
Código CSS;
}

O resultado de um comando @media é do tipo booleam (true/false), verdadeiro ou falso, se o tipo de dispositivo correspondente ao tipo de mídia for verdadeiro terá um retorno true e as regras CSS estabelecidas para esta @media serão aplicadas. Também podemos definir diferentes folhas de estilo para diferentes mídias.


<link rel="stylesheet" media="print()" href="impressora.css">
<link rel="stylesheet" media="screen and (max-widt: 500px)" href="celular.css">
<link rel="stylesheet" media="screen and (min-width: 500px)" href="pc.css">
<link rel="stylesheet" media="screen and (min-width: 1024px)" href="telasGrandes.css">


Valores


All

Todos os tipos de dispositivos.


Print

Usado para impressoras.


Screen

Usado para telas, computador, celulares, tablets, etc...


Speech

Usado para telas de leitores de conteúdo, leitores de ebook.

Flexbox

É um modelo de layout que facilita a criação de layouts responsivos e flexíveis. Ele permite que os elementos dentro de um contêiner se ajustem automaticamente, distribuindo espaço e alinhando itens de maneira mais eficiente.


Elementos


diagrama do flexbox

O Flexbox é um módulo completo e não uma única propriedade; algumas delas devem ser declaradas no container (o elemento-pai, chamado de flex container), enquanto outras devem ser declaradas nos elementos-filhos (os flex itens).


Eixo Principal

O eixo principal de um flex container é o eixo primário e ao longo dele são inseridos os flex items.

Observação: O eixo principal não é necessariamente horizontal; vai depender da propriedade flex-direction


Main-Start | Main-End

Os flex items são inseridos dentro do container começando pelo lado start, indo em direção ao lado end.


Tamanho Principal

A propriedade de tamanho principal de um flex item pode ser tanto width quanto height, dependendo de qual delas estiver na direção principal.


Eixo Transversal

Sua direção depende da direção do eixo principal.


Cross-Start | Cross-End

Linhas flex são preenchidas com ítens e adicionadas ao container, começando pelo lado cross start do flex container em direção ao lado cross end.


Cross Size

Largura ou altura de um flex item, dependendo do que estiver na dimensão transversal, é o cross size do íten.


Flex Container

É o elemento que envolve sua estrutura.

Para defini-lo com a propriedade display e usando os valores flex ou inline-flex.


<div class="flex-container">
<div>1</div>
<div>2</div>
<div>3</div>
</div>

.flex-container {
display:flex;
}

Flex Item

São elementos-filhos do flex container.



Flexbox: Propriedades para o Elemento-Pai



Display

Define um flex container. (Com os valores Flex ou Inline-Flex)


.container {
display:flex;
}


Flex-Direction

Estabelece o eixo principal, definindo a direção em que os flex items são alinhados no flex container.


Exemplo de flex-direction

.container {
display: row;
}

Valores


Row

Itens estão dispostos em uma linha, da esquerda para a direita.


Row-Reverse

Itens estão dispostos em uma linha, da direita para a esquerda.


Column

Itens estão dispostos em uma coluna, de cima para baixo.


Column-Reverse

Itens estão dispostos em uma coluna, de baixo para cima.



Flex-Wrap

Por padrão, os flex-itens vão todos tentar se encaixar em uma só linha. O flex-wrap define se os itens devem, ou não, quebrar para a linha/coluna seguinte quando o container não puder acomodá-lo em uma linha/coluna só.


Exemplo de flex-wrap

.container {
flex-wrap: nowrap;
}

Valores


Nowrap

É o padrão.


Todos os itens são mantidos em uma única linha/coluna.


Wrap

Os itens são quebrados em várias linhas/colunas, caso necessário.


Wrap-Reverse

Os itens são quebrados em várias linhas/colunas na direção inversa.



Flex-Flow

Flex-Flox é uma propriedade, um atalho, que inclui os valores de flex-direction e flex-wrap ao mesmo tempo.


.container {
flex-flow: row;
}


Justify-Content

Define o alinhamento horizontal dos itens ao longo do eixo principal.


Exemplo de flex-flow

.container {
justify-content: flex-start;
}

Valores


Flex-Start

É o padrão.


Alinha os itens no início do eixo.


Flex-End

Alinha os itens no final do eixo.


Center

Alinha os itens no centro do eixo.


Space-Between

Distribui os itens uniformemente, como o primeiro item no início e o último no final.


Space-Around

Distribui os itens com espaçamento igual ao redor de cada item.


Space-Evenly

Distribui os itens com espaçamento igual entre eles.



Align-Items

Define o alinhamento vertical dos itens ao longo do eixo transversal.


Exemplo de align-items

.container {
align-items: stretch;
}

Valores


Stretch

É o padrão.


Itens esticam para preencher o container.


Flex-Start

Alinha os itens no início do eixo transversal.


Flex-End

Ainha os itens no final do eixo transversal


Center

Alinha os itens no centro do eixo transversal.


Baseline

Alinha os itens com base na linha de base do conteúdo do primeiro item.


Align-Content

Organiza as linhas dentro de um flex container quando há espaço extra no eixo transversal


Importante: Ele não funciona se há somente uma linha de flex items no container.


Exemplo de align-content

.container {
flex-direction: row;
}

Valores


Stretch

É o padrão.


As linhas se esticam para preencher o container.


Flex-Start

Alinha as linhas no início do eixo transversal.


Flex-End

Alinha as linhas no final do eixo transversal.


Center

Centraliza as linhas no eixo transversal.


Space-Between

Distribui as linhas uniformemente, com a primeira linha no início e a última no final.


Space-Around

Distribui as linhas com espaçamento igual ao redor de cada linha.


Space-Evenly

Distribui as linhas com espaçamento igual entre elas.


Flexbox: Propriedades para o Elemento-Filho


Onde existe um elemento-pai com propriedade flex (flex-container), é possível atribuir propriedades flex específicas também para as elementos-filhos (flex-item).


<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>

Order

Determina a ordem em que os elementos aparecerão.

O valor padrão é 0.


exemplo de order

flex-item {
order: número;
}

Flex-Grow

Define o quanto um item deve crescer em relação aos outros, se houver espaço disponível.


O valor padrão é 0.


Valores negativos não são aceitos pela propriedade.


exemplo de order

flex-item {
flex-grow: número;
}

Flex-Shrink

Detfine a habilidade de um flex item de encolher se o container não tiver espaço suficiente.


O valor padrão é 0.


Valores negativos não são aceitos pela propriedade.


flex-item {
flex-shrink: número;
}

Flex-Basis

Define o tamanho padrão para um elemento antes que o espaço remanescente do container seja distribuído.


Pode ser defibido em unidades absolutas (como px, em, etc) ou percentuais.


O valor padrão é auto.


flex-item {
flex-basis: auto;
}

Flex

Flex é uma propriedade, um atalho, que inclui os valores de flex-grow, flex-shrink e flex-basis ao mesmo tempo.

O valor padrão é 0 1 auto.


flex-item {
flex: none;
}

Align-Self

Permite que o alinhamento padrão (ou o que estiver definido por align-items) seja sobrescrito para itens individuais.


exemplo de align-self

flex-item {
align-self: auto;
}

Valores


Auto

Herda o valor do align-items.


Flex-Start

Alinha o item no final do eixo tranversal.


Flex-End

Alinha o item no final do eixo transversal.


Center

Alinha o item no centro do eixo transversal.


Baseline

Alinha o item com base na linha de base de seu conteúdo.


Stretch

O item estica para preencher o container.