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

Selecionando o primeiro trabalho

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

.portfolio img {
    width: 100%;
    box-shadow: 0 0 4px #000;
}
.primeiro-trabalho{
  width:100%;
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Portfolio - João da Silva</title>
    <link rel="icon" href="imagens/favicon.png">
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/site.css">
    <link rel="stylesheet" href="css/portfolio.css">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700">
</head>
<body>
    <main>
        <h1 class="titulo-principal">Portfolio</h1>
        <div class="container">
            <p>Veja abaixo a lista dos meus projetos mais relevantes</p>
            <ol class="portfolio">
                <li class="primeiro-trabalho" ><a href="http://bmw.com">
                        <figure >
                            <img src="imagens/bmw.png" alt="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="http://uol.com.br">
                        <figure>
                            <img src="imagens/uol.png" alt="Front-page 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="http://www.ibm.com.br">
                        <figure>
                            <img src="imagens/ibm.png" alt="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="http://g1.com.br">
                        <figure>
                            <img src="imagens/g1.png" alt="Front-page do portal G1">
                            <figcaption>G1.com.br: reformulação de design e implementação de HTML, CSS e JavaScript</figcaption>
                        </figure>
                </a></li>
                <li><a href="http://terra.com.br">
                    <figure>
                        <img src="imagens/terra.png" alt="Front-page do portal Terra">
                        <figcaption>Terra.com.br: implementação de design responsivo</figcaption>
                    </figure>
                </a></li>
            </ol>
        </div>
    </main>
    <img src="imagens/eu.jpg" alt="Minha foto" class="minha-foto">
    <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-redes-sociais">
            <li>
                <a href="https://github.com/joaodasilva" class="github" data-tooltip="Veja meus projetos opensource">
                    Github
                </a>
            </li>
            <li>
                <a href="https://twitter.com/joaodasilva" class="twitter" data-tooltip="Siga-me no Twitter">
                    Twitter
                </a>
            </li>
            <li>
                <a href="https://br.linkedin.com/pub/joão-da-silva/32/4/508" class="linkedin" data-tooltip="Veja meu currículo">
                    LinkedIn
                </a>
            </li>
        </ul>
    </aside>
    <footer class="rodape-pagina">
        &copy; João da Silva 2014
    </footer>
</body>
</html>

Eu tentei selecionar o primeiro trabalho com uma classe, só que não deu certo, então eu tentei selecionar com um id e funcionou, então eu gostaria de entender o porque eu não posso selecionar o primeiro trabalho através de uma classe.

3 respostas
solução!

Olá, Gabriel.

Na verdade está sendo selecionado, você tem dois seletores atribuindo largura para o primeiro-trabalho que também é um li. Os dois seletores no seu CSS são: .portfolio li (está definindo uma largura de 45%) e .primeiro-trabalho (está definido uma largura de 100%).

Mesmo o seletor .primeiro-trabalho vindo depois do seletor .portfolio li no seu arquivo CSS, a largura que será mantida é a do seletor .porfolio li. Isso acontece porquê no CSS nós temos valores de especificidade, vou tentar de explicar o que é um valor de especificidade.

O seletor por id tem valor de especificidade 100; a class tem valor de especificidade 10 e o seletor por tag tem valor de especificidade 1. Sendo assim, o seletor que está no começo do seu CSS (.portfolio li) tem um valor de especificidade somado com class (10) mais tag (1) dando o total de 11. Já o seu segundo seletor (.primeiro-trabalho) tem um valor de especificidade de 10, por isso que você está com a sensação de que o seletor .primeiro-trabalho não está funcionando, quando na verdade, ele está funcionando e sendo sobrescrito pelo seletor mais especifico. Ah! E quando você troca pelo id funciona porquê o valor de especificidade dele é bem mais alto: 100.

Por isso que você verá muitos posts na internet falando pra usar só seletores de class, dessa forma só não terá nenhum problema com especificidade.

Com essas informações tenta resolver o problema que você teve e me diz como resolveu. ;-)

Se não rolar te mostro o código.

Ah, eu já tinha resolvido o problema através do id, eu só não estava entendendo oque estava acontecendo. Gostei muito da explicação que você me deu! Obrigado!

Por nada, Gabriel.

Aparecendo mais dúvidas é só falar. Fico feliz que já tenha resolvido. :-)

Recomendo você estudar um pouco sobre as arquiteturas de CSS, elas ajudam a não termos problema com valores de especificidade no dia a dia.

Arquiteturas de CSS e outras coisa legais pra estudar - BEM - SMACSS - ITCSS - DRY CSS - OOCSS - Atomic Design