JavaScript – Manipulação de Elementos no DOM

A manipulação do DOM (Document Object Model) com JavaScript é um aspecto fundamental do desenvolvimento web. O DOM é uma representação da estrutura hierárquica de elementos HTML em uma página da web, e JavaScript permite que você acesse, modifique e manipule esses elementos dinamicamente. Neste artigo veremos alguns conceitos e técnicas básicas para a manipulação do DOM com JavaScript:

Selecionar elementos do DOM:

Podemos selecionar elementos HTML usando os métodos:

document.getElementById()

document.getElementsByClassName()

document.getElementsByTagName()

document.querySelector()

document.querySelectorAll()

Selecionando um elemento pelo ID

const element = document.getElementById(‘meuElemento’);

Selecionando elementos por classe

const elements = document.getElementsByClassName(‘minhaClasse’);

Seleciona elementos por tag

const elementos = document.getElementsByTagName(‘p’);

Seleciona o primeiro elemento que corresponde a um seletor CSS

const elemento = document.querySelector(‘.minhaClasse’);

Seleciona todos os elementos que correspondem a um seletor CSS

const elementos = document.querySelectorAll(‘p.minhaClasse’);

Modificar o conteúdo e os atributos:

Podemos alterar o conteúdo de elementos e atributos usando propriedades como:

innerHTML,  textContent, e setAttribute()

Por exemplo:

const element = document.getElementById(‘meuElemento’);

element.innerHTML = ‘Novo conteúdo’;

element.textContent = ‘Texto de conteúdo’;

element.setAttribute(‘id’, ‘novoID’);

Adicionar e remover elementos

Você pode adicionar novos elementos ou remover elementos existentes do DOM. Por exemplo:

Criar um novo elemento

const novoElemento = document.createElement(‘div’);

Adicionar o novo elemento como filho de outro elemento

const container = document.getElementById(‘container’);

container.appendChild(novoElemento);

Remover um elemento

const elementoParaRemover = document.getElementById(‘elementoParaRemover’);

elementoParaRemover.parentNode.removeChild(elementoParaRemover);

Eventos

O JavaScript permite que a atribuição de eventos a elementos HTML para responder a ações do    usuário, como cliques, mouseovers, etc.

Por exemplo:

const botao = document.getElementById(‘meuBotao’);

botao.addEventListener(‘click’, function() {

alert(‘Botão clicado’);

});

Manipulação de classes CSS:

Podemos adicionar, remover ou alternar classes CSS em elementos para controlar sua aparência e comportamento.

Por exemplo:

const elemento = document.getElementById(‘meuElemento’);

elemento.classList.add(‘minhaClasse’);

elemento.classList.remove(‘outraClasse’);

elemento.classList.toggle(‘classeAlternada’);

Essas são apenas algumas das muitas maneiras de manipular o DOM com JavaScript. A manipulação do DOM é uma habilidade essencial para criar aplicativos web interativos e dinâmicos.

READ MORE

Operadores CSS

Os operadores CSS são símbolos especiais que são utilizados para combinar seletores e aplicar regras a elementos específicos em uma página da web.

Os operadores mais comuns são:

Operador de seleção universal (*)

Este operador seleciona todos os elementos dentro de um documento HTML.

Operador de Classe (.)

É utilizado para selecionar elementos que possuem um atributo de classe específico. Por exemplo, p.minha-classe seleciona todos os elementos p que possuem a classe minha-classe.

No exemplo abaixo, todos os elementos HTML que possuem uma classe “botão” terão um estilo específico aplicado a eles.

.button {

  background-color: blue;

  color: white;

  padding: 10px 20px;

  text-align: center;

}

Podemos aplicar essa classe a botões, links ou qualquer outro elemento que desejar. Por exemplo, no HTML:

<button class=”button”>Clique aqui</button>

<a href=”#” class=”button”>Link de Exemplo</a>

Ambos os botões e o link herdarão os estilos definidos para a classe “button” no CSS.

