{"id":229727,"date":"2022-11-23T12:54:00","date_gmt":"2022-11-23T09:54:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229727"},"modified":"2022-11-09T16:07:02","modified_gmt":"2022-11-09T13:07:02","slug":"dynamiskt-centrera-ett-element-i-en-behaallare-med-css","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/dynamiskt-centrera-ett-element-i-en-behaallare-med-css\/","title":{"rendered":"Dynamiskt centrera ett element i en beh\u00e5llare med CSS"},"content":{"rendered":"\n<p>N\u00e4r det kommer till att skriva om utveckling pratar jag inte ofta om saker ut\u00f6ver PHP och JavaScript fr\u00e4mst f\u00f6r att jag jobbar med de spr\u00e5ken mer \u00e4n andra.<\/p>\n<p>Jag menar, ja, CSS \u00e4r en del av aff\u00e4ren liksom HTML, men det f\u00f6rv\u00e4ntas i dessa dagar, eller hur?<\/p>\n<p>S\u00e5 om det n\u00e5gon g\u00e5ng fanns ett snabbt tips f\u00f6r mig att ge ang\u00e5ende CSS s\u00e5 \u00e4r det det h\u00e4r (\u00e4ven om jag kanske borde skriva mer?). Det \u00e4r sv\u00e5rt n\u00e4r <strong><a href=\"https:\/\/twitter.com\/chriscoyier\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Chris<\/a><\/strong> g\u00f6r ett s\u00e5 fantastiskt jobb med att k\u00f6ra <strong><a href=\"https:\/\/css-tricks.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CSS Tricks<\/a><\/strong>, men jag avviker.<\/p>\n<p>Hur som helst, h\u00e4r \u00e4r problemet och l\u00f6sningen.<\/p>\n<h2>Dynamiskt centrera ett element i en beh\u00e5llare<\/h2>\n<p>Id\u00e9n med att dynamiskt centrera ett element \u00e4r baserad p\u00e5 f\u00f6ljande scenario:<\/p>\n<ul>\n<li>Du ringer ett API som kommer att svara med en upps\u00e4ttning, till exempel, bilder n\u00e4r anropet \u00e4r klart.<\/li>\n<li>Du m\u00e5ste centrera varje bild i dess beh\u00e5llare.<\/li>\n<li>Bilderna kommer inte att ha en fast h\u00f6jd och kommer att beh\u00f6va placeras dynamiskt och centreras i beh\u00e5llare i anv\u00e4ndargr\u00e4nssnittet.<\/li>\n<\/ul>\n<p>Kanske \u00e4r detta fortfarande lite allm\u00e4nt. Om s\u00e5 \u00e4r fallet, l\u00e5t oss anta att du har en lista (ordnad eller oordnad, det spelar ingen roll). De har en fast h\u00f6jd och bredd, och du kommer att placera bilderna, skalade, inom varje element.<\/p>\n<p>Kom ih\u00e5g: du kan inte placera saker som <strong>div<\/strong> &#8211; element inom <strong>li<\/strong> &#8211; element (eftersom en <strong>div<\/strong> \u00e4r ett element p\u00e5 blockniv\u00e5) utan att \u00e4ndra det via n\u00e5gon CSS. Och det vill vi undvika att g\u00f6ra.<\/p>\n<p>S\u00e5 i slut\u00e4ndan kan anv\u00e4ndargr\u00e4nssnittet se ut ungef\u00e4r s\u00e5 h\u00e4r (r\u00e5, jag vet):<\/p>\n<p>Om du vill att varje bild ska placeras i listobjektet, du vill att den ska ha en viss skalad h\u00f6jd, och du vill att den ska centreras, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/6fcfa9dd108af20920c937b2a1fa66c4\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prova f\u00f6ljande kodbit<\/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>Nyckeln till detta \u00e4r egentligen transformationsstilen. <strong><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/transform-function\/translateY\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Enligt MDN<\/a><\/strong> :<\/p>\n<blockquote>\n<p>CSS-funktionen translateY() placerar om ett element vertikalt p\u00e5 2D-planet. Resultatet \u00e4r en datatyp.<\/p>\n<\/blockquote>\n<p>Vettigt?<\/p>\n<p>T\u00e4nk p\u00e5 det s\u00e5 h\u00e4r: <strong>TranslateY<\/strong> -funktionen tar ett givet element (identifieras av dess v\u00e4ljare) och placerar det med det angivna v\u00e4rdet.<\/p>\n<h2>Det handlar om f\u00f6rvandlingar<\/h2>\n<p>Du kan anv\u00e4nda pixlar, procentsatser eller vad det nu \u00e4r du beh\u00f6ver f\u00f6r att f\u00e5 det att h\u00e4nda. I det h\u00e4r fallet \u00e4r det procentsatser (och de \u00e4r negativa). \u00c4ven om jag anv\u00e4nder ett exempel p\u00e5 min implementering, \u00e4r det ocks\u00e5 t\u00e4nkt att vara ett tips om hur man anv\u00e4nder <strong>transformY<\/strong> &#8211; \u00a0funktionen med relation till transformer.<\/p>\n<p>Om webbl\u00e4sarkompatibilitet spelar roll \u2013 vilket det i vissa fall borde \u2013 kolla in det <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\">h\u00e4r diagrammet<\/a><\/strong>. Du \u00e4r ganska v\u00e4l t\u00e4ckt.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tanken p\u00e5 att dynamiskt centrera ett element \u00e4r starkt relaterad till det arbete du g\u00f6r, men det kanske hj\u00e4lper att anv\u00e4nda transformer.<\/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":[910,838,848],"tags":[1173],"class_list":["post-229727","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-9","category-guide-foer-nyboerjare","category-handledningar","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=229727"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/229727\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/220880"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=229727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=229727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=229727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}