Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dois elementos com width de 50% não cabem lado a lado

Olá! Não estou entendendo por que dois elementos com width de 50% não cabem lado a lado. Segue códigos abaixo:

HTML

<!DOCTYPE html>
<html>

<head>
    <title>Portfolio - João da Silva</title>
    <meta charset="UTF-8">
    <link rel="icon" href="img/favicon.png">
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/site.css">
    <link rel="stylesheet" href="css/portfolio.css">
    <link href="https://fonts.googleapis.com/css?family=Open+Sans+Condensed:700" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Crimson+Text:400,400i,600" rel="stylesheet">
</head>

<body>
    <main class="principal">
        <h1 class="titulo-principal">Portfolio</h1>
        <div class="conteudo-principal">
            <p>Veja abaixo a lista dos meus projetos mais relevantes:</p>
            <ul class="portfolio">
                <li>
                    <a href="#">
                        <figure>
                            <img src="img/bmw.png" alt="Imagem do site da BMW">
                            <figcaption>BMW.com: reformulação de design e implementação de HTML, CSS e JavaScript</figcaption>
                        </figure>
                    </a>
                </li>
                <li>
                    <a href="#">
                        <figure>
                            <img src="img/uol.png" alt="Imagem do site da UOL">
                            <figcaption>UOL.com.br: reformulação de design e implementação de HTML, CSS e JavaScript</figcaption>
                        </figure>
                    </a>
                </li>
                <li>
                    <a href="#">
                        <figure>
                            <img src="img/ibm.png" alt="Imagem do site da IBM">
                            <figcaption>IBM.com: aplicação de progressive enhancement em conjunto com aplicação back-end</figcaption>
                        </figure>
                    </a>
                </li>
                <li>
                    <a href="#">
                        <figure>
                            <img src="img/g1.png" alt="Imagem do site do G1">
                            <figcaption>G1.com.br: reformulação de design e implementação de HTML, CSS e JavaScript</figcaption>
                        </figure>
                    </a>
                </li>
            </ul>
        </div>
    </main>

    <img src="img/eu.jpg" alt="Foto de João da Silva" class="foto-principal">

    <aside class="navegacao-site">
        <h1>João da Silva</h1>
        <nav>
            <ul>
                <li><a href="index.html">home</a></li>
                <li><a href="portfolio.html">portfolio</a></li>
                <li><a href="bio.html">sobre mim</a></li>
                <li><a href="blog.html">blog</a></li>
                <li><a href="contato.html">contato</a></li>
            </ul>
        </nav>
        <ul class="icones-sociais">
            <li>
                <a href="https://github.com/" class="github">GitHub</a>
            </li>
            <li>
                <a href="https://twitter.com/?lang=pt-br" class="twitter">Twitter</a>
            </li>
            <li>
                <a href="https://www.linkedin.com/portugues" class="linkedin">LinkedIn</a>
            </li>
        </ul>
    </aside>

    <footer class="rodape-pagina">
        &copy; João da Silva 2016
        <!-- <ul class="icones-sociais social-rodape">
              <li>
                  <a href="https://github.com/" class="github">GitHub</a>
              </li>
              <li>
                  <a href="https://twitter.com/?lang=pt-br" class="twitter">Twitter</a>
              </li>
              <li>
                  <a href="https://www.linkedin.com/portugues" class="linkedin">LinkedIn</a>
              </li>
          </ul> -->
    </footer>
</body>

</html>

CSS

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

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

h2 {
    font-size: 30px;
}

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

strong {
    font-weight: bold;
}

em {
    font-style: italic;
}

.clearfix {
    clear: both;
}

.principal {
    /*float: left;*/
    width: 85%;
}

.principal a {
    color: #851944;
}

.conteudo-principal {
    width: 720px;
    margin: auto;
    padding: 30px 0 80px 0;
}

.titulo-principal {
    background-color: #851944;
    color: #FFF;
    text-align: center;
    padding: 25px;
    border-bottom: 10px solid #000;
    font-size: 60px;
    text-transform: uppercase;
}

