2
respostas

Tentando entender o espaçamento entre os elementos em linha

Estou tentando entender o comportamento do código implementado no último exercício do curso - criação da página Portfolio.

  • Considerando que a largura do container UL é de 720px,

  • considerando que este contém elementos LI com display INLINE-BLOCK,

  • considerando a exibição de dois elementos LI por linha,

  • considerando um único espaçamento de 16 px entre os dois elementos,

  • efetuei o cálculo da porcentagem da largura de cada um dos dois elementos da linha da seguinte forma:

(720px-16px)/2, o que resulta em 352px, que correspondem a 48,888...% da largura do elemento container.

Ocorre que para cada um dos dois elementos por linha, o html entende que a largura máxima possível é ~48,5615% (para cada elemento).

A diferença é de aproximadamente 4,75px, o que é possível observar pela soma dos valores de border+padding+largura-do-elemento , cujos valores são 301,625 + (2x8) + (2x32). Destaco que só existe margem entre os elementos. Não há margem externa. (16px computado uma única vez)

Considerando que o valor fracionário pode ser decorrência de arredondamento, ainda restam os 4px não configurados e considerados pelo html.

Utilizando o recurso "Inspecionar elemento" observa-se um espaço não configurado entre o primeiro e segundo elementos da linha que corresponde a aproximadamente 5px.

Nota: observei que quando os elementos na linha não ocupam o espaço da linha toda, o espaço que sobra sempre fica à direita dos itens (não entre eles), o que faz sentido considerando-se o fluxo normal da esquerda para a direita.

Por favor, me ajudem a entender esse comportamento: por que esse espaço está ocorrendo entre os elementos?

2 respostas

Código portfolio.css

/* PORTFOLIO.CSS contém apenas os parâmetros específicos da página portfolio.html */
ul.portfolio li {
    display: inline-block;
    border: 8px solid black;
    background-color: #FAFFFC;
    width: 48.5615%; /* 0,488636363636 - A largura menos o espaço entre os elementos dividida pelo número de elementos (720px-16px)/2 = 352 <=> 48,888...% da largura disponível */
    box-sizing: border-box;
    padding: 16px;
}

ul.portfolio img {
    width: 100%;
}

ul.portfolio{
    margin-top: 15px;
}

li#projeto-1 {
    margin-right: 16px;
}
li#projeto-3 {
    margin-right: 16px;
}

li#projeto-1 {
    margin-bottom: 16px;
}
li#projeto-2 {
    margin-bottom: 16px;
}

Código site.css:

/* SITE.CSS contém as configurações comuns a todas as páginas html. */

body {
    font-family: "Crimson Text", "Times New Roman", serif;
    background-color: #F2FFFC;
    font-size: 120%;
    line-height: 1.5;
}

h1, h2 {
    font-size: 30px;
    font-family: "Open Sans Condensed", "Arial", sans-serif;
}

h2 {
    /*clear: left;
    clear: right;*/
    clear: both; /* Mesmo efeito da classe clearfix - conveniente para não ter que alterar todos os h2 do projeto */
    margin-top: 30px;
}

h1.titulo-principal {
    font-size: 60px;
    text-align: center;
    background-color: #851944;
    color: #FFF;
    font-family: "Open Sans Condensed", "Arial", sans-serif;
    padding: 25px;
    border-bottom: 10px solid black;
    margin-bottom: 20px;
    text-transform: uppercase;
}

div.container {
    padding: 20px 0;
    width: 720px;
    margin-bottom: 30px;
    margin-left: auto;
    margin-right: auto;
}

main {
    width: 80%;
    float: left;
    padding-bottom: 50px;
}

main a {
    color: #851944;
}

strong {
    font-weight: bold;
}

em {
    font-style: italic;
}

p {
    text-align: justify;
    margin-top: 20px;
}

aside.navegacao-site {
    background-color: #3C1D3D;
    color: #F2FFFC;
    text-align: center;
    padding: 20px;
    float: right;
    width: 17%;
    box-sizing: border-box;
    border-bottom: 10px solid black;
    border-left: 10px solid black;
}

aside.navegacao-site h1{
    text-transform: uppercase;
}

img#minha-foto {
    float: right;
    width: 20%;
    box-sizing: border-box;
    border-bottom: 10px solid black;
    border-left: 10px solid black;
}

aside h1 {
    font-size: 30px;
    margin-bottom: 25px;    
}

aside ul li{
    list-style-type:none;
}

aside a {
    color: inherit;
    font-family: "Open Sans Condensed", sans-serif;
}

nav a {
    color: #F2FFFC;
    text-transform: lowercase;
}

nav li {
    display: block;
}

ul.redes-sociais li{
    display: inline;
}

ul.redes-sociais a {
    width: 40px;
    height: 40px;
    display: inline-block;
    color: transparent; /* text-indent: -99999; */
}

a.icone-github {
    background-image: url(../Imagens/github.png); /* Image replacement */
}

a.icone-twitter {
    background-image: url(../Imagens/twitter.png); /* Image replacement */
}

a.icone-linkedin {
    background-image: url(../Imagens/linkedin.png); /* Image replacement */
}

footer.main-footer {
    background-color: #000;
    color: #F2FFFC;
    padding: 20px;
    text-align: center;
    /* clear: both; comando substituído pela classe clearfix */

    position: fixed;
    bottom: 0;
    width: 100%;
}

.clearfix {
    clear: both;
}

Joga seu código em u https://codesandbox.io ou https://stackblitz.com/ (mesmo que o html seja igual ao da aula) pra gente poder dar uma analisada.