O uso de classes é uma técnica muito importante no CSS, pois permite que você aplique estilos a elementos específicos, independentemente de seu tipo ou posição no documento HTML.

Operador de ID (#)

É utilizado para selecionar elementos HTML que têm um atributo “id” específico. Diferentemente do operador de classe (.) que pode ser usado para aplicar estilos a vários elementos com a mesma classe, o operador de ID seleciona um elemento exclusivo em toda a página, pois o valor do atributo “id” deve ser único na página HTML.

Podemos usar o operador de ID da seguinte forma:

#header {

  background-color: #333;

  color: white;

  padding: 10px;

  text-align: center;

}

Neste exemplo, qualquer elemento HTML com o atributo “id” definido como “header” terá o estilo especificado aplicado a ele. Por exemplo, no HTML, podemos utilizar assim:

<div id=”header”>

  <h1>Título do Site</h1>

 </div>

O elemento <div> com o atributo “id” definido como “header” será estilizado de acordo com as regras CSS definidas.

O uso de IDs deve ser único em uma página HTML, um mesmo “id” não deve ser aplicado a múltiplos elementos.

Operador de Pseudo-classe (:)

As pseudo-classes são usadas para selecionar elementos HTML com base em estados específicos ou interações do usuário. Elas são identificadas pelo uso de dois pontos (:) e são adicionadas aos seletores CSS para aplicar estilos a elementos com base em seu estado.

Pseudo-classe :hover:

Seleciona um elemento quando o cursor do mouse está sobre ele.

Exemplo:

                a:hover {color: blue;}

Altera a cor do texto de links quando o mouse passa sobre eles.

Pseudo-classe :active:

Seleciona um elemento quando ele está ativo (por exemplo, quando o botão do mouse é pressionado).

Exemplo:

button:active {background-color: red;}

Altera a cor de fundo de um botão quando ele está sendo clicado.

Pseudo-classe :focus:

Seleciona um elemento quando ele recebe foco, geralmente por meio de teclado ou interações com o navegador.

Exemplo:  

                input:focus {border: 2px solid green;}

 Adiciona uma borda verde a um campo de entrada quando ele está em foco.

As pseudo-classes são importantes pois permitem aplicar estilos com base em interações do usuário e na posição dos elementos. Elas são frequentemente usadas em combinação com seletores de elementos para controlar o comportamento de diferentes partes de uma página da web.

Operador de Atributo: ([atributo=valor])

O operador de atributo em CSS permite selecionar elementos HTML com base em os valores de seus atributos. Ele é usado para aplicar estilos a elementos que possuam um atributo específico com um determinado valor. A sintaxe básica do operador de atributo é a seguinte:

seletor[atributo=valor] {

    propriedade: valor;

}

seletor: É o que você deseja selecionar no documento HTML, como uma tag HTML, uma classe, uma ID.

[atributo=valor]: É o operador de atributo. Ele seleciona elementos que possuem um atributo específico com um valor correspondente.

propriedade: valor: Aqui, você define as propriedades CSS e os valores que deseja aplicar aos elementos selecionados.

Operador de Agrupamento (,)

O operador de agrupamento (`,`) em CSS é usado para agrupar múltiplos seletores e aplicar as mesmas regras de estilo a todos eles. Isso permite que você defina um conjunto comum de estilos para vários elementos sem ter que repetir as regras de estilo em várias regras CSS separadas.

Exemplo:

h1, h2, h3 {

  font-family: Arial, sans-serif;

  color: #333;

}

As regras de estilo se aplicam a todos os elementos <h1>, <h2> e <h3>. Podemos listar quantos seletores quiser, separando-os por vírgulas.

Operador de Negação (:not())

O operador de negação :not() em CSS é uma pseudo-classe que permite selecionar elementos que não correspondem a um determinado seletor. Essa pseudo-classe é útil quando você deseja aplicar estilos a elementos específicos, excluindo outros que correspondem a um seletor geral. O formato básico da pseudo-classe :not() é o seguinte:

:not(seletor) {estilos a serem aplicados a elementos que NÃO correspondem ao seletor}

