{"id":3734,"date":"2014-11-17T10:38:13","date_gmt":"2014-11-17T12:38:13","guid":{"rendered":"http:\/\/blog.turbosite.com.br\/?p=3734"},"modified":"2014-11-17T10:38:13","modified_gmt":"2014-11-17T12:38:13","slug":"conheca-as-unidades-de-css-css-rem-vh-vw-vmin-vmax-ex-ch","status":"publish","type":"post","link":"https:\/\/www.turbosite.com.br\/blog\/conheca-as-unidades-de-css-css-rem-vh-vw-vmin-vmax-ex-ch\/","title":{"rendered":"Conhe\u00e7a as Unidades de CSS : css, rem, vh, vw, vmin, vmax, ex, ch"},"content":{"rendered":"<p>\u00c9 f\u00e1cil ficar preso quando se trabalha com t\u00e9cnicas CSS que conhecemos bem, mas isso nos coloca em desvantagem quando novos problemas vem \u00e0 tona. \u00c0 medida que a web continua a crescer, a procura por novas solu\u00e7\u00f5es segue o mesmo caminho. Portanto, web designers e desenvolvedores de front-end n\u00e3o t\u00eam escolha: \u00e9 preciso conhecer bem o conjunto de ferramentas e possibilidades dispon\u00edveis.<\/p>\n<p>Hoje iremos introduzir algumas ferramentas &#8220;<em>especiais<\/em>&#8221; CSS que talvez voc\u00ea n\u00e3o conhe\u00e7a. Essas ferramentas s\u00e3o unidades de medida CSS, como o <em>pixel<\/em> e &#8220;<em>ems<\/em>&#8220;, por\u00e9m \u00e9 bem prov\u00e1vel que voc\u00ea nunca tenha ouvido falar delas antes. Abaixo voc\u00ea pode conferir essas m\u00e9tricas.<\/p>\n<p>A equipe da <a href=\"https:\/\/www.turbosite.com.br\/\">Turbosite<\/a>\u00a0compartilha esse artigo baseado no post do blog\u00a0<a href=\"http:\/\/desenvolvimentoparaweb.com\/css\/unidades-css-rem-vh-vw-vmin-vmax-ex-ch\">Desenvolvimento para Web<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2>rem<\/h2>\n<p>Come\u00e7ando com algo similar ao que a maioria j\u00e1 conhece, a unidade <code>em<\/code> \u00e9 definida como o <code>font-size<\/code> atual. Assim, por exemplo, se voc\u00ea definir um tamanho de fonte no elemento <code>&lt;body&gt;<\/code>, o valor de em de qualquer elemento-filho dentro de <code>&lt;body&gt;<\/code> ser\u00e1 igual \u00e0quele tamanho de fonte.<\/p>\n<div class=\"wp_syntax\">\n<pre class=\"lang:xhtml decode:true\">&lt;body&gt;\n    &lt;div class=\"test\"&gt;Test&lt;\/div&gt;\n&lt;\/body&gt;<\/pre>\n<pre class=\"lang:css decode:true\">body {\n    font-size: 14px;\n}\n\u00a0\ndiv {\n    font-size: 1.2em; \/\/ calculado como 14px * 1.2, ou 16.8px\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<div class=\"wp_syntax\">A div ter\u00e1 um font-size de <code>1.2em<\/code>, Isto \u00e9, 1,2 vezes o tamanho da fonte que herdou \u2014 neste caso, <code>14px<\/code>. O resultado \u00e9 <code>16.8px<\/code>.<\/div>\n<p>Entretanto, o que acontece quando se tem um elemento com valor <code>em<\/code> dentro de outro elemento com valor <code>em<\/code>? No trecho a seguir, foi aplicado o mesmo CSS acima; cada <code>div<\/code> herda a <code>font-size<\/code> de seu elemento-pai, permitindo aumentar gradualmente os tamanhos de fonte.<\/p>\n<div class=\"wp_syntax\">\n<pre class=\"lang:xhtml decode:true\">&lt;body&gt;\n    &lt;div&gt;\n        Test &lt;!-- 14 * 1.2 = 16.8px --&gt;\n        &lt;div&gt;\n            Test &lt;!-- 16.8 * 1.2 = 20.16px --&gt;\n            &lt;div&gt;\n                Test &lt;!-- 20.16 * 1.2 = 24.192px --&gt;\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/body&gt;<\/pre>\n<p><iframe loading=\"lazy\" width=\"300\" height=\"268\" style=\"width: 100%; overflow: hidden;\" id=\"cp_embed_jsFva\" src=\"\/\/codepen.io\/snaptin\/embed\/jsFva?height=268&amp;theme-id=0&amp;slug-hash=jsFva&amp;default-tab=result&amp;user=snaptin\" scrolling=\"no\" frameborder=\"0\" allowtransparency=\"true\" allowfullscreen=\"allowfullscreen\" class=\"cp_embed_iframe undefined\"><\/iframe><\/p>\n<\/div>\n<p>Embora isso possa ser desejado em alguns casos, muitas vezes voc\u00ea pode querer simplesmente confiar em uma \u00fanica m\u00e9trica para o dimensionamento. Neste caso, voc\u00ea deve usar <code>rem<\/code> \u2014 o \u201cr\u201d significa \u201croot\u201d: \u201croot em\u201d \u2013, que \u00e9 igual ao tamanho da fonte fixada ao elemento-raiz (quase sempre <code>&lt;html&gt;<\/code>). Em qualquer uma das divs aninhadas do exemplo anterior, a fonte ter\u00e1 o tamanho equivalente de <code>16.8px<\/code>.<\/p>\n<pre class=\"lang:css decode:true \">html {\n    font-size: 14px;\n}\n\u00a0\ndiv {\n    font-size: 1.2rem;\n}<\/pre>\n<h3>\u00a0<code>rem<\/code> \u00e9 bom para grids<\/h3>\n<p><code>rem<\/code> n\u00e3o \u00e9 \u00fatil apenas para dimensionamento de fontes. Por exemplo, \u00e9 poss\u00edvel basear um sistema de grids inteiro ou uma biblioteca de estilos tomando por base o tamanho de fonte do elemento raiz <code>&lt;html&gt;<\/code> usando <code>em<\/code>, utilizando em para escalar em locais espec\u00edficos. Isto confere um dimensionamento de fonte mais previs\u00edvel e escal\u00e1vel.<\/p>\n<p>&nbsp;<\/p>\n<h2><code>vh<\/code> e <code>vw<\/code><\/h2>\n<p>Muitas t\u00e9cnicas de <strong>web design responsivo<\/strong> dependem muito de regras percentuais. No entanto, medidas CSS percentuais nem sempre s\u00e3o a melhor solu\u00e7\u00e3o para todos os problemas. <code>width<\/code> em CSS \u00e9 relativo ao elemento-ancestal mais pr\u00f3ximo. Mas e se voc\u00ea quisesse usar a largura ou a altura da viewport ao inv\u00e9s da largura do elemento-pai? Isso \u00e9 exatamente o que as unidades <code>vh<\/code> e <code>vw<\/code> proporcionam.<\/p>\n<p>A medida <code>vh<\/code> \u00e9 igual a 1\/100 da altura da viewport. Ent\u00e3o, por exemplo, se a altura do navegador \u00e9 <code>900px<\/code>, <code>1vh<\/code> equivale a <code>9px<\/code> e, analogamente, se a largura da viewport \u00e9 <code>750px<\/code>, <code>1vw<\/code> equivale a <code>7.5px<\/code>.<\/p>\n<p>H\u00e1 infinitas possibilidades de uso com essas unidades. Por exemplo, \u201csliders\u201d de altura total (full-height) poderia ser conseguido com uma \u00fanica linha de CSS:<\/p>\n<div class=\"wp_syntax\">\n<pre class=\"lang:css decode:true\">.slide {\n    height: 100vh;\n}<\/pre>\n<\/div>\n<p>Imagine que voc\u00ea precise de um t\u00edtulo que preencha a largura da tela. Para conseguir isso, voc\u00ea pode definir um tamanho de fonte com vw, que vai escalar segundo a largura do navegador.<\/p>\n<p><iframe loading=\"lazy\" width=\"100%\" height=\"300\" src=\"https:\/\/codepen.io\/snaptin\/embed\/yorbI\" frameborder=\"0\" scrolling=\"no\">&lt;br \/&gt;<\/iframe><\/p>\n<div><\/div>\n<h2><code>vmin<\/code> e <code>vmax<\/code><\/h2>\n<p>Enquanto <code>vh<\/code> e <code>vm<\/code> est\u00e3o sempre relacionados com a altura e largura da viewport, respectivamente <code>vmin<\/code> e <code>vmax<\/code> est\u00e3o relacionados com o valor m\u00e1ximo ou m\u00ednimo destas larguras e alturas, dependendo de qual \u00e9 a menor e a maior. Por exemplo, se o navegador foi ajustado para <code>1100px<\/code> de largura e a altura <code>700px<\/code>, <code>1vmin<\/code> seria <code>7px<\/code> e <code>1vmax<\/code> seria<code>11px<\/code>. Contudo, se a largura foi ajustada para <code>800px<\/code> e a altura definida para <code>1080px<\/code>, vmin seria igual a <code>8px<\/code> e vmax <code>10.8px<\/code>.<\/p>\n<p>Mas quando usar estes valores?<\/p>\n<p>Imagine que voc\u00ea precise de um elemento sempre vis\u00edvel na tela. Usar uma altura e largura ajustada para um valor abaixo de <code>100vmin<\/code>\u00a0permitiria isso. Por exemplo, um elemento quadrado que sempre toca pelo menos dois lados da tela pode ser definido assim:<\/p>\n<div class=\"wp_syntax\">\n<pre class=\"lang:css decode:true \">.box {\n    height: 100vmin;\n    width: 100vmin;\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3761 aligncenter\" src=\"https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/vmin-viewport-demo.png\" alt=\"vmin-viewport-demo\" width=\"600\" height=\"629\" srcset=\"https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/vmin-viewport-demo.png 600w, https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/vmin-viewport-demo-286x300.png 286w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Se voc\u00ea precisa de uma caixa quadrada que sempre cobre a viewport vis\u00edvel (tocando todos os quatro lados da tela o tempo todo), use as mesmas regras com <code>vmax<\/code>.<\/p>\n<div class=\"wp_syntax\">\n<pre class=\"lang:css decode:true \">.box {\n    height: 100vmax;\n    width: 100vmax;\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3762 aligncenter\" src=\"https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/vmax-viewport-demo.png\" alt=\"vmax-viewport-demo\" width=\"600\" height=\"629\" srcset=\"https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/vmax-viewport-demo.png 600w, https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/vmax-viewport-demo-286x300.png 286w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Combina\u00e7\u00f5es dessas regras fornecem uma maneira muito flex\u00edvel de utilizar o tamanho da viewport de maneiras novas e emocionantes!<\/p>\n<p>&nbsp;<\/p>\n<h2><code>ex<\/code> e <code>ch<\/code><\/h2>\n<p>As unidades <code>ex<\/code> e <code>ch<\/code>, semelhante a <code>em<\/code> e <code>rem<\/code>, contam com a fonte e tamanho da fonte atuais. No entanto, ao contr\u00e1rio de <code>em<\/code> e <code>rem<\/code>, essas unidades tamb\u00e9m contam com <code>font-family<\/code> como s\u00e3o determinados com base em medidas espec\u00edficas de cada fonte.<\/p>\n<p>A unidade <code>ch<\/code> (\u201ccharacter unit\u201d ou \u201cunidade-caractere\u201d) \u00e9 definida como sendo a \u201cmedida avan\u00e7ada\u201d da largura do caractere zero (\u201c0\u2033). Algumas considera\u00e7\u00f5es muito interessantes sobre o que isso significa <a href=\"http:\/\/meyerweb.com\/eric\/thoughts\/2012\/05\/15\/defining-ch\/\">podem ser encontradas no blog de Eric Meyers<\/a>, mas o conceito b\u00e1sico \u00e9 de que, dada uma fonte com espa\u00e7amento uniforme, uma caixa com uma largura de N unidades-caractere, como <code>width: 40ch;<\/code>, sempre pode conter uma string com 40 caracteres nesta determinada fonte. Enquanto usos convencionais de esta regra s\u00e3o relacionados a braille, as possibilidades de criatividade aqui certamente se estendem para al\u00e9m deste tipo de aplica\u00e7\u00e3o.<\/p>\n<p>A unidade ex \u00e9 definida como \u201ca altura-x da fonte atual ou a metade de 1em\u201d. A altura-x de uma determinada fonte \u00e9 a altura da min\u00fascula \u201cx\u201d dessa fonte. Muitas vezes, trata-se da marca do meio da fonte.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3763 aligncenter\" src=\"https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/altura-x-demo.png\" alt=\"altura-x-demo\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/altura-x-demo.png 600w, https:\/\/www.turbosite.com.br\/blog\/wp-content\/uploads\/2014\/11\/altura-x-demo-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>H\u00e1 muitos usos para este tipo de unidade, sendo a maioria relacionada a micro-ajustes tipogr\u00e1ficos. Por exemplo, o elemento <code>sup<\/code> pode ser empurrado para cima na linha usando posi\u00e7\u00e3o relativa e um valor inferior do <code>1ex<\/code>. Similarmente, \u00e9 poss\u00edvel puxar um elemento <code>sub<\/code> para baixo. Os navegadores j\u00e1 t\u00eam seus padr\u00f5es para estas tags, mas se um controle mais granular \u00e9 preciso, voc\u00ea pode lidar com a situa\u00e7\u00e3o de uma maneira mais expl\u00edcita, como:<\/p>\n<div class=\"wp_syntax\">\n<pre class=\"lang:css decode:true \">sup {\n    bottom: 1ex;\n    position: relative;\n}\n\u00a0\nsub {\n    bottom: -1ex;\n    position: relative;\n}<\/pre>\n<p>&nbsp;<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Manter um foco no cont\u00ednuo desenvolvimento e expans\u00e3o do CSS \u00e9 extremamente importante para que voc\u00ea possa conhecer todas as ferramentas. Talvez voc\u00ea encontrar\u00e1 alguns problemas em particular, que\u00a0exija uma solu\u00e7\u00e3o inesperada, utilizando umas dessas unidades de\u00a0medidas menos conhecida. Tire algum tempo para ler novas especifica\u00e7\u00f5es. Se inscreva em comunidade de not\u00edcias e <em>updates\u00a0<\/em>com grandes recursos.<\/p>\n<p>N\u00e3o \u00e9 sempre que voc\u00ea usar\u00e1 estas unidades de CSS moderno, mas conhecer e saber quando aplicar <code>rem<\/code>, <code>vh<\/code>, <code>vw<\/code>, <code>vmin<\/code>, <code>vmax<\/code>, <code>ex<\/code> e <code>ch<\/code> abre a gama de possibilidades e conting\u00eancias poss\u00edveis para quaisquer situa\u00e7\u00f5es que apare\u00e7am.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Nesse post vamos introduzir algumas unidades de medida CSS que talvez voc\u00ea nunca tenha ouvido falar delas antes. Sendo elas: rem, vh, vw, vmin, vmax, ex e ch.<\/p>\n","protected":false},"author":1,"featured_media":3758,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,3,5],"tags":[154],"class_list":["post-3734","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-2","category-curiosidades","category-desenvolvimento","tag-css"],"_links":{"self":[{"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/posts\/3734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3734"}],"version-history":[{"count":0,"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/posts\/3734\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/media\/3758"}],"wp:attachment":[{"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.turbosite.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}