A estruturação de um site usando colunas criadas com CSS e HTML agora é o padrão, e as tabelas foram deixadas para trás para realizar essa função.
Método 1: usar um contêiner flex
.
O uso de um contêiner flex
é um método CSS moderno e já bem suportado, portanto, o mais recomendado.
Em termos gerais, você atribui a propriedade flex
a um contêiner e indica um comportamento de linha; e cada “filho” ou coluna recebe uma determinada largura que fará com que se comportem como tal. Um exemplo deixará tudo mais claro.
Exemplo 1: Colunas com a mesma largura:
A estrutura HTML seria a seguinte:
<div id="container">
<div>
<p>Conteúdo da primeira coluna.</p>
</div>
<div>
<p>Conteúdo da segunda coluna.</p>
</div>
</div>
E o respectivo CSS é o seguinte:
#container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
#container > div {
width: 50%;
}
Neste exemplo, se os filhos/colunas tiverem 50% de largura, isso fará com que eles dividam o espaço em dois, de modo que duas colunas sejam geradas. Se quiséssemos 3 colunas, seria tão simples quanto alterar a largura para 33%, se quiséssemos 4 colunas para 25%, e assim por diante.
Exemplo 2: Colunas de largura diferente. Conteúdo mais barra lateral.
Um uso muito comum de colunas é criar a estrutura de um blog, normalmente uma barra lateral e uma coluna com o conteúdo principal.
Suponha que queiramos que o conteúdo ocupe 75% da largura disponível e que a barra lateral ocupe 25%, o código HTML seria
<div id="container">
<div id="main">
<p>Conteúdo principal.</p>
</div>
<div id="sidebar">
<p>Barra lateral.</p>
</div>
</div>
E o respectivo CSS é o seguinte:
#container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
#main {
width: 75%;
}
#sidebar {
width: 25%;
}
Além disso, os contêineres flexíveis têm muitas propriedades, como a alteração da ordem em que as colunas são exibidas e outros comportamentos úteis. É certamente um bom investimento de tempo aprender mais sobre as propriedades dos contêineres flexíveis.
Método 2: Usando float
.
Para criar colunas, podemos começar com a estrutura HTML e, em seguida, adicionar estilos CSS:
<div id="container" class="clearfix">
<div id="side">
<p>É aqui que o conteúdo será alinhado à esquerda</p>
</div>
<div id="main">
<p>Aqui estará o conteúdo principal ao lado do conteúdo lateral ou do menu lateral</p>
</div>
</div>
Como você viu, há 3 tags que servirão como contêineres:
- Container (Contêiner) – Determina o espaço de trabalho total.
- Side – Largura da lateral e sua localização.
- Main – Largura do conteúdo.
As propriedades que eles devem ter são:
#container {
text-align: left;
width: 100%;
margin: auto;
}
#side {
width: 20%;
background-color: #CCCCCC;
float:right;
}
#main {
width: 75%;
float: left;
background-color: #FFFFFF;
border:#000000 1px solid;
}
.clearfix:after {
content: "";
display: table;
clear: both;
}
Método 3: Usando o Bootstrap.
O Bootstrap é uma das estruturas CSS mais populares e amplamente usadas para design responsivo da Web. Em sua versão 5, ele oferece uma maneira simples e rápida de criar duas colunas em seu site sem a necessidade de escrever muito código CSS personalizado. Para usar o sistema de grade do Bootstrap 5, é necessário criar um contêiner principal. Esse contêiner permite alinhar e centralizar corretamente o conteúdo da sua página. Adicione um <div>
com a classe container
dentro do elemento <body>>
do seu arquivo HTML:
<body>
<div class="container">
<!-- Seu sistema de grade aqui -->
</div>
</body>
Dentro do contêiner principal, crie um elemento <div>
com a classe row
para definir uma linha. Em seguida, dentro dessa linha, crie dois elementos <div>
com as classes col-6
para definir duas colunas de largura igual (o número 6 indica que cada coluna ocupará metade da largura total, pois o Bootstrap usa um sistema de 12 colunas):
<div class="container">
<div class="row">
<div class="col-6">
<!-- Conteúdo da coluna 1 -->
</div>
<div class="col-6">
<!-- Conteúdo da coluna 2 -->
</div>
</div>
</div>
Agora você pode adicionar o conteúdo que quiser em cada coluna. Por exemplo, você pode adicionar texto, imagens ou qualquer outro elemento HTML.