Alguns exemplos de como podemos utilizar:

Excluir um elemento com uma classe específica:

p:not(.special) {color: blue;}

Aplicará a cor azul a todos os elementos `<p>` que não têm a classe “special”.

Excluir um elemento com uma ID específica:

div:not(#exemplo) {background-color: yellow;}

Aplicará um fundo amarelo a todos os elementos `<div>` que não têm o ID “exemplo”.

A pseudo-classe :not() é uma maneira eficaz de aplicar estilos de forma seletiva a elementos específicos, excluindo outros com base em critérios de seleção.

Operadores de Combinação

Operadores de Combinação (>,  + e  ~) são utilizados para combinar e selecionar elementos de forma específica. Aqui estão alguns exemplos de operadores de combinação em CSS:

Espaço ( ) – Combinador descendente:

Seleciona elementos que são descendentes de outro elemento.

 Exemplo:

                div p {color: blue;}

Isso seleciona todos os elementos p que são descendentes de um elemento <di>v.

Maior que (>) – Combinador de filho direto:

Seleciona elementos que são filhos diretos de outro elemento.

Exemplo:

                ul > li {list-style-type: square;}

Seleciona todos os elementos <li> que são filhos diretos de uma lista não ordenada <ul>.

Sinal de adição (+) – Combinador adjacente:

Seleciona um elemento que é imediatamente precedido por outro elemento.

Exemplo:

                h2 + p { font-weight: bold;}

Seleciona todos os elementos <p> que são precedidos diretamente por um elemento <h2>.

(~) – Combinador de irmãos gerais:

Seleciona elementos que são irmãos de outro elemento, não necessariamente adjacentes.

Exemplo:

                h3 ~ p {font-style: italic;}

Seleciona todos os elementos <p> que são irmãos do elemento <h3>, independentemente de sua proximidade no documento.

Os operadores de combinação em CSS permitem que você selecione elementos de maneira mais precisa e específica, com base em sua relação com outros elementos no documento HTML. Isso é útil para aplicar estilos de forma seletiva a partes específicas de uma página da web.

Esses são alguns dos operadores mais comuns em CSS que permitem selecionar e aplicar estilos a elementos específicos em uma página da web.

READ MORE

Pontuação, Hierarquia e Sequência dos Seletores CSS

Pontuação entre ID, classe e tag

No CSS, a pontuação entre o ID, a classe e a tag é usada para especificar a especificidade de um seletor. A qual determina qual estilo será aplicado a um elemento quando há conflito entre regras CSS. A regra geral é que seletores mais específicos têm prioridade sobre os seletos menos específicos. Aqui está como a pontuação funciona:

Tag: Um seletor de tag, como “p” para parágrafos ou “div” para divisões, tem a menor especificidade e, portanto, a menor pontuação. Ele é representado como “0,0,0,1” na contagem de especificidade.

Classe: Um seletor de classe, como “.classe”, tem uma especificidade maior do que um seletor de tag e é representado como “0,0,1,0”. A diferença é que agora temos “1” na segunda posição.

ID: Um seletor de ID, como “#id”, tem a maior especificidade e é representado como “0,1,0,0”. Neste caso, temos “1” na terceira posição.

A contagem de especificidade é representada por quatro números, que indicam a importância dos seletores na seguinte ordem: IDs, classes e atributos, seletores de elementos e seletores universais.

Aqui está um exemplo para ilustrar como a especificidade funciona:

#minhaId { /* Especificidade: 0,1,0,0 */
  color: red;
}
.classe { /* Especificidade: 0,0,1,0 */
  color: blue;
}
p { /* Especificidade: 0,0,0,1 */
  color: green;
}

Se você tiver um elemento com a classe “.classe” e um ID “#minhaId”, a cor será vermelha, porque o seletor de ID tem uma especificidade maior do que o seletor de classe.

Em casos de conflito, o seletor com a maior especificidade terá prioridade. É importante ter em mente a especificidade ao escrever regras CSS para garantir que os estilos sejam aplicados conforme desejado.

