Como desenvolver sites utilizando o Bootstrap 3

No artigo Desenvolvendo com Bootstrap 3: um framework front-end que vale a pena! fiz uma breve apresentação do framework apontando seus pontos positivos e negativos, explicando o funcionamento do sistema de grids e como se inicia um projeto.

Mas agora chegou a hora de colocar a mão na massa pra valer!

Em 6 etapas, você desenvolverá o seu primeiro site utilizando o Bootstrap.

1. Fase de concepção

Antes de sair desenvolvendo qualquer página, é importante demandar tempo em entender a real necessidade e objetivo do que será criado.

Esta é uma das fases mais importantes do ciclo de vida de um projeto e constantemente negligenciadas pelos desenvolvedores, no anseio de se ter um produto a ser usado em pouco tempo.

Mas pare e pense: nada adianta uma página bem desenvolvida se ela não atende o objetivo de seu idealizador ou a real necessidade do usuário.

Portanto se inspire, pense, rabisque, faça brainstorm’s, peça opiniões, enfim, demande tempo… o quanto necessário, pois valerá a pena, pode confiar. ;)

Homem rascunhando em papel o desenho de um aplicativo

Como exemplo de caso, desenvolveremos um site com o objetivo de divulgar informações pessoais e profissionais de um indivíduo. A fase de concepção portanto se dá em descobrir quais serão esses dados e quais suas importâncias (para já se ter uma idéia da organização e disposição do conteúdo).

Dados a serem disponibilizados: nome, cargo, foto, resumo, telefone, email, localidade, experiências profissionais, habilidades, paixões e hobbies.

2. Defina a estrutura do layout pensando em grids

Com a concepção elaborada, chegou a hora de definir o layout, isto é, a estrutura visual de seu site.

Lembre-se de sempre pensar em grids! O Bootstrap trabalha com até 12 colunas e seu layout deve respeitar esses limites. (O sistema de grids foi explicado no artigo citado no início desta postagem - ver artigo).

Através de desenhos bem simples (chamados de wireframes) feitos à mão ou no próprio computador, você definirá onde e como ficará cada componente de seu site como o menu de navegação, rodapé, conteúdo e o que mais tiver.

Imagem mostrando o layout sobrepondo os grids do bootstra

No wireframe acima é possível perceber a distribuição do conteúdo respeitando o sistema de grids (colunas de contorno azul), dividido em 12 porções iguais.

3. Preparando o ambiente

Em sua forma mais simples de utilização, preparar um ambiente utilizando Bootstrap é extremamente fácil e rápido.

Acesse a página oficial do framework (http://www.getbootstrap.com/) e faça o download de sua versão compilada.

Seta apontando para o botão de download do Bootstrap

Descompacte o arquivo zip no local desejado e seu ambiente está pronto! Simples, não? =D

4. Criando a estrutura do HTML

Crie o arquivo “index.html” no diretório raíz e insira o código ‘padrão’ da estrutura do Bootstrap disponível abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
        <title>Bootstrap - Template básico</title>
 
        <!-- Bootstrap -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
 
        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>
    <body>
        <h1>Olá, mundo!</h1>
 
        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <!-- Include all compiled plugins (below), or include individual files as needed -->
        <script src="js/bootstrap.min.js"></script>
    </body>
</html>

Estrutura pronta, vamos iniciar a codificação do layout.

5. Codificando a estrutura do layout e grids

Para o exemplo, vamos dividir esta etapa em quatro itens:

5.1. Definindo os componentes principais

Nosso layout possui 3 componentes horizontais:

1. cabeçalho: header;
2. seção principal: section;
3. rodapé: footer.

Divisões estruturais da página em divs horizontais

O código a ser inserido dentro do <body></body> de nosso arquivo “index.html” para realizar esta separação é bastante simples:

1
2
3
4
5
6
7
8
9
10
<header>
    <nav>HEADER > NAV</nav>
</header>
 
<section>
    <aside>SECTION > ASIDE</aside>
    <article>SECTION > ARTICLE</article>
</section>
 
<footer>FOOTER</footer>

Com as estruturas horizontais prontas, partimos para codificação de cada componente e suas divisões em grids, ou seja, as divisões em colunas do layout.

5.2. Codificando o cabeçalho (header) com a barra de navegação

O Bootstrap já possui uma barra de navegação (ou navbar) como um componente pronto para uso (e isso significa que você não precisará codificar uma linha sequer para isso). ;)

Basta entrar na documentação disponível no site oficial http://www.getbootstrap.com e procurar pela navbar na página de componentes.

Copie e cole o código da barra de navegação dentro de sua header.

