Quando a gente começa a desenvolver uma nova aplicação com área administrativa, a primeira coisa que vem na nossa cabeça é: Como será a UI/UX desse painel? Então recorremos a diversas possibilidades até chegar em uma que atende ao que precisamos.
Neste artigo estamos disponibilizando o template base de um dashboard para áreas administrativas, e detalhe, esse é o mesmo template que vem sendo utilizado na SatellaSoft e seus produtos. O código foi escrito em HTML, CSS e JS, utilizando o Bootstrap como base.
Ter uma interface de dashboard responsivo é fundamental para fornecer uma ótima experiência de usuário em qualquer dispositivo, seja desktop, tablet ou celular. Com o aumento do uso de dispositivos móveis, ter um dashboard que se adapta a diferentes tamanhos de tela é essencial para manter os usuários engajados e satisfeitos. Além disso, uma interface responsiva ajuda a aumentar a acessibilidade e manter a integridade das informações na tela, ou seja, nada de componentes quebrados.
Caso você queira aprender a criar uma aplicação com área administrativa usando banco de dados, status e nível de permissão, confira o nosos curso Criando uma aplicação com área administrativa utilizando o Laravel.
O nosso dash utiliza o Bootstrap 5, sendo totalmente dependente do CSS do framework. Temos também um código Javascript puro para manipular o menu, tornando o JS do framework opcional.
Tudo o que você vai precisar é criar os arquivos:
- style.css
- script.js
- index.html
Agora insira os scripts abaixo em seus respectivos arquvos.
Style
#menu-lateral {
height: 100vh;
overflow-y: auto;
}
#menu-lateral h6 {
color: #d3d3d3;
margin-bottom: 5px;
padding: 5px 0;
}
#menu-lateral li ul li a {
color: #fff
}
#menu-lateral li ul li a:hover {
background-color: #111
}
#menu-lateral .logout-link {
color: rgb(239, 62, 57);
}
@media (max-width: 767.98px) {
#menu-lateral {
position: fixed;
left: -100%;
top: 0;
width: 250px;
height: 100%;
z-index: 111;
background-color: #333;
transition: all 0.3s ease-in-out;
border-right: 2px solid #3d65ac;
}
#menu-lateral.show {
left: 0;
}
}
.btn-logout-top {
color: rgb(239, 62, 57) !important;
border-bottom: 2px solid rgb(239, 62, 57) !important;
}
.btn-logout-top:hover {
color: #FFF !important;
border-bottom: 2px solid #fff !important;
}
.bar {
background: #3d65ac;
background: linear-gradient(90deg, rgb(61, 101, 172) 0%, rgb(239, 62, 57) 100%);
padding: 2px;
}
.breadcrumb {
border: 1px solid #dedede;
background-color: #eee !important;
border-radius: 5px !important;
padding: 15px 10px !important;
}
Script
const menuLateral = document.querySelector('#menu-lateral')
const navToggler = document.querySelector('.navbar-toggler')
navToggler.addEventListener('click', () => {
menuLateral.classList.toggle('show')
})
Index
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo de Dashboard SatellaSoft</title>
<!-- Otimização interna -->
<link rel="preload" href="style.css" as="style">
<link rel="preload" href="script.js" as="script">
<link rel="stylesheet" href="style.css">
<!-- Otimização para o Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
</head>
<body>
<header>
<nav class="navbar navbar-expand-md navbar-dark bg-dark container-fluid">
<div class="container">
<a class="navbar-brand" href="#"><img src="https://satellasoft.com/img/logo/satellasoft-white.svg"
alt="Logo SatelaSoft" style="max-width: 200px;width: 100%;"></a>
<button class="navbar-toggler d-lg-none" type="button" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="btn btn-logout-top" href="#">➞ Logout</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="bar"></div>
<main>
<div class="container">
<div class="row">
<!-- Navbar lateral -->
<nav class="col-md-3 col-lg-3 d-md-block bg-dark sidebar d-lg-block" id="menu-lateral">
<div class="position-sticky pt-3">
<ul class="nav flex-column nav-pills">
<li class="nav-item">
<h6
class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1">
<span>Conteúdo</span>
</h6>
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="#">Item 1</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Item 2</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Item 3</a>
</li>
</ul>
</li>
<li class="nav-item">
<h6
class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1">
<span>Nossos sites</span>
</h6>
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="https://satellasoft.com">SatellaSoft artigos</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://academy.satellasoft.com">SatellaSoft
cursos</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://quiz.satellasoft.com">SatellaSoft quizzes</a>
</li>
</ul>
</li>
<li class="nav-item">
<h6
class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1">
<span>Configurações</span>
</h6>
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="#">Minha conta</a>
</li>
<li class="nav-item">
<a class="nav-link logout-link" href="#logout">➞ Logout</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>
<!-- Conteúdo principal -->
<main role="main" class="col-md-9 col-lg-9 mt-3">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item active" aria-current="page">Library</li>
</ol>
</nav>
<h1>Conteúdo principal</h1>
<p>Conteúdo da página</p>
</main>
</div>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<script src="script.js"></script>
</body>
</html>
Também mantemos uma versão atualizada em nosso repositório no Github, confira: https://github.com/satellasoft/responsive-bootstrap-dashboard.