Hierarquia dos Seletores

A hierarquia dos seletores CSS, também conhecida como cascata, é o princípio pelo qual o navegador decide quais estilos aplicar a um elemento quando vários seletores se aplicam a ele. A hierarquia é baseada na especificidade e na ordem de declaração das regras CSS. Aqui está a hierarquia dos seletores em ordem de prioridade:

Importância do Estilo: A regra de importância mais alta é a que tem maior precedência. Isso pode ser definido usando a propriedade “!important”. Quando uma regra tem “!important”, ela sempre prevalecerá, independentemente da especificidade ou da ordem de declaração.

.exemplo {
  color: red !important;
}

.exemplo {

  color: red !important;

}

Especificidade: A especificidade dos seletores é a próxima consideração. Seletor com maior especificidade terá prioridade sobre os seletores com menor especificidade. A hierarquia de especificidade é geralmente representada como “a,b,c,d”, onde “a” é o número de IDs, “b” é o número de classes, atributos e pseudo-classes, “c” é o número de seletores de elementos e “d” é o número de seletores universais.

#meuId {

  color: blue; /* Maior especificidade (0,1,0,0) */

}

.classe {

  color: green; /* Menor especificidade (0,0,1,0) */

}

p {

  color: red;

}

Ordem de Declaração: Se dois seletores têm a mesma especificidade, o último declarado no arquivo CSS terá precedência. A ordem de declaração segue a regra do último seletor encontrado.

.exemplo {

  color: red;

}

.exemplo {

  color: blue; /* Este estilo será aplicado, pois é o último */

}

Herança: Se nenhum dos fatores acima decidir o estilo de um elemento, o navegador recorre à herança. Isso significa que o elemento herdará o estilo de seu pai, a menos que haja uma regra mais específica para ele.

Seletores de Descendência e Filhos: Seletores de descendência (espaço em branco) e seletores de filho direto (“>”) também têm uma hierarquia. Por exemplo, um seletor mais específico dentro de uma hierarquia terá prioridade sobre um mais genérico.

div p { /* Estilos aplicados aos parágrafos dentro de divs */

  color: purple;

}

Em resumo, a hierarquia dos seletores CSS é uma maneira de determinar quais estilos serão aplicados a um elemento com base na especificidade, na ordem de declaração e em outras regras de cascata. Entender essa hierarquia é fundamental para o desenvolvimento web eficaz e o controle dos estilos em uma página.

Sequência de seletores

Em CSS, você pode criar seletores de várias maneiras para especificar quais elementos HTML receberão um estilo. Os seletores podem ser combinados para criar sequências mais complexas e específicas. Aqui estão alguns exemplos de sequências de seletores comuns:

Seletor de Tag: Isso seleciona todos os elementos com a tag especificada.

   p {

     /* Estilos aplicados a todos os parágrafos */

   }

Seletor de Classe: Isso seleciona todos os elementos que possuem uma classe correspondente.

   .classe {

     /* Estilos aplicados a todos os elementos com a classe “classe” */

   }

Seletor de ID: Isso seleciona um elemento específico com o ID correspondente.

   #id {

     /* Estilos aplicados ao elemento com o ID “id” */

   }

Seletor de Descendência: Isso seleciona elementos que estão aninhados dentro de outros elementos.

   div p {

     /* Estilos aplicados aos parágrafos dentro de divs */

   }

Seletor de Filho Direto: Isso seleciona elementos que são filhos diretos de um elemento específico.

ul > li {

  /* Estilos aplicados apenas às listas que são filhas diretas de elementos <ul> */

}

Seletor de Atributo: Isso seleciona elementos com um atributo específico.

[type=”text”] {

  /* Estilos aplicados a elementos com o atributo “type” definido como “text” */

}

Seletor de Pseudo-Classe: Isso seleciona elementos com base em estados ou interações específicas do usuário.

 a:hover {

     /* Estilos aplicados a links quando o cursor paira sobre eles */

   }

