Desenhando com CSS: Bandeira Japonesa com Apenas Um Elemento HTML
A bandeira Japonesa, também conhecida como "Nisshoki" ou "Hinomaru", possui um desenho minimalista e elegante. Neste artigo você aprenderá a desenhá-la utilizando um único elemento HTML.
Serão usadas as especificações oficiais da bandeira, veja abaixo:
- Proporção 2:3
- Diâmetro do círculo 3/5 da altura
- Cor do círculo em hexadecimal #BC002D
O ponto de partida do desenho será o elemento <div></div>
. Esse elemento é um container utilizado para agrupar outros elementos HTML.
Neste exercício ele será o plano de fundo branco da bandeira Japonesa.
Passo 1: Crie a Estrutura HTML da Bandeira
Crie um novo arquivo HTML no seu editor de código favorito. Neste documento, adicione um elemento <div></div>
com o ID "flag".
Esse será o container da bandeira. Se preferir, copie o código abaixo:
<!DOCTYPE html>
<html>
<head>
<title>Desenhando com CSS: Bandeira Japonesa</title>
</head>
<body>
<div id="flag"></div>
</body>
</html>
Passo 2: Posicione a Bandeira no Centro e Adicione os Estilos do Fundo
<!DOCTYPE html>
<html>
<head>
<title>Desenhando com CSS: Bandeira Japonesa</title>
<style>
:root {
--b-color: #D1D5DB;
--bg-color: #FAFAFA;
}
body {
background-color: var(--bg-color);
display: grid;
height: 100vh;
padding: 1rem;
place-items: center;
}
#flag {
aspect-ratio: 3/2;
background-color: white;
border: 1px solid var(--b-color);
max-width: 420px;
position: relative;
width: 100%;
}
</style>
</head>
<body>
<div id="flag"></div>
</body>
</html>
No código acima repare na utilização da propriedade aspect-ratio
.
Ela permite especificar a proporção pela qual a largura e altura de um elemento serão calculados.
Como optou-se pela utilização da proporção oficial da bandeira, o valor escolhido foi 3/2.
Passo 3: Crie o Círculo e o Posicione no Centro da Bandeira
<!DOCTYPE html>
<html>
<head>
<title>Desenhando com CSS: Bandeira Japonesa</title>
<style>
:root {
--b-color: #D1D5DB;
--j-red: #BC002D;
--bg-color: #FAFAFA;
}
body {
background-color: var(--bg-color);
display: grid;
height: 100vh;
padding: 1rem;
place-items: center;
}
#flag {
aspect-ratio: 3/2;
background-color: white;
border: 1px solid var(--b-color);
max-width: 420px;
position: relative;
width: 100%;
}
#flag::before {
aspect-ratio: 1 / 1;
background-color: var(--j-red);
border-radius: 50%;
content: "";
height: 60%;
left: 50%;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
}
</style>
</head>
<body>
<div id="flag"></div>
</body>
</html>
No código acima, novamente utilizou-se a propriedade aspect-ratio
.
Dessa vez para especificar a proporção do círculo que é 1:1.
Confira o resultado do desafio
Conclusão
Por meio desse projeto foi possível abordar tópicos intermediários do CSS como pseudo-elements, position, variables e aspect-ratio. O intuito de restringir as opções (como utilizar apenas um elemento HTML) é justamente forçar a exploração das possibilidades de uma tecnologia. Possivelmente a aborgem deste desafio não foi a mais intuitiva, porém favoreceu o exercício de vários tópicos relevantes do CSS.
Gostou do artigo? Me ajude compartilhando nas redes sociais.
Sugestões? Entre em contato comigo. Ficarei feliz com o seu feedback.