A personalização da interface para a preferência do usuário é uma grande vitória para a experiência do usuário. Aqui, vamos fornecer ao usuário um simples interruptor para alternar entre o modo escuro e o modo claro e também tentaremos lembrar sua preferência para visitas futuras.
Adicionando o CSS
Vamos adicionar propriedades personalizadas CSS, também conhecidas como variáveis CSS, que podemos referenciar e modificar em todo o documento.
Primeiro, adicionaremos nossas variáveis CSS de modo claro ou padrão à pseudo classe :root
. Ela corresponde ao elemento raiz em sua árvore de documentos, geralmente a tag <html>
. Usaremos :root
porque queremos disponibilizar as variáveis globalmente.
:root {
--primary-color: #302AE6;
--secondary-color: #536390;
--font-color: #424242;
--bg-color: #fff;
--heading-color: #292922;
}
Em segundo lugar, adicionaremos nossas variáveis CSS de modo escuro.
[data-theme="dark"] {
--primary-color: #9A97F3;
--secondary-color: #818cab;
--font-color: #e1e1ff;
--bg-color: #161625;
--heading-color: #818cab;
}
Aqui, [data-theme="dark"]
significa que estamos referenciando um atributo de dados chamado data-theme
com um valor "dark"
.
Então, podemos referenciar essas variáveis em nossas folhas de estilo assim:
body {
background-color: var(--bg-color);
color: var(--font-color);
/*outros estilos*/
}
h1 {
color: var(--secondary-color);
/*outros estilos*/
}
a {
color: var(--primary-color);
/*outros estilos*/
}
Adicionando o HTML “marcação de interruptor de alternância”
Essencialmente, é apenas uma caixa de seleção, no entanto, adicionaremos alguma marcação adicional para estilizá-la como um interruptor de alternância.
<div class="theme-switch-wrapper">
<label class="theme-switch" for="checkbox">
<input type="checkbox" id="checkbox" />
<div class="slider round"></div>
</label>
<em>Ativar Modo Escuro!</em>
</div>
E aqui está um simples CSS para estilizá-lo como um interruptor de alternância:
.theme-switch-wrapper {
display: flex;
align-items: center;
em {
margin-left: 10px;
font-size: 1rem;
}
}
.theme-switch {
display: inline-block;
height: 34px;
position: relative;
width: 60px;
}
.theme-switch input {
display:none;
}
.slider {
background-color: #ccc;
bottom: 0;
cursor: pointer;
left: 0;
position: absolute;
right: 0;
top: 0;
transition: .4s;
}
.slider:before {
background-color: #fff;
bottom: 4px;
content: "";
height: 26px;
left: 4px;
position: absolute;
transition: .4s;
width: 26px;
}
input:checked + .slider {
background-color: #66bb6a;
}
input:checked + .slider:before {
transform: translateX(26px);
}
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
E é isso! Agora você tem um interruptor de modo claro/escuro funcional em seu site.