Pular para o conteúdo principal

Criando Menu Horizontal com CSS Moderno com Neumorfismo




Fala dev, tranquilo?! Meu nome é Douglas e nesse tutorial vou te ensinar a criar esse incrível menu horizontal acima moderno e muito leve sem uso de nenhuma biblioteca ou framework, usando apenas algumas poucas linhas de código HTML e CSS. Você pode customizá-lo muito facilmente e usar nos sites dos seus próximos clientes.

Eu usei o estilo do Neumorfismo, que é uma tendência bem "recente" entre designs de interface e tem ficado cada dia mais popular, ele visa simular um efeito tridimensional dos objetos, fazendo-os parecer estar "saltando" da tela ou estar sendo "pressionados", como um botão do mundo real.

A forma que isso é feita é bem simples, normalmente é feito o uso de 2 tipos de sombra simultaneamente, uma sombra clara simulando a luz e uma escura pra o que seria a sombra "real".

Vou deixar o tutorial o mais simples possível para que qualquer Dev em qualquer nível com facilidade, portanto não vou fazê-lo responsivo, ou seja, ele não vai se adequar pra telas menores. Mas se tiver interesse, por favor comente se gostaria que eu fizesse um tutorial sobre isso.

Requisitos:

  • Somente um editor de texto (estarei usando o vscode mais nada impede que use até mesmo seu bloco de notas no windows).

Vamos começar criando a base do nosso menu, uma página html simples. Abra seu editor e cole o seguinte código e salve como index.html:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Menu Horizontal</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Oswald:wght@200;300;400;500;600;700&display=swap" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Maven+Pro&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="./css/style-neumorphic.css">
</head>
<body class="">
    <nav class="navbar">
        <h2>
            <a href="#">
                Dot<span>.</span>Perfect
            </a>
        </h2>
        <div class="menu">
            <a href="#" class="active">início</a>
            <a href="#">sobre</a>
            <a href="#">projetos</a>
            <a href="#">contato</a>
        </div>
    </nav>
</body>
</html>


Esse é um documento básico de HTML que no cabeçalho <head> chama apenas uma fonte do google e um arquivo css chamado "style-neumorphic.css" que contém os estilos do nosso menu.

No corpo do documento temos a estrutura do nosso menu que começa com um elemento <nav> que é usado comumente pra menus e conjuntos de links de navegação.

Dentro dele temos um <h2> que vai ser usado como o logo do nosso menu. E por último a lista dos links do menu dentro de uma <div> com id menu para ser usado de referência no nosso css.

Explicado nosso html, crie uma nova pasta no mesmo diretório do index.html chamada css e dentro crie um arquivo chamado "style-neumorphic.css" sem aspas. Dentro dele coloque as seguintes linhas de código css:

:root {
    --color-primary: rgb(150, 149, 227);
    --color-secondary: rgb(66, 66, 96);
    --color-background-light: #ebe8ef;
    --color-background-dark: rgb(26, 26, 40);
    --color-text-light: rgb(255, 255, 255);
    --color-text-dark: rgb(66, 66, 96);
}

* {
    margin: 0;
    padding: 0;
}

body {
    background-color: var(--color-background-light);
}

body.dark {
    background-color: var(--color-background-dark);
}

