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

relação em pixel e rem

olá

estou com uma duvida em um exercicio

é pedido para alterar o tamanho das fontes para usarem medidas relativas

é dado como exemplo este codigo

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

que quando transformado para usar medidas relativas ficaria assim

.titulo-principal {
    font-size: 300%;
    text-align: center;
    background-color: #851944;
    color: #FFF;
    padding: 2rem;
    border-bottom: .5rem solid #000;
}

no exercicio diz que tem como base 20px, o que não entendi é por que no padding que tem 25px virá 2rem.

3 respostas

Olá luiz.

Realmente, o estudo dos atributos de medida no CSS da um nó em nossas cabeças. Porque não estamos acostumados a trabalhar com estas novas medias: em, rem, ch, cx, etc...

Mas, é o seguinte:

O instrutor tomou como base o valor de 20px para o tamanho da fonte, e de certa forma estes valores que estão no código fazem sentido sim. Olha só:

  • Na primeira linha do código temos o ( font-size: 60px ), para transformarmos em valor relativo e tomando como base os 20px, então vamos ter ( font-size: 300% ). Pois o calculo de ( 20px * 300% ) é igual aos mesmos 60px de antes.

  • Na penúltima linha temos o ( padding: 2rem; ), onde a medida ( rem ), é igual ao tamanho da fonte do principal elemento do site, normalmente a tag ( body ), ou ( html ), como estamos nos baseando em 20px, o valor de 2rem ( 20px * 2 ) deve ficar em 40px. Só que, no caso deste exercício, o valor anterior era de 25px, então, acredito que o professor não explicou a mudança, pois não faz sentido nem pra mim.

  • E na última linha temos ( border-bottom: .5rem solid #000; ), onde o valor de ( .5rem ) é exatamente igual a ( 0.5 rem ), ou seja metade de ( 1rem ), que é 10px;

Para que este cálculo fique certo, acredito que devemos substituir no arquivo ( site.css ) o valor da fonte do elemento (body) para 20px. Que agora esta marcado como 120%.

Era isto que eu tinha entendi, para transformar os 25px em rem o correto seria 1.2 rem ?

outra duvida quando eu deve usar o rem, o em ou o ch ?

solução!

Ok seu luiz.

Para saber quando utilizar cada unidade de medida, você tem que analisar qual o seu objetivo no código.

  • REM: Como havia informado no post anterior, a unidade ( rem ), utiliza como base o tamanho da fonte do elemento principal do site. que pode ser ( html ) ou ( body ). Por exemplo:
<html>
    <head>
    <style>
        body {
            font-size: 20px;
        }
        section {
            font-size: 40px;
        }
        td {
            font-size: 10px;
        }
        p {
            font-size: 1rem;
        }
    </style>
    </head>
    <body>
        <section>
        <P>Exemplo de texto 1</p>
        <table>
            <tr>
                <td><p>Exemplo de texto 2</p></td>
                <td><p>Exemplo de texto 3</p></td>
                <td><p>Exemplo de texto 4</p></td>
                <td><p>Exemplo de texto 5</p></td>
            </tr>
        </table>
        <p>Exemplo de texto 6</p>
        </section>
    </body>
</html>

No exemplo acima, todos os elementos ( p ), vão receber a fonte com o tamanho relacionado ao ( body ). Isto é útil quando quisermos que todos os itens tenham sempre o mesmo tamanho de fonte. Não importa onde estejam.

  • EM: A unidade ( em ) é bem parecida, mas, ao invés de usar o elemento ( body ) como referência, éla vai usar o seu elemento pai. Por exemplo:
<html>
    <head>
    <style>
        body {
            font-size: 20px;
        }
        section {
            font-size: 40px;
        }
        td {
            font-size: 10px;
        }
        p {
            font-size: 2em;
        }
    </style>
    </head>
    <body>
        <section>
        <P>Exemplo de texto 1</p>
        <table>
            <tr>
                <td><p>Exemplo de texto 2</p></td>
                <td><p>Exemplo de texto 3</p></td>
                <td><p>Exemplo de texto 4</p></td>
                <td><p>Exemplo de texto 5</p></td>
            </tr>
        </table>
        <p>Exemplo de texto 6</p>
        </section>
    </body>
</html>

No exemplo acima, o tamanho da fonte do elemento ( p ) vai variar conforme o seu elemento pai, no caso dos textos de número 2, 3, 4 e 5. Sua fonte terá tamanho de 10px, porque o seu elemento pai é o ( td ) que foi programado com fonte de tamanho 10px.

E no caso dos textos de número 1 e 6, a fonte vai ter tamanho 40px, pois o seu elemento pai é o elemento ( section )

  • A unidade de medida ( ch ) é diferente das outras acima, éla é baseada na largura do caractere 0 ( zero ) de uma fonte. É útil para utilizar em formulários, quando queremos que um texto caiba certinho dentro do campo input.

Vamos supor que você escolheu a fonte arial para o exemplo abaixo, onde temos um campo de texto para o nosso usuário preencher:

<html>
    <head>
        <style>
            body {
                font-family: arial;
            }
            input {
                width: 30ch;
            }
        </style>
    </head>
    <body>
        <label>Exemplo de campo de texto</label>
        <input type="text">
    </body>
</html>

No exemplo acima, o campo de texto ( input ) vai ter o tamanho de exatos 30 caracteres ( 0 ) da fonte arial. Então qualquer texto com 30 caracteres, que o usuário digitar ali vai caber com certeza, pois o valor ( 0 ) é o caractere mais largo de qualquer fonte padrão.

Se trocarmos o tipo da fonte para Verdana, o tamanho da unidade ( ch ) também vai mudar para a largura do ( 0 ) desta nova fonte.