{"id":230251,"date":"2022-11-23T12:21:00","date_gmt":"2022-11-23T09:21:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230251"},"modified":"2022-11-09T20:48:06","modified_gmt":"2022-11-09T17:48:06","slug":"centralizando-dinamicamente-um-elemento-em-um-conteiner-usando-css","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/centralizando-dinamicamente-um-elemento-em-um-conteiner-usando-css\/","title":{"rendered":"Centralizando dinamicamente um elemento em um cont\u00eainer usando CSS"},"content":{"rendered":"\n<p>Quando se trata de escrever sobre desenvolvimento, n\u00e3o costumo falar sobre coisas al\u00e9m de PHP e JavaScript, principalmente porque trabalho mais com essas linguagens do que com outras.<\/p>\n<p>Quero dizer, sim, CSS \u00e9 parte do neg\u00f3cio, assim como HTML, mas \u00e9 esperado hoje em dia, certo?<\/p>\n<p>Ent\u00e3o, se alguma vez houve uma dica r\u00e1pida para eu oferecer sobre CSS, \u00e9 isso (embora talvez eu deva escrever mais?). \u00c9 dif\u00edcil quando <strong><a href=\"https:\/\/twitter.com\/chriscoyier\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Chris<\/a><\/strong> faz um trabalho t\u00e3o incr\u00edvel executando <strong><a href=\"https:\/\/css-tricks.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CSS Tricks<\/a><\/strong>, mas eu discordo.<\/p>\n<p>Enfim, aqui est\u00e1 o problema e a solu\u00e7\u00e3o.<\/p>\n<h2>Centralizando dinamicamente um elemento em um cont\u00eainer<\/h2>\n<p>A ideia de centralizar dinamicamente um elemento \u00e9 baseada no seguinte cen\u00e1rio:<\/p>\n<ul>\n<li>Voc\u00ea est\u00e1 fazendo uma chamada para uma API que responder\u00e1 com um conjunto de, digamos, imagens assim que a chamada for conclu\u00edda.<\/li>\n<li>Voc\u00ea precisa centralizar cada imagem em seu cont\u00eainer.<\/li>\n<li>As imagens n\u00e3o ter\u00e3o uma altura fixa e precisar\u00e3o ser posicionadas e centralizadas dinamicamente em cont\u00eaineres na interface do usu\u00e1rio.<\/li>\n<\/ul>\n<p>Talvez isso ainda seja um pouco geral. Nesse caso, vamos supor que voc\u00ea tenha uma lista (ordenada ou n\u00e3o ordenada, n\u00e3o importa). Eles t\u00eam uma altura e largura fixas, e voc\u00ea colocar\u00e1 as imagens, em escala, dentro de cada elemento.<\/p>\n<p>Lembre-se: voc\u00ea n\u00e3o pode colocar coisas como\u00a0 elementos <strong>div<\/strong> dentro de elementos <strong>li<\/strong> (porque um <strong>div<\/strong> \u00e9 um elemento de n\u00edvel de bloco) sem alter\u00e1-lo por meio de algum CSS. E queremos evitar isso.<\/p>\n<p>Ent\u00e3o, em \u00faltima an\u00e1lise, a interface do usu\u00e1rio pode ser algo assim (bruto, eu sei):<\/p>\n<p>Se voc\u00ea quiser que cada imagem seja colocada dentro do item da lista, voc\u00ea quer que ela tenha uma certa altura dimensionada e voc\u00ea quer que ela seja centralizada, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/6fcfa9dd108af20920c937b2a1fa66c4\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tente o seguinte trecho de c\u00f3digo<\/a><\/strong> :<\/p>\n<pre><code>.acme-element {\n  position:   relative;\n  top:        50%;\n  transform:  translateY(-50%);\n  height:     auto;\n  max-height: 190px;\n}<\/code><\/pre>\n<p>A chave para isso, realmente, \u00e9 o estilo de transforma\u00e7\u00e3o. <strong><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/transform-function\/translateY\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">De acordo com o MDN<\/a><\/strong> :<\/p>\n<blockquote>\n<p>A fun\u00e7\u00e3o CSS translateY() reposiciona um elemento verticalmente no plano 2D. Seu resultado \u00e9 um tipo de dados.<\/p>\n<\/blockquote>\n<p>Faz sentido?<\/p>\n<p>Pense desta forma: A fun\u00e7\u00e3o <strong>translateY<\/strong> pegar\u00e1 um determinado elemento (identificado por seu seletor) e o posicionar\u00e1 usando o valor especificado.<\/p>\n<h2>\u00c9 Sobre Transforma\u00e7\u00f5es<\/h2>\n<p>Voc\u00ea pode usar pixels, porcentagens ou o que for necess\u00e1rio para fazer isso acontecer. Neste caso, s\u00e3o porcentagens (e s\u00e3o negativas). Embora eu esteja usando um exemplo da minha implementa\u00e7\u00e3o, tamb\u00e9m \u00e9 uma dica sobre como usar a fun\u00e7\u00e3o <strong>transformY<\/strong> em rela\u00e7\u00e3o \u00e0s transforma\u00e7\u00f5es.<\/p>\n<p>Se a compatibilidade do navegador for importante \u2013 o que, em alguns casos, deveria \u2013 confira <strong><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/transform-function#Browser_compatibility\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">este gr\u00e1fico<\/a><\/strong>. Voc\u00ea est\u00e1 muito bem coberto.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A ideia de centralizar dinamicamente um elemento est\u00e1 fortemente relacionada ao trabalho que voc\u00ea est\u00e1 fazendo, mas talvez o uso de transforma\u00e7\u00f5es ajude.<\/p>\n","protected":false},"author":1,"featured_media":220880,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[909,837,846],"tags":[1170],"class_list":["post-230251","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-8","category-guia-para-iniciantes","category-tutoriais","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/230251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=230251"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/230251\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/220880"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=230251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=230251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=230251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}