.navegacao-site {
    background-color: #3C1D3D;
    color: #F2FFFC;
    padding: 20px;
    text-align: center;
    width: 15%;
    box-sizing: border-box;
    /*clear: right;*/
    /*float: right;*/
    /*position: relative;*/
    position: absolute;
    right: 0;
    top: 310px;
}

.navegacao-site a {
    color: inherit;
    font-family: "Open Sans Condensed", "Arial", sans-serif;
    text-transform: lowercase;
}

.navegacao-site h1 {
    font-size: 30px;
    margin-bottom: 25px;
}

/*.navegacao-site ul li {
    list-style-position: inside
}*/

.navegacao-site, .foto-principal {
    border-left: 10px solid #000;
    border-bottom: 10px solid #000;
}

.foto-principal {
    position: absolute;
    top: 0;
    right: 0;
}

.rodape-pagina {
    background-color: #000;
    color: #F2FFFC;
    padding: 20px;
    position: fixed;
    left: 0;
    bottom: 0;
    width: 100%;
    box-sizing: border-box;
}

.icones-sociais li {
    display: inline-block;
}

.icones-sociais a {
    width: 40px;
    height: 40px;
    display: block;
    text-indent: -9999px;
}

.github {
    background-image: url(../img/github.png);
}

.twitter {
    background-image: url(../img/twitter.png);
}

.linkedin {
    background-image: url(../img/linkedin.png);
}

.social-rodape {
    margin: 10px;
}

.portfolio li {
    display: inline-block;
    border: 8px solid black;
    background-color: #FAFFFC;
    width: 45%;
    box-sizing: border-box;
    padding: 16px;
    margin-right: 16px;
    margin-bottom: 16px;
}

.portfolio img {
    width: 100%;
}

O exercício pede para colocar duas figuras lado a lado. Do jeito que está funciona, esta é a solução do exercício. Mas não estou enxergando o porque do width do seletor .portfolio li não poder ser 50%, e sim, como diz na solução, tem que ser um pouco menor, no caso 45%.

4 respostas

Acredito que os 45% sejam para compensar o margin-right de 16px. Você não poderia dar 50% de espaço para cada um e ainda colocar uma margem entre as duas imagens.

Falando de forma geral, dois elementos de 50% de width cabem lado a lado, sim. Mas como eu disse, outras propriedades podem fazer com que esse valor não seja o mais apropriado.

Obrigado pela resposta Tomás, mas eu quero entender justamente isso, quais propriedades estão interferindo e como isso está ocorrendo. O margin não é, pois o box-sizing tem o valor de border-box e ele compensa o margin.

Olá André, uma propriedade que pode estar interferindo é o white-spaceque especifica como os espaços ente elementos são manipulados. Basicamente, ele leva em consideração o 'espaço gerado pelo enter' dado entre dois elementos, se vc deixar suas duas divs com width=50% encostadas sem espaço, vai ver que elas alinharão

<div>Coluna 1</div><div>Coluna 2</div>

Ou, coloque a propriedade

white-space:nowrap

No elemento onde estes div's estão incluídas:

    <style>
        .container{
            white-space: nowrap;
        }
        .col{
            width:50%;
        }
    </style>


    <div class="container">
        <div class="col">Coluna 1</div>
        <div class="col">Coluna 2</div>
    </div>

As duas divs também ficarão lado a lado. Mas CUIDADO com essa propriedade.

solução!

Olá Jefferson! Obrigado pela resposta, mas eu não estava procurando uma solução para o problema em si, encontrei várias soluções válidas. O que eu queria era entender o porque desse comportamento.

Encontrei a resposta no artigo abaixo. Já havia visto isso no curso que fiz na Caelum com o próprio Marco Bruno mas realmente a falta de prática me fez esquecer. Como ele diz no artigo abaixo, "esses espaços existem porque o elemento com display: inline (e também com display: inline-block), ganha o comportamento de uma palavra. "

https://blog.frontux.com/pare-de-chutar-e-aprenda-como-funciona-o-display-inline-4ccb7b77371d#.tdxkejz5v

Valeu!!