Perceba que a documentação disponibiliza algumas customizações para cada componente, um exemplo é a possibilidade de tornar a barra de navegação fixa ao topo ou utilizá-la com suas cores invertidas, como é o nosso caso.

Dois pontos importantes a serem observados:

  1. Para que os elementos fiquem centralizados na página, basta utilizar a classe “container” nos elementos superiores de cada seção.

  2. Quando utiliza-se a barra de navegação fixa no topo, é necessário adicionar um espaçamento (margin-top) ao elemento inferior para evitar que a mesma sobreponha a navbar.

O código para nosso exemplo ficará assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<header><!-- Cabeçalho -->
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">nome do site</a>
            </div>
 
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="#">Link 1</a></li>
                    <li><a href="#">Link 2</a></li>
                    <li><a href="#">Link 3</a></li>
                    <li><a href="#">Link 4</a></li>
                </ul>
            </div><!-- /.navbar-collapse -->
        </div><!-- /.container -->
    </nav>
</header><!-- Cabeçalho-fim -->

5.3. Codificando o componente central (section) e seus grids

Chegou o momento de trabalhar efetivamente com os grids (visto que não precisamos dele no cabeçalho, uma vez que utilizamos o componente pronto).

Conforme o desenho do layout, o componente central, definido na estrutura do HTML como section, deverá receber duas colunas:

1. aside (elemento à esquerda): onde virão os detalhes do profissional como a foto, nome, e-mail, telefone, etc;

2. article (elemento à direita): elemento principal, onde virão os textos e descrições mais detalhadas.

Divisão em grids do layout utilizando o bootstrap

Lembrando as regras do sistema de grids: as colunas devem estar inseridas na <div class=”row”></div> e a soma das mesmas não podem ultrapassar 12.

Para o exemplo, utilizaremos a seguinte proporção: ‘md-3’ para o elemento aside e ‘md-9’ para o article (somando 12 no total, preenchendo assim a largura da página).

Obs: foi adicionado o margin-top à section, evitando que a mesma sobreponha a barra de navegação.

O código de nossa section portanto ficará assim:

1
2
3
4
5
6
7
8
<section class="container" style="margin-top:100px;">
    <aside class="col-md-3">
        aside
    </aside>
    <article class="col-md-9">
        article
    </article>
</section>

5.4. Codificando o rodapé (footer)

Nosso rodapé (footer) seguirá a mesma lógica do elemento anterior (section), porém as proporções serão invertidas. Utilizaremos ‘md-9’ para a coluna da data de última atualização e ‘md-3’ para a coluna dos créditos.

Tendo o seguinte código:

1
2
3
4
5
6
7
<footer class="container">
    <hr>
    <div class="row">
        <div class="col-xs-9">Última atualização</div>
        <div class="col-xs-3 text-right">Créditos</div>
    </div>
</footer>

5.5. Código completo

O resultado é o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
        <title>Bootstrap - Template básico</title>
 
        <!-- Bootstrap -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
 
        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>
    <body>
 
        <header><!-- Cabeçalho -->
            <nav class="navbar navbar-inverse navbar-fixed-top">
                <div class="container">
                    <!-- Brand and toggle get grouped for better mobile display -->
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                            <span class="sr-only">Toggle navigation</span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <a class="navbar-brand" href="#">nome do site</a>
                    </div>
 
                    <!-- Collect the nav links, forms, and other content for toggling -->
                    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                        <ul class="nav navbar-nav navbar-right">
                            <li><a href="#">Link 1</a></li>
                            <li><a href="#">Link 2</a></li>
                            <li><a href="#">Link 3</a></li>
                            <li><a href="#">Link 4</a></li>
                        </ul>
                    </div><!-- /.navbar-collapse -->
                </div><!-- /.container -->
            </nav>
        </header><!-- Cabeçalho-fim -->
 
        <section class="container" style="margin-top:100px;">
            <aside class="col-md-3">
                aside
            </aside>
            <article class="col-md-9">
                article
            </article>
        </section>
 
        <footer class="container">
            <hr>
            <div class="row">
                <div class="col-xs-9">Última atualização</div>
                <div class="col-xs-3 text-right">Créditos</div>
            </div>
        </footer>
 
        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <!-- Include all compiled plugins (below), or include individual files as needed -->
        <script src="js/bootstrap.min.js"></script>
    </body>
</html>

6. Insira o conteúdo e publique!

Layout codificado, agora basta inserir os conteúdos e publicar.

Resultado final:

Layout final desenvolvido em bootstrap

Ver demo Baixar projeto Repositório no GitHub

O mais legal: seu site está funcional e responsivo para diversos dispositivos com resoluções diferentes, seja smartphones, tablets, notebooks ou desktops.