Rotação de Elementos

Gerando formas geométricas com movimentos simples

Yane Vasquez
Jaguaribe Tech
5 min readAug 21, 2017

--

@CSS3

Para formatar visualmente elementos de marcação sabemos que o padrão que o box model nos fornece é um dimensionamento que permite movimentar boxes utilizando algumas propriedades, a exemplo do posicionamento float, configurações que usam elementos de bloco e elementos inline. Outros tipos mais recentes como o flexbox e grid também têm apresentando características de alinhamento de conteúdo mais eficazes, flexibilizando-se como alternativas de posicionamento CSS.

No entanto, existe algo em comum a estas propriedades , ou seja, é perceptível que independente da escolha da propriedade de posicionamento, ambos fornecem apenas duas possibilidades de direção dos elementos, sendo estas: horizontal e vertical.

Porém, como seguir um fluxo diferente e posicionar os elementos de formas mais interessantes?

Podemos utilizar a propriedade transform com o valor definido pela função rotate(), e criar formas geométricas diversas, além disso, direcionar o elemento de marcação diagonalmente, por exemplo, seguindo qualquer ângulo de rotação para criá-las.

Codificando — exemplo 1:

Essa propriedade segue uma sintaxe simples e pelo código podemos evidenciar. O código foi feito utilizando três divs e estão rotacionadas cada uma delas de modo a gerar uma forma geométrica hexagonal. Vejamos:

Com isso, o código gerado apresenta um resultado que induz a imaginar que a forma geométrica é um hexágono, porém, na verdade o que temos é uma sobreposição de divs, que foram definidas com mesma largura, altura e mesmas cores. A imagem abaixo ilustra como as divs se comportam antes de adicionar as mesmas cores.

Figura 1. Comportamento dos elementos antes de igualar as cores

O uso da margin também poderia ser substituído pela propriedade transform-origin, que nas transformações que estamos tratando utilizam-se de dois valores para alterar as especificações definidas pelo padrão (ponto central do box). Ou seja, podemos mudar os valores das coordenadas x e y e posicionar os elementos transformados. Para testar estes tipos de posicionamentos, o site da W3Schools fornece um simulador:

Figura 2 — Site para teste da propriedade transform origin

O suporte para os navegadores também apresentam prefixos específicos, ou seja, que garantem que a propriedade transform funcione corretamente, por isso, essa observação de suporte foi codificada no html, incluindo os principais navegadores antes da tag que gera o movimento de rotação.

A Figura 3 ilustra o suporte referente a propriedade transform-origin:

Figura 3 — Sintaxe nos navegadores

Codificando — exemplo 2:

Outra possibilidade de utilizar o rotacionamento é a aplicação em ícones, no qual a propriedade rotate apresenta-se mais consistente, principalmente, para aqueles ícones que simulam movimentos, conforme o resultado da imagem abaixo e o html destacando a aplicação da propriedade.

Figura 4 — Resultado após rotacionamento das divs

Demo:

Para ver mais detalhes sobre este exemplo você pode acessar demonstração neste link e o código neste repositório.

Vantagens

Ambos exemplos são simples, e mostram que, a ideia inicial de rotacionar elementos podem, por exemplo, ser aplicáveis em conjunto com animações e tornar o uso da propriedade mais interessante. Nesse sentido, as possibilidades são extensas para utilizar com outros ícones, bem como aplicar imagens e mudar a direção dos ângulos, uso em layouts, e também em divs com formatos geométricos diversos. Além disso, utilizar o rotate em projetos que envolvam configurações de poucos elementos é o mais indicado devido a sua versatilidade.

Exemplos de layouts com formas geométricas

Figura 5 — Exemplos de aplicações com formatos geométricos

Desvantagens

As desvantagens consistem em utilizar essa única ferramenta como possibilidade de estruturação dos elementos, pois, ter o controle de todas as divs a medida que número de elementos aumentam, podem tornar mais demorado o processo de codificação se comparado a outras metodologias com a mesma finalidade.

Infinitas possibilidades

Fazendo o mesmo, porém mudando a propriedade com: clip-path.

“A propriedade clip-path no CSS permite que você especifique uma região específica de um elemento a ser exibida, em vez de mostrar a área completa.” — css-tricks

Suas atribuições são: inset(), polygon() e ellipse (). Essa propriedade mostra que podemos “desenhar” um polígono qualquer e com isso configurar mais valores com o objetivo de especificar a área geométrica que pretende-se codificar. Vejamos o exemplo do código:

O resultado para a mesma forma geométrica, apresenta-se como:

Figura 6 — Forma geométrica com clip-path

É perceptível que o formato é o mesmo do exemplo 1, no entanto foi necessário incluir bem mais valores referentes a região a ser exibida do que utilizando a propriedade de rotação.

A desvantagem do uso dessa propriedade consiste na quantidade de parâmetros da forma geométrica pretendida. A vantagem no entanto, é que existem mais possibilidades de formatar um elemento com níveis de complexidades maiores com o uso do clip-path.

Um dos sites que faz ajustes de forma a fornecer o código e gerar mais opções de formatos geométricos é : http://bennettfeely.com/clippy/

Além das opções pré definidas, o usuário pode criar sua própria forma geométrica e não seguir nenhuma regra pra criar quaisquer formato.

Figura 7 — Ferramentas de apresentação do site para criar exemplos de clip path

Nesse sentido, a existência de ferramentas auxiliares pra gerar formatos dos tipos aqui descritos se constituem como uma alternativa mais amigável de configuração das formas geométricas e até mesmo sem precisar utilizar a propriedade transform: rotate().

Conclusão

As alternativas para obter formatos diferentes de elementos com as coordenadas definidas pelo default, permitem experimentar outras complementações que o CSS apresenta, exemplificamos brevemente duas delas e de forma bem introdutória, com o uso do transform com valor rotate() e o clip-path.

O uso de tais propriedades ainda que utilizadas sozinhas ou complementadas com animações e outras funções podem ser ferramentas úteis e se adequar a funções adicionais na criação do seu site.

--

--