{"id":230301,"date":"2022-11-23T12:31:00","date_gmt":"2022-11-23T09:31:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230301"},"modified":"2022-11-09T21:02:26","modified_gmt":"2022-11-09T18:02:26","slug":"elementin-keskittaeminen-dynaamisesti-saeiloessae-css-n-avulla","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/elementin-keskittaeminen-dynaamisesti-saeiloessae-css-n-avulla\/","title":{"rendered":"Elementin keskitt\u00e4minen dynaamisesti s\u00e4il\u00f6ss\u00e4 CSS:n avulla"},"content":{"rendered":"\n<p>Mit\u00e4 tulee kehityksest\u00e4 kirjoittamiseen, en usein puhu PHP:n ja JavaScriptin ulkopuolisista asioista p\u00e4\u00e4asiassa siksi, ett\u00e4 ty\u00f6skentelen n\u00e4iden kielten kanssa enemm\u00e4n kuin muiden.<\/p>\n<p>Tarkoitan, joo, CSS on osa sopimusta, kuten HTMLkin, mutta sit\u00e4 odotetaan nyky\u00e4\u00e4n, eik\u00f6 niin?<\/p>\n<p>Joten jos minulla oli joskus tarjota pikavinkki koskien CSS:\u00e4\u00e4, t\u00e4m\u00e4 on se (vaikka minun pit\u00e4isi kirjoittaa enemm\u00e4n?). On vaikeaa, kun <strong><a href=\"https:\/\/twitter.com\/chriscoyier\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Chris<\/a><\/strong> tekee niin mahtavaa ty\u00f6t\u00e4 <strong><a href=\"https:\/\/css-tricks.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CSS Tricks -ty\u00f6kalun<\/a><\/strong> avulla, mutta min\u00e4 poikkean.<\/p>\n<p>Joka tapauksessa, t\u00e4ss\u00e4 on ongelma ja ratkaisu.<\/p>\n<h2>Elementin keskitt\u00e4minen dynaamisesti s\u00e4il\u00f6ss\u00e4<\/h2>\n<p>Ajatus elementin dynaamisesta keskitt\u00e4misest\u00e4 perustuu seuraavaan skenaarioon:<\/p>\n<ul>\n<li>Soitat sovellusliittym\u00e4lle, joka vastaa esimerkiksi kuvilla, kun puhelu on valmis.<\/li>\n<li>Sinun on keskitett\u00e4v\u00e4 jokainen kuva sen s\u00e4il\u00f6\u00f6n.<\/li>\n<li>Kuvilla ei ole kiinte\u00e4\u00e4 korkeutta, ja ne on sijoitettava dynaamisesti ja keskitett\u00e4v\u00e4 k\u00e4ytt\u00f6liittym\u00e4n s\u00e4il\u00f6ihin.<\/li>\n<\/ul>\n<p>Ehk\u00e4 t\u00e4m\u00e4 on viel\u00e4 hieman yleist\u00e4. Jos on, oletetaan, ett\u00e4 sinulla on luettelo (j\u00e4rjestetty tai j\u00e4rjest\u00e4m\u00e4t\u00f6n, sill\u00e4 ei ole v\u00e4li\u00e4). Niill\u00e4 on kiinte\u00e4 korkeus ja leveys, ja aiot sijoittaa kuvat skaalattuna jokaisen elementin sis\u00e4\u00e4n.<\/p>\n<p>Muista: et voi sijoittaa esimerkiksi <strong>div<\/strong> &#8211; elementtej\u00e4 <strong>li<\/strong> &#8211; elementteihin (koska <strong>div<\/strong> on lohkotason elementti) muuttamatta sit\u00e4 jollain CSS:ll\u00e4. Ja haluamme v\u00e4ltt\u00e4\u00e4 sen tekem\u00e4st\u00e4.<\/p>\n<p>Joten loppujen lopuksi k\u00e4ytt\u00f6liittym\u00e4 voi n\u00e4ytt\u00e4\u00e4 suunnilleen t\u00e4lt\u00e4 (raaka, tied\u00e4n):<\/p>\n<p>Jos haluat, ett\u00e4 jokainen kuva sijoitetaan luettelokohteeseen, haluat sen olevan tietyss\u00e4 skaalatussa korkeudessa ja haluat sen olevan keskell\u00e4, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/6fcfa9dd108af20920c937b2a1fa66c4\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kokeile seuraavaa koodin bitti\u00e4<\/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>Avain t\u00e4h\u00e4n on todellakin muutostyyli. <strong><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/transform-function\/translateY\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">MDN:n mukaan<\/a><\/strong> :<\/p>\n<blockquote>\n<p>TranslateY() CSS-funktio sijoittaa elementin uudelleen pystysuoraan 2D-tasolle. Sen tulos on tietotyyppi.<\/p>\n<\/blockquote>\n<p>K\u00e4yd\u00e4 j\u00e4rkeen?<\/p>\n<p>Ajattele asiaa n\u00e4in: <strong>translateY<\/strong> &#8211; funktio ottaa tietyn elementin (valitsimella tunnistetun) ja sijoittaa sen k\u00e4ytt\u00e4m\u00e4ll\u00e4 m\u00e4\u00e4ritetty\u00e4 arvoa.<\/p>\n<h2>Kyse on muunnuksista<\/h2>\n<p>Voit k\u00e4ytt\u00e4\u00e4 pikseleit\u00e4, prosenttiosuuksia tai mit\u00e4 tahansa tarvitsemasi sen toteuttamiseksi. T\u00e4ss\u00e4 tapauksessa se on prosenttiosuus (ja ne ovat negatiivisia). Vaikka k\u00e4yt\u00e4n esimerkki\u00e4 toteutuksestani, sen on tarkoitus olla my\u00f6s vinkki <strong>transformY<\/strong> &#8211; \u00a0funktion k\u00e4ytt\u00f6\u00f6n muunnoksissa.<\/p>\n<p>Jos selaimen yhteensopivuudella on merkityst\u00e4 \u2013 mink\u00e4 joissain tapauksissa sen pit\u00e4isi olla \u2013 katso <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\">t\u00e4m\u00e4 taulukko<\/a><\/strong>. Olet varsin hyvin peitetty.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ajatus elementin dynaamisesta keskitt\u00e4misest\u00e4 liittyy vahvasti tekem\u00e4\u00e4si ty\u00f6h\u00f6n, mutta ehk\u00e4 muunnosten k\u00e4ytt\u00f6 auttaa.<\/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":[906,834,843],"tags":[1166],"class_list":["post-230301","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-5","category-opas-aloittelijoille","category-opetusohjelmia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=230301"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/230301\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/220880"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=230301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=230301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=230301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}