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

Como ganhar dinheiro com desenvolvimento de software

Como ganhar dinheiro com desenvolvimento de software Se você é um programador ou desenvolvedor de software, pode se perguntar como ganhar dinheiro com essa habilidade. A boa notícia é que existem muitas oportunidades para quem sabe programar, e as possibilidades só aumentam com o tempo.   Confira o blog DougDesign para e veja como conseguir seu primeiro emprego na área de proramação e tecnologia.   Neste artigo, vamos explorar algumas das melhores estratégias para ganhar dinheiro como desenvolvedor de software em 2023. Desde trabalhar em tempo integral em uma empresa de tecnologia até criar seu próprio negócio de software, há muitas opções para escolher. 1. Trabalhar em tempo integral em uma empresa de tecnologia Trabalhar em uma empresa de tecnologia é uma das maneiras mais populares para ganhar dinheiro como desenvolvedor de software. Existem muitas empresas que estão sempre procurando desenvolvedores de software para ajudar a criar e manter seus produtos. Além de um salário...

Tudo o que você precisa saber sobre renderização no lado do servidor com ReactJS

Tudo o que você precisa saber sobre renderização no lado do servidor com ReactJS A renderização no lado do servidor (SSR) com ReactJS é uma técnica que pode melhorar significativamente o desempenho de sua aplicação, especialmente em termos de tempo de carregamento inicial. Neste artigo, discutiremos em detalhes o que é a renderização no lado do servidor com ReactJS, por que ela é importante e como implementá-la em sua própria aplicação.   Confira o blog DougDesign para e veja como conseguir seu primeiro emprego na área de proramação e tecnologia.   O que é a renderização no lado do servidor com ReactJS? A renderização no lado do servidor com ReactJS é uma técnica que permite que sua aplicação seja renderizada no servidor, em vez de no navegador do usuário. Isso significa que, em vez de enviar apenas o HTML e o JavaScript para o navegador, você pode enviar o HTML totalmente renderizado para o usuário. A renderização no lado do servidor pode melhorar significativamente o desempe...

Como Criar um Menu Horizontal com Sub Menu Utilizando CSS3

Clique aqui e veja aqui o código em funcionamento. Como Criar um Menu com Sub-menu? No princípio das minhas peripécias com front-end, eu tive bastante dificuldade para criar até mesmo um simples menu horizontal com CSS seguindo nossos amados tutoriais nas "interwebs" da vida. Criar um menu com Drop-down então, com o que eu sabia, era impensável! Antes de estudar bem o CSS, eu nem imaginava a capacidade que ele tinha. Se você não sabe o que é drop-down: Drop-down em tradução livre e literal significa suspenso. Mas no caso de um menu com  função  drop-down, é um menu com um sub-menu acoplado para determinados items, que se revela ao passar o mouse ou clicar nesses mesmo itens. Quebrei muito a cabeça com tutoriais e códigos prontos e não conseguia entender a lógica do sistema e sem entender essa lógica não era possível adaptá-lo para meus fins e acabava por utilizar outras saídas que até resolviam o problema, porém davam muito trabalho para pouco resultado. Ut...