Aplicação Prática de CSS no Desenvolvimento Web
Neste artigo, exploramos a construção de interfaces web utilizando HTML estruturado combinado com estilização em CSS, além da introdução ao uso do framework Bootstrap para acelerar o desenvolvimento responsivo.
Construção de Interface: Cabeçalho com Menu Secundário
A construção começa com a definição de um cabeçalho superior fixo contendo links de navegação e opções de conta. A seguir, implementa-se uma barra secundária com logo, menu de produtos e área de busca.
<style>
body {
margin: 0;
}
.container {
width: 1226px;
margin: 0 auto;
}
.header {
background: #333;
height: 40px;
}
.header a {
color: #b0b0b0;
line-height: 40px;
display: inline-block;
font-size: 12px;
margin-right: 10px;
text-decoration: none;
}
.header a:hover {
color: white;
}
.sub-header {
height: 100px;
background-color: #f5f5f5;
}
.logo {
float: left;
width: 234px;
height: 100px;
}
.logo img {
width: 56px;
height: 56px;
margin-top: 22px;
}
.menu-list {
float: left;
line-height: 100px;
}
.menu-list a {
display: inline-block;
padding: 0 10px;
color: #333;
font-size: 16px;
text-decoration: none;
}
.menu-list a:hover {
color: #ff6700;
}
.search {
float: right;
height: 100px;
}
</style>
<div class="header">
<div class="container">
<div class="menu">
<a href="#">Mi Store</a>
<a href="#">MIUI</a>
</div>
<div class="account">
<a href="#">Login</a>
<a href="#">Register</a>
</div>
<div style="clear: both;"></div>
</div>
</div>
<div class="sub-header">
<div class="container">
<div class="logo">
<a href="#"><img src="images/logo-mi2.png" alt="Logo"></a>
</div>
<div class="menu-list">
<a href="#">Smartphones</a>
<a href="#">Tablets</a>
</div>
<div class="search"></div>
<div style="clear: both;"></div>
</div>
</div>
Seção de Destaques e Cards Informativos
Após o cabeçalho, é comum incluir uma seção de destaques com imagens rotativas e cards interativos. Utiliza-se posicionamento flutuante e controle de opacidade para melhorra a experiência do usuário ao passar o mouse.
.highlight-slider {
height: 460px;
overflow: hidden;
}
.news-section {
margin-top: 14px;
}
.channel-grid {
float: left;
width: 228px;
background-color: #5f5750;
padding: 3px;
}
.grid-item {
float: left;
width: 76px;
height: 82px;
text-align: center;
}
.grid-item a {
display: inline-block;
color: #fff;
font-size: 12px;
padding-top: 18px;
opacity: 0.7;
text-decoration: none;
}
.grid-item a:hover {
opacity: 1;
}
.grid-item img {
display: block;
margin: 0 auto 4px;
width: 24px;
height: 24px;
}
Uso Avançado de Pseudo-Classes CSS
As pseudo-classes como :hover e :after são essenciais para criar interações dinâmicas sem JavaScript. Um exemplo prático é a exibição condicional de conteúdo, como códigos QR ao passar o mouse sobre um link.
.app-link {
position: relative;
}
.download-qrcode {
position: absolute;
top: 100%;
right: 0;
width: 100px;
height: 100px;
display: none;
z-index: 10;
}
.app-link:hover .download-qrcode {
display: block;
}
.app-link:hover .label {
color: #ff6700;
}
Posicionamento com CSS: fixed, relative e absolute
O posicionamento absoluto permite ancorar elementos filhos dentro de contêineres relativos. Já o posicionamento fixo mantém elementos visíveis durante o scroll, ideal para botões de "voltar ao topo" ou modais.
.back-to-top {
position: fixed;
bottom: 50px;
right: 10px;
width: 60px;
height: 60px;
background-color: #fff;
border: 1px solid #ccc;
cursor: pointer;
}
.modal-overlay {
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background-color: rgba(0,0,0,0.7);
z-index: 999;
}
.modal-content {
position: fixed;
top: 200px;
left: 0; right: 0;
width: 500px;
height: 300px;
margin: 0 auto;
background-color: white;
z-index: 1000;
}
Estilização de Bordas e Cores
Bordas podem ser usadas criativamente para indicar estados interativos. Por exemplo, adicionar uma borda lateral visível apenas no :hover, inicialmente transparente.
.nav-item {
width: 500px;
height: 50px;
background-color: #5f5750;
margin: 100px 0;
border-left: 2px solid transparent;
transition: border-color 0.3s ease;
}
.nav-item:hover {
border-left: 2px solid red;
}
Introdução ao Bootstrap 3
Bootstrap simplifica significativamente o desenvolvimento frontend com classes pré-definidas para componentes comuns como botões, formulários, grades e painéis.
Componentes Essenciais do Bootstrap
- Botões:
btn btn-primary btn-success btn-danger - Grade Responsiva:
.col-md-6 .col-sm-12 - Contêineres:
.container(fixo) e.container-fluid(total) - Painéis:
.panel .panel-heading .panel-body - Navegação:
.navbar navbar-defaultcom suporte a dropdowns
Exemplo de Formulário de Login com Bootstrap
<div class="container" style="max-width: 400px; margin-top: 100px;">
<div class="panel panel-default">
<div class="panel-heading"><h3 class="text-center">Acesso ao Sistema</h3></div>
<div class="panel-body">
<form>
<div class="form-group">
<label for="user">Usuário</label>
<input type="text" class="form-control" id="user" placeholder="Informe seu login">
</div>
<div class="form-group">
<label for="pass">Senha</label>
<input type="password" class="form-control" id="pass" placeholder="Digite sua senha">
</div>
<button type="submit" class="btn btn-primary btn-block">Entrar</button>
</form>
</div>
</div>
</div>
Interface de Administração com Tabelas e Ícones
Para sistemas administrativos, Bootstrap oferece tabelas estilizadas (table-bordered table-hover) e paginação integrada. Complementando com Font Awesome, pode-se incluir ícones intuitivos nas ações.
<link rel="stylesheet" href="font-awesome/css/font-awesome.min.css">
<!-- Dentro de uma célula de tabela -->
<td>
<a href="#" class="btn btn-warning btn-xs"><i class="fa fa-edit"></i> Editar</a>
<a href="#" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> Excluir</a>
</td>
Dependências JavaScript
Funcionalidades dinâmicas do Bootstrap (como dropdowns e modais) dependem do jQuery. É necessário carregar o jQuery antes do JavaScript do Bootstrap.
<script src="jquery.min.js"></script>
<script src="bootstrap.min.js"></script>
Próximos Passos: Integração com JavaScript
Com HTML estruturado e CSS definindo aparência, o próximo passo é tornar a interface dinâmica com JavaScript — linguagem que manipula o DOM, responde a eventos e comunica-se com servidores. Bibliotecas como jQuery facilitam essa etapa com sintaxe concisa e compatibilidade entre navegadores.