CSS Barra de navegação horizontal
Existem duas maneiras de
criar uma barra de navegação horizontal. Usando itens de lista embutidos ou flutuantes.
<!DOCTYPE
html>
<html>
<head>
<style>
ul
{
list-style-type: none;
margin: 0;
padding: 0;
}
li
{
display: inline;
}
</style>
</head>
<body>
<ul>
<li><a
href="#home">Home</a></li>
<li><a
href="#notícia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajuda">Ajuda</a></li>
</ul>
</body>
</html>
display:
inline; - Por padrão, os elementos <li>
são elementos de bloco. Aqui, removemos as quebras de linha antes e depois
de cada item da lista, para exibi-los em uma linha
Itens
de lista flutuante
Outra
forma de criar uma barra de navegação horizontal é flutuar os elementos
<li> e especificar um layout para os links de navegação:
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
}
li {
float: left;
}
li a {
display: block;
padding: 8px;
background-color: #dddddd;
}
</style>
</head>
<body>
<ul>
<li><a
href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajuda">Ajuda</a></li>
</ul>
<p>Nota: Se !DOCTYPE não
for especificado, itens flutuantes poderão produzir resultados
inesperados</p>
<p>Uma cor de fundo é
adicionada aos links para mostrar a área do link. Toda a área do link é
clicável, não apenas o texto.</p>
<p>Nota: overflow:hidden
é adicionado ao elemento ul para evitar que os elementos li saiam da
lista.</p>
</body>
</html>
float:
left;- Use float para fazer com que os
elementos do bloco flutuem um ao lado do outro
display: block;- Permite-nos
especificar o preenchimento (e altura, largura, margens, etc. se desejar)
padding: 8px;- Especifique algum
preenchimento entre cada elemento <a>, para torná-los bonitos
background-color: #dddddd;- Adicione uma cor de
fundo cinza a cada elemento <a>
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style-type:
none;
margin: 0;
padding: 0;
overflow: hidden;
background-color:
#dddddd;
}
li {
float: left;
}
li a {
display: block;
padding: 8px;
}
</style>
</head>
<body>
<ul>
<li><a
href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajuda">Ajuda</a></li>
</ul>
<p>Uma cor de fundo é adicionada à lista em vez de cada
link para criar uma cor de fundo de largura total.</p>
<p>Nota: overflow:hidden é adicionado ao elemento ul
para evitar que os elementos li saiam da lista.</p>
</body>
</html>
Exemplos
de barras de navegação horizontais
Crie
uma barra de navegação horizontal básica com fundo escuro e altere a cor de
fundo dos links quando o usuário passar o mouse sobre eles:
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style-type:
none;
margin: 0;
padding: 0;
overflow: hidden;
background-color:
#333;
}
li {
float: left;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration:
none;
}
li a:hover {
background-color:
#111;
}
</style>
</head>
<body>
<ul>
<li><a
class="active" href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajuda">Ajuda</a></li>
</ul>
</body>
</html>
Link
de navegação ativo/atual
Adicione
uma classe "ativa" ao link atual para que o usuário saiba em qual
página ele está:
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style-type:
none;
margin: 0;
padding: 0;
overflow: hidden;
background-color:
#333;
}
li {
float: left;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration:
none;
}
li a:hover:not(.active) {
background-color:
#111;
}
.active {
background-color:
#04AA6D;
}
</style>
</head>
<body>
<ul>
<li><a
class="active" href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajuda">Ajuda</a></li>
</ul>
</body>
</html>
Links
de alinhamento à direita
Alinhe
os links à direita flutuando os itens da lista para a direita ( float:right;
):
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style-type:
none;
margin: 0;
padding: 0;
overflow: hidden;
background-color:
#333;
}
li {
float: left;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration:
none;
}
li a:hover:not(.active) {
background-color:
#111;
}
.active {
background-color:
#04AA6D;
}
</style>
</head>
<body>
<ul>
<li><a
href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li
style="float:right"><a class="active"
href="#ajuda">Ajuda</a></li>
</ul>
</body>
</html>
Divisórias de fronteira
Adicione a border-right
propriedade
a <li> para criar divisores de links:
<!DOCTYPE html>
<html>
<head>
<style>
ul {
list-style-type:
none;
margin: 0;
padding: 0;
overflow: hidden;
background-color:
#333;
}
li {
float: left;
border-right:1px
solid #bbb;
}
li:last-child {
border-right: none;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration:
none;
}
li a:hover:not(.active) {
background-color:
#111;
}
.active {
background-color:
#04AA6D;
}
</style>
</head>
<body>
<ul>
<li><a
class="active" href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li
style="float:right"><a
href="#ajudat">Ajuda</a></li>
</ul>
</body>
</html>
Barra
de navegação fixa
Faça
com que a barra de navegação fique na parte superior ou inferior da página,
mesmo quando o usuário rola a página:
Parte superior fixa
<!DOCTYPE html>
<html>
<head>
<style>
body {margin:0;}
ul {
list-style-type:
none;
margin: 0;
padding: 0;
overflow: hidden;
background-color:
#333;
position: fixed;
top: 0;
width: 100%;
}
li {
float: left;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration:
none;
}
li a:hover:not(.active) {
background-color:
#111;
}
.active {
background-color:
#04AA6D;
}
</style>
</head>
<body>
<ul>
<li><a
class="active" href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajuda">Ajuda</a></li>
</ul>
<div
style="padding:20px;margin-top:30px;background-color:#1abc9c;height:1500px;">
<h1>Barra de
navegação superior fixa</h1>
<h2>Role esta
página para ver o efeito</h2>
<h2>A barra
de navegação permanecerá no topo da página durante a rolagem</h2>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text some text some text some
text..</p>
</div>
</body>
</html>
Fundo Fixo
<!DOCTYPE html>
<html>
<head>
<style>
body {margin:0;}
ul {
list-style-type:
none;
margin: 0;
padding: 0;
overflow: hidden;
background-color:
#333;
position: fixed;
bottom: 0;
width: 100%;
}
li {
float: left;
}
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration:
none;
}
li a:hover:not(.active) {
background-color:
#111;
}
.active {
background-color:
#04AA6D;
}
</style>
</head>
<body>
<ul>
<li><a
class="active" href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajuda">Ajuda</a></li>
</ul>
<div
style="padding:20px;background-color:#1abc9c;height:1500px;">
<h1>Barra de
navegação inferior fixa</h1>
<h2>A barra
de navegação permanecerá na parte inferior da página durante a rolagemRole esta
página para ver o efeito</h2>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text
some text some text some text..</p>
<p>Some text some text some text some
text..</p>
</div>
</body>
</html>
Barra de navegação horizontal cinza
Um
exemplo de barra de navegação horizontal cinza com uma borda cinza fina:
<!DOCTYPE
html>
<html>
<head>
<style>
ul
{
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid #e7e7e7;
background-color: #f3f3f3;
}
li
{
float: left;
}
li
a {
display: block;
color: #666;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li
a:hover:not(.active) {
background-color: #ddd;
}
li
a.active {
color: white;
background-color: #04AA6D;
}
</style>
</head>
<body>
<ul>
<li><a class="active"
href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajuda">Ajuda</a></li>
</ul>
</body>
</html>
Barra de navegação
pegajosa
Adicione position:
sticky;
a <ul> para criar uma barra de navegação fixa.
<!DOCTYPE
html>
<html>
<head>
<style>
body
{
font-size: 28px;
}
ul
{
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
position: -webkit-sticky; /* Safari */
position: sticky;
top: 0;
}
li
{
float: left;
}
li
a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li
a:hover {
background-color: #111;
}
.active
{
background-color: #4CAF50;
}
</style>
</head>
<body>
<div
class="header">
<h2>Rolar para baixo</h2>
<p>Role para baixo para ver o efeito
pegajoso.</p>
</div>
<ul>
<li><a class="active"
href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
</ul>
<h3>Sticky
Navigation Bar Example</h3>
<p>The
navbar will <strong>stick</strong> to the top when you reach its
scroll position.</p>
<p><strong>Note:</strong>
Internet Explorer do not support sticky positioning and Safari requires a
-webkit- prefix.</p>
<p>Some
text to enable scrolling. Lorem ipsum dolor sit amet, illum definitiones no
quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae
gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec
et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some
text to enable scrolling. Lorem ipsum dolor sit amet, illum definitiones no
quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae
gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec
et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some
text to enable scrolling. Lorem ipsum dolor sit amet, illum definitiones no
quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae
gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec
et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
</body>
</html>
Navegação superior responsiva
Como usar consultas de mídia CSS para criar uma navegação superior
responsiva.
<!DOCTYPE
html>
<html>
<head>
<meta
name="viewport" content="width=device-width,
initial-scale=1.0">
<style>
body
{margin: 0;}
ul.topnav
{
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
ul.topnav
li {float: left;}
ul.topnav
li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
ul.topnav
li a:hover:not(.active) {background-color: #111;}
ul.topnav
li a.active {background-color: #04AA6D;}
ul.topnav
li.right {float: right;}
@media
screen and (max-width: 600px) {
ul.topnav li.right,
ul.topnav li {float: none;}
}
</style>
</head>
<body>
<ul
class="topnav">
<li><a class="active"
href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a href="#contato">Contato</a></li>
<li class="right"><a
href="#ajuda">Ajuda</a></li>
</ul>
div
style="padding:0 16px;">
<h2>Exemplo de navegação superior
responsiva</h2>
<p>Este exemplo usa consultas de mídia
para empilhar o topnav verticalmente quando o tamanho da tela é 600px ou
menos.</p>
<p>Você aprenderá mais sobre consultas
de mídia e web design responsivo posteriormente em nosso tutorial
CSS.</p>
<h4>Redimensione a janela do navegador
para ver o efeito.</h4>
</div>
</body>
</html>
Sidenav responsivo
Como usar consultas de mídia CSS para criar uma navegação lateral
responsiva.
<!DOCTYPE
html>
<html>
<head>
<meta
name="viewport" content="width=device-width,
initial-scale=1.0">
<style>
body
{margin: 0;}
ul.sidenav
{
list-style-type: none;
margin: 0;
padding: 0;
width: 25%;
background-color: #f1f1f1;
position: fixed;
height: 100%;
overflow: auto;
}
ul.sidenav
li a {
display: block;
color: #000;
padding: 8px 16px;
text-decoration: none;
}
ul.sidenav
li a.active {
background-color: #4CAF50;
color: white;
}
ul.sidenav
li a:hover:not(.active) {
background-color: #555;
color: white;
}
div.content
{
margin-left: 25%;
padding: 1px 16px;
height: 1000px;
}
@media
screen and (max-width: 900px) {
ul.sidenav {
width: 100%;
height: auto;
position: relative;
}
ul.sidenav li a {
float: left;
padding: 15px;
}
div.content {margin-left: 0;}
}
@media
screen and (max-width: 400px) {
ul.sidenav li a {
text-align: center;
float: none;
}
}
</style>
</head>
<body>
<ul
class="sidenav">
<li><a class="active"
href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li><a
href="#contato">Contato</a></li>
<li><a
href="#ajudat">Ajuda</a></li>
</ul>
<div
class="content">
<h2>Exemplo de Sidenav
responsivo</h2>
<p>Este exemplo usa consultas de mídia
para transformar o sidenav em uma barra de navegação superior quando o tamanho
da tela é 900px ou menos.</p>
<p>Também adicionamos uma consulta de
mídia para telas de 400px ou menos, que empilhará verticalmente e centralizará
os links de navegação.</p>
<p>Você aprenderá mais sobre consultas
de mídia e web design responsivo posteriormente em nosso tutorial
CSS.</p>
<h3>Redimensione a janela do navegador
para ver o efeito.</h3>
</div>
</body>
</html>
Barra de navegação suspensa
Como adicionar um menu suspenso dentro de uma barra de navegação.
<!DOCTYPE
html>
<html>
<head>
<style>
body
{
background-color:white;
}
ul
{
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #38444d;
}
li
{
float: left;
}
li
a, .dropbtn {
display: inline-block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
li
a:hover, .dropdown:hover .dropbtn {
background-color: red;
}
li.dropdown
{
display: inline-block;
}
.dropdown-content
{
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown-content
a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.dropdown-content
a:hover {background-color: #f1f1f1;}
.dropdown:hover
.dropdown-content {
display: block;
}
</style>
</head>
<body>
<ul>
<li><a
href="#home">Home</a></li>
<li><a
href="#noticia">Notícia</a></li>
<li class="dropdown">
<a href="javascript:void(0)"
class="dropbtn">Dropdown</a>
<div
class="dropdown-content">
<a href="#">Link
1</a>
<a href="#">Link
2</a>
<a href="#">Link
3</a>
</div>
</li>
</ul>
<h3>Menu
suspenso dentro de uma barra de navegação</h3>
<p>Passe
o mouse sobre o link "Dropdown" para ver o menu suspenso.</p>
</body>
</html>