.navbar {
    min-height: 60px;
    margin: 12px 14px;
    color: rgb(26, 25, 28);
    box-shadow: 2px 2px 8px #0d27502c, -2px -2px 8px #ffffff;
    border-radius: 50px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
body.dark .navbar {
    background-color: var(--color-background-dark);
    color: var(--color-text-light);
    box-shadow: 2px 2px 4px rgb(17, 17, 27), -2px -2px 4px rgb(38, 38, 60);
}
.navbar h2 span{
    color: var(--color-primary);
}
.navbar h2 {
    font-family: Oswald;
    font-size: 1.5rem;
    font-weight: 600;
    margin-left: 22px;
    color: var(--color-text-dark);
}
body.dark .navbar h2 {
    color: rgb(255, 255, 255);
}
.navbar .menu {
    font-family: 'Maven Pro';
    font-size: 1.1rem;
    font-weight: light;
    margin-right: 22px;
}
.navbar a {
    text-decoration: none;
    color: var(--color-secondary);
    padding: 6px 16px;
    border-radius: 50px;
    vertical-align: middle;
}
.navbar .menu a.active,
.navbar .menu a:hover,
.navbar .menu a:focus {
    background-color: var(--color-primary);
    color: rgb(255, 255, 255);
}
body.dark .navbar a {
    color: rgb(255, 255, 255);
}

Após salvar, o seu menu agora está pronto pra ser testado. Basta clicar com botão direito e abrir com seu navegador (um navegador moderno de verdade, não o internet explorer versão 1). 

Um documento css é separado por regras que servem para atribuir estilos à determinado seletor. Por exemplo para definir a cor do texto de um elemento podemos usar como seletor uma id que sempre inicia com um (#), uma classe que sempre inicia com um ponto (.) ou uma hierarquia dizendo para pegar por exemplo todos os parágrafos (elemento <p>) que estejam dentro de uma div escreveríamos div p.

Quanto ao nosso código nós começamos definindo variáveis, um dos recursos mais interessantes e recentes do CSS. Pra isso usamos o seletor ::root, damos um nome pra nossa varável que deve começar com dois hífens (traços --) e atribuímos um valor, no nosso caso os valores são cores, mas poderíam ser alguma medida em pixels como 30px ou em viewport height como 50vh que seria metade da altura da tela do dispositivo.

Após isso resetei todos os espaçamentos de todos os elementos com o seletor (*) sem parênteses e atribuindo a ele margin (espaçamento externo) e padding (espaçamento interno).

Em seguida dei ao elemento <body> uma cor de fundo com background-color e a cor de fundo foi definida como uma das variáveis criadas no início, para resgatar o valor de uma variável é necessário usar a "função" var(--nome-da-variável). E informei que se o <body> contivesse a classe dark, teria uma cor escura.

Com esse mínimo de conhecimento e sabendo um pouquinho de inglês você consegue deduzir o que cada linha faz, caso esteja com dúvidas na aba do seu navegador aberto com o menu, clique com o botão direito do mouse e em seguida em "inspecionar elemento" com isso você consegue ver cada elemento HTML e por quais regras CSS estão sendo afetados.

Espero que tenha aprendido mesmo que algo pequeno com esse tutorial, e até a próxima dev.

/fa-clock-o/ WEEK TRENDING$type=list

Integração contínua com ReactJS: Como automatizar seu fluxo de trabalho

Integração contínua com ReactJS: Como automatizar seu fluxo de trabalho A integração contínua (CI, do inglês "Continuous Integration") é uma técnica que tem como objetivo automatizar o processo de build e teste de um software, permitindo que as equipes de desenvolvimento possam entregar novas funcionalidades com mais rapidez e qualidade. Neste artigo, vamos explorar como aplicar a CI no desenvolvimento de aplicações web com ReactJS, e como automatizar todo o fluxo de trabalho utilizando ferramentas populares como o GitLab CI e o Travis CI.   Confira o blog DougDesign para e veja como conseguir seu primeiro emprego na área de proramação e tecnologia.   O que é Integração Contínua? A integração contínua é uma prática de desenvolvimento de software que visa automatizar o processo de build e teste de um aplicativo. Com a CI, cada vez que um desenvolvedor envia código para o repositório de controle de versão, o sistema automaticamente executa uma série de tarefas, incluindo a comp...

Como integrar o ChatGPT em seu whatsapp

Como integrar o ChatGPT em seu whatsapp O ChatGPT é uma ferramenta poderosa para chatbots baseados em linguagem natural. Integrá-lo com o WhatsApp pode ajudá-lo a fornecer uma experiência de atendimento ao cliente ainda melhor para seus usuários. Passo 1: Criar um número de telefone do WhatsApp Business Para integrar o ChatGPT com o WhatsApp, você precisará criar uma conta do WhatsApp Business. Se você já possui uma conta do WhatsApp Business, pode pular para o próximo passo. Para criar uma conta do WhatsApp Business, faça o seguinte: Baixe o aplicativo WhatsApp Business na Google Play Store ou na App Store. Siga as instruções na tela para criar uma conta. Verifique seu número de telefone comercial. Passo 2: Configurar o Twilio Sandbox para WhatsApp O Twilio é um serviço de mensagens que permite enviar e receber mensagens do WhatsApp. O Twilio Sandbox é um ambiente seguro onde você pode testar o envio e recebimento de mensagens do WhatsApp sem precisar de um número de telefo...

Conheça o Vite e esqueça todas as outras ferramentas de bundle

Conheça o Vite e esqueça todas as outras ferramentas de bundle O ecossistema JavaScript está em constante evolução, e com isso, surgem novas ferramentas e frameworks que prometem tornar a vida dos desenvolvedores mais fácil. Um exemplo disso é o Vite, uma ferramenta de build ultra-rápida criada pelo criador do Vue.js, Evan You. Neste artigo, iremos explorar como o Vite surgiu e como ele funciona, além de mostrar alguns exemplos práticos de como utilizá-lo.   Confira o blog DougDesign para e veja como conseguir seu primeiro emprego na área de proramação e tecnologia.   O que é o Vite? O Vite é uma ferramenta de build e desenvolvimento para projetos JavaScript. Ele se destaca por ser extremamente rápido, oferecendo uma experiência de desenvolvimento fluida e instantânea. Ao contrário de outras ferramentas de build como o Webpack, o Vite não necessita de uma compilação prévia para executar, e utiliza a dependência nativa do navegador para carregar os módulos. Isso significa que o...