Combinando Seletores: Você também pode combinar vários seletores para criar sequências mais complexas. Por exemplo, “tag.class” selecionará elementos que têm a classe dentro de elementos com a tag correspondente.

   p.destaque {

     /* Estilos aplicados a parágrafos com a classe “destaque” */

   }

Estas são apenas algumas das muitas possibilidades de sequências de seletores em CSS. A combinação de seletores permite que você aplique estilos de forma seletiva e específica aos elementos HTML em suas páginas da web.

Em resumo, a compreensão da pontuação, hierarquia e sequência dos seletores CSS é essencial para controlar como os estilos são aplicados a elementos em uma página da web. A especificidade dos seletores, a relação hierárquica entre elementos e a ordem das regras definidas desempenham um papel crucial na resolução de conflitos de estilo e na criação de layouts e designs consistentes e desejados. É importante equilibrar a especificidade com a facilidade de manutenção para criar folhas de estilo CSS eficazes e de fácil gerenciamento.

READ MORE

O que é uma Position CSS?

O CSS (Cascading Style Sheets) é uma linguagem de estilo utilizada para controlar a apresentação e o Layout de elementos HTML em uma página web. O posicionamento é uma parte importante do CSS, pois determina como os elementos são dispostos na página em relação a outros elementos e ao próprio fluxo do documento.

Para a propriedade position, podemos atribuir 5 valores, que são: static, fixed, sticky, relative, absolute.

Vamos entender como funciona cada uma delas:

Position Static (Estático):

É um comportamento padrão do HTML, onde os elementos são posicionados em ordem, de cima para baixo e da esquerda para a direita.

Elementos em fluxo normal não aceitam propriedades CSS especiais para o seu posicionamento.

Position Fixed (Fixo):

O posicionamento fixo, faz com que o elemento que recebeu esta propriedade não se mova na tela. Mesmo que a página possua rolamento (scroll), tanto rolando para a esquerda e direita, quanto para cima e para baixo. Um exemplo seria usar uma barra de navegação lateral onde a mesma ficaria fixa, a navegação fica sempre visível durante o uso da página.

Exemplo:

.teste {

      position: fixed;

      height: 1000px;

}


Position Sticky (Colado/pegajoso):

Este posicionamento precisa de um posicionamento de referência, por tanto é sempre em conjunto das propriedades auxiliares. Parecido com o fixed, mas sua diferença, é que em vez de ficar fixo em relação a tela, fica fixo em relação a rolagem da página.

Exemplo:

.teste {

       position: sticky;

        top: 0px;

}

Position Relative (Relativo):

O posicionamento relativo serve para posicionar o elemento da página de acordo com as indicações que você definir.

A posição é definida através de quatro outras propriedades: top, bottom, left, right, que indicam a distância com relação ao topo, base, esquerda e direita, respectivamente, tomando como referência o posicionamento do elemento pai.

Exemplo:

.teste {

      position: relative;

      left: 150px;

}

Position Absolute (Absoluto):

A posição será definida em relação ao próximo elemento pai que esteja posicionado relativamente ou absolutamente.

Se não houver um elemento pai definido, por padrão ele irá definir o próprio documento HTML como sua raiz, significa que a posição será definida em relação à própria página web.

Exemplo:

.teste {

      position: absolute;

      top: 50px;

       left: 50px;

}

A diferença entre o position relative e o position absolute é basicamente qual elemento será usado como referência para realizar o posicionamento. O relative leva em consideração sua própria posição ao se deslocar. E o absolute leva em consideração a posição do elemento pai que possua um position relative, ou então será relativo ao próprio navegador. 

Em resumo, o posicionamento CSS é uma ferramenta poderosa para controlar o layout e o design de páginas da web. É essencial entender as propriedades de posicionamento e usá-las de forma adequada para criar layouts desejados e funcionais. Além disso, ao projetar para a web, é importante levar em consideração a responsividade e a adaptabilidade a diferentes dispositivos e tamanhos de tela.

READ MORE