{"id":1114,"date":"2018-12-13T00:33:19","date_gmt":"2018-12-13T00:33:19","guid":{"rendered":"https:\/\/blog.hassler.ec\/wp\/?p=1114"},"modified":"2018-11-26T07:41:14","modified_gmt":"2018-11-26T07:41:14","slug":"how-to-understand-css-position-absolute-once-and-for-all","status":"publish","type":"post","link":"https:\/\/blog.hassler.ec\/wp\/2018\/12\/13\/how-to-understand-css-position-absolute-once-and-for-all\/","title":{"rendered":"How to understand CSS Position Absolute once and for\u00a0all"},"content":{"rendered":"<div class=\"section-inner sectionLayout--insetColumn\">\n<h2 id=\"77be\" class=\"graf graf--h4 graf-after--h3 graf--subtitle\">Stop losing your elements on the screen by understanding how an object figures where it is supposed to\u00a0sit<\/h2>\n<\/div>\n<div class=\"section-inner sectionLayout--outsetColumn\">\n<figure id=\"7a52\" class=\"graf graf--figure graf--layoutOutsetCenter graf-after--h4\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"aspectRatioPlaceholder-fill\"><\/div>\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*3ydATM3NxrGI8Bz0T6NWXQ.gif\" data-width=\"1920\" data-height=\"580\" data-is-featured=\"true\" data-action=\"zoom\" data-action-value=\"1*3ydATM3NxrGI8Bz0T6NWXQ.gif\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"22\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/900\/1*3ydATM3NxrGI8Bz0T6NWXQ.gif\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/900\/1*3ydATM3NxrGI8Bz0T6NWXQ.gif\" \/><\/div>\n<\/div>\n<\/figure>\n<\/div>\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"7ea9\" class=\"graf graf--p graf-after--figure\">Positioning an element absolutely is more about the element&#8217;s container position than its own. To be able to position itself, it has to know which parent div it\u2019s going to position itself relative to.<\/p>\n<p id=\"14a3\" class=\"graf graf--p graf-after--p\">The code below shows four nested divs.\u00a0<code class=\"markup--code markup--p-code\">.box-1<\/code>to\u00a0<code class=\"markup--code markup--p-code\">.box-3<\/code>are centered by\u00a0<code class=\"markup--code markup--p-code\">display: flex<\/code>\u00a0and\u00a0<code class=\"markup--code markup--p-code\">margin: auto<\/code>\u00a0only.\u00a0<code class=\"markup--code markup--p-code\">.box-4<\/code>\u00a0doesn&#8217;t have\u00a0<code class=\"markup--code markup--p-code\">margin<\/code>\u00a0set, and it sits in its default position in the document flow.<\/p>\n<pre id=\"db7e\" class=\"graf graf--pre graf-after--p\">&lt;body&gt;\r\n  &lt;div class=\"box-1\"&gt;\r\n    &lt;div class=\"box-2\"&gt;\r\n      &lt;div class=\"box-3\"&gt;\r\n        &lt;div class=\"box-4\"&gt;&lt;\/div&gt;\r\n      &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n  &lt;\/div&gt;\r\n&lt;\/body&gt;<\/pre>\n<p id=\"0f7b\" class=\"graf graf--p graf-after--pre\">The\u00a0<code class=\"markup--code markup--p-code\">position<\/code>\u00a0property is unset to all elements.<\/p>\n<pre id=\"8373\" class=\"graf graf--pre graf-after--p\">body {\r\n  display: flex;\r\n}<\/pre>\n<pre id=\"3bb9\" class=\"graf graf--pre graf-after--pre\">.box-1,\r\n.box-2,\r\n.box-3 {\r\n  display: flex;\r\n  margin: auto;\r\n}<\/pre>\n<figure id=\"1d60\" class=\"graf graf--figure graf-after--pre\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"aspectRatioPlaceholder-fill\"><\/div>\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*jhlTvTWbcKMkq3WuiyUJVQ.jpeg\" data-width=\"2880\" data-height=\"1800\" data-action=\"zoom\" data-action-value=\"1*jhlTvTWbcKMkq3WuiyUJVQ.jpeg\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"44\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/720\/1*jhlTvTWbcKMkq3WuiyUJVQ.jpeg\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/720\/1*jhlTvTWbcKMkq3WuiyUJVQ.jpeg\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">.box-4 default\u00a0position<\/figcaption><\/figure>\n<p id=\"f9b7\" class=\"graf graf--p graf-after--figure\">To be able to position itself, an element has to know two things:<\/p>\n<ul class=\"postList\">\n<li id=\"b3df\" class=\"graf graf--li graf-after--p\">coordinates for its\u00a0<code class=\"markup--code markup--li-code\">x<\/code>\u00a0and\u00a0<code class=\"markup--code markup--li-code\">y<\/code>\u00a0position set by either\u00a0<code class=\"markup--code markup--li-code\">top<\/code>,\u00a0<code class=\"markup--code markup--li-code\">right<\/code>,\u00a0<code class=\"markup--code markup--li-code\">bottom<\/code>,\u00a0<code class=\"markup--code markup--li-code\">left<\/code><\/li>\n<li id=\"f136\" class=\"graf graf--li graf-after--li\">which parent it\u2019s going to position itself relative to<\/li>\n<\/ul>\n<p id=\"0893\" class=\"graf graf--p graf-after--li\">On applying\u00a0<code class=\"markup--code markup--p-code\">position: absolute<\/code>\u00a0to\u00a0<code class=\"markup--code markup--p-code\">.box-4<\/code>\u00a0the element is removed from the\u00a0<code class=\"markup--code markup--p-code\"><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Learn\/CSS\/CSS_layout\/Normal_Flow\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Learn\/CSS\/CSS_layout\/Normal_Flow\">normal document flow<\/a><\/code>. Since its coordinates are not set, it simply stays at the default position which is its parent div of upper left corner.<\/p>\n<figure id=\"4e9e\" class=\"graf graf--figure graf-after--p\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"aspectRatioPlaceholder-fill\"><\/div>\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*ZZryVznNpsnMW8ZDp-I4Zg.jpeg\" data-width=\"2880\" data-height=\"1800\" data-action=\"zoom\" data-action-value=\"1*ZZryVznNpsnMW8ZDp-I4Zg.jpeg\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"44\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/720\/1*ZZryVznNpsnMW8ZDp-I4Zg.jpeg\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/720\/1*ZZryVznNpsnMW8ZDp-I4Zg.jpeg\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">.box-4 position absolute without\u00a0offset.<\/figcaption><\/figure>\n<p id=\"9fed\" class=\"graf graf--p graf-after--figure\">By setting\u00a0<code class=\"markup--code markup--p-code\">top: 0<\/code>\u00a0and\u00a0<code class=\"markup--code markup--p-code\">left: 0<\/code>\u00a0the element then has to know which parent it will consider as a reference point. To be a reference, the element has to be positioned to the screen with\u00a0<code class=\"markup--code markup--p-code\">position: relative<\/code>.\u00a0<code class=\"markup--code markup--p-code\">.box-4<\/code>\u00a0then starts asking its parent divs if they are positioned. At first, it asks\u00a0<code class=\"markup--code markup--p-code\">.box-3<\/code>\u00a0and gets\u00a0<code class=\"markup--code markup--p-code\">No, I am not positioned.<\/code>\u00a0as an answer. The same goes for\u00a0<code class=\"markup--code markup--p-code\">.box-2<\/code>\u00a0and then\u00a0<code class=\"markup--code markup--p-code\">.box-1<\/code>\u00a0, since all of them have\u00a0<code class=\"markup--code markup--p-code\">position: unset<\/code>\u00a0.<\/p>\n<p id=\"b6de\" class=\"graf graf--p graf-after--p\">As\u00a0<code class=\"markup--code markup--p-code\">.box-4<\/code>\u00a0was unable to find a positioned parent, it positions itself relative to the\u00a0<code class=\"markup--code markup--p-code\">body<\/code>. That element is always positioned to the screen:<\/p>\n<figure id=\"c84c\" class=\"graf graf--figure graf-after--p\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"aspectRatioPlaceholder-fill\"><\/div>\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*FhMM0IqxFwSIe7opYXlRkA.jpeg\" data-width=\"2880\" data-height=\"1800\" data-action=\"zoom\" data-action-value=\"1*FhMM0IqxFwSIe7opYXlRkA.jpeg\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"44\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/720\/1*FhMM0IqxFwSIe7opYXlRkA.jpeg\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/720\/1*FhMM0IqxFwSIe7opYXlRkA.jpeg\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">.box-4 position absolute. Parent divs position\u00a0unset.<\/figcaption><\/figure>\n<p id=\"32b3\" class=\"graf graf--p graf-after--figure\">If we set\u00a0<code class=\"markup--code markup--p-code\">position: relative<\/code>\u00a0to\u00a0<code class=\"markup--code markup--p-code\">.box-1<\/code>\u00a0, when\u00a0<code class=\"markup--code markup--p-code\">.box-4<\/code>\u00a0asks it:\u00a0<code class=\"markup--code markup--p-code\">Are you positioned?<\/code>\u00a0it gets\u00a0<code class=\"markup--code markup--p-code\">Yes I am.<\/code>\u00a0as an answer. And then\u00a0<code class=\"markup--code markup--p-code\">.box-4<\/code>\u00a0will be positioned relative to\u00a0<code class=\"markup--code markup--p-code\">.box-1<\/code>\u00a0:<\/p>\n<figure id=\"b24f\" class=\"graf graf--figure graf-after--p\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"aspectRatioPlaceholder-fill\"><\/div>\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*l_RbXFwlFqmdZLEE_X5NAw.jpeg\" data-width=\"2880\" data-height=\"1800\" data-action=\"zoom\" data-action-value=\"1*l_RbXFwlFqmdZLEE_X5NAw.jpeg\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"44\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/720\/1*l_RbXFwlFqmdZLEE_X5NAw.jpeg\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/720\/1*l_RbXFwlFqmdZLEE_X5NAw.jpeg\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">.box-4 position absolute,\u00a0.box-1 position relative.<\/figcaption><\/figure>\n<p id=\"db7d\" class=\"graf graf--p graf-after--figure\">The same goes for\u00a0<code class=\"markup--code markup--p-code\">.box-2<\/code>\u00a0and\u00a0<code class=\"markup--code markup--p-code\">.box-3<\/code>\u00a0.<\/p>\n<p id=\"d924\" class=\"graf graf--p graf-after--p\"><span class=\"markup--quote markup--p-quote is-other\" data-creator-ids=\"anon\"><strong class=\"markup--strong markup--p-strong\">The absolutely positioned element will position itself relative to the nearest positioned ancestor.<\/strong><\/span><\/p>\n<p id=\"64b4\" class=\"graf graf--p graf-after--p\">As soon as it finds a positioned ancestor, the position of the elements above that one is no longer relevant. The images below show the layout on setting\u00a0<code class=\"markup--code markup--p-code\">position: relative<\/code>\u00a0to\u00a0<code class=\"markup--code markup--p-code\">.box-2\u00a0<\/code>and\u00a0<code class=\"markup--code markup--p-code\">.box-3<\/code>\u00a0, respectively:<\/p>\n<\/div>\n<div class=\"section-inner sectionLayout--outsetRow\" data-paragraph-count=\"2\">\n<figure id=\"e9ea\" class=\"graf graf--figure graf--layoutOutsetRow is-partialWidth graf-after--p\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"aspectRatioPlaceholder-fill\"><\/div>\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*HgvoIGV8aUd2b6pAKCEDCA.jpeg\" data-width=\"2880\" data-height=\"1800\" data-action=\"zoom\" data-action-value=\"1*HgvoIGV8aUd2b6pAKCEDCA.jpeg\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"44\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/540\/1*HgvoIGV8aUd2b6pAKCEDCA.jpeg\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/540\/1*HgvoIGV8aUd2b6pAKCEDCA.jpeg\" \/><\/div>\n<\/div>\n<\/figure>\n<figure id=\"086d\" class=\"graf graf--figure graf--layoutOutsetRowContinue is-partialWidth graf-after--figure\" data-scroll=\"native\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"aspectRatioPlaceholder-fill\"><\/div>\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*wmjGtit8bmgDC0sFeE50pg.jpeg\" data-width=\"2880\" data-height=\"1800\" data-action=\"zoom\" data-action-value=\"1*wmjGtit8bmgDC0sFeE50pg.jpeg\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"44\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/540\/1*wmjGtit8bmgDC0sFeE50pg.jpeg\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/540\/1*wmjGtit8bmgDC0sFeE50pg.jpeg\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">.box-4 position absolute,\u00a0.box-2 and\u00a0.box-3 position relative, respectively.<\/figcaption><\/figure>\n<\/div>\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"9310\" class=\"graf graf--p graf-after--figure\">You can also find a video explanation at\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/youtu.be\/VFt_n4M9Vyk\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/youtu.be\/VFt_n4M9Vyk\">Code Sketch Channel<\/a>\u00a0?.<\/p>\n<p id=\"6752\" class=\"graf graf--p graf-after--p graf--trailing\">Thanks for reading! \u270c\ufe0f<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Source\u00a0<a href=\"https:\/\/medium.freecodecamp.org\/how-to-understand-css-position-absolute-once-and-for-all-b71ca10cd3fd\"><strong>https:\/\/medium.freecodecamp.org\/how-to-understand-css-position-absolute-once-and-for-all-b71ca10cd3fd<\/strong><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Written by<\/p>\n<div class=\"u-tableCell\"><a class=\"link u-baseColor--link avatar\" dir=\"auto\" title=\"Go to the profile of Marina Ferreira\" href=\"https:\/\/medium.freecodecamp.org\/@marina.ferreira.developer?source=footer_card\" aria-label=\"Go to the profile of Marina Ferreira\" data-action-source=\"footer_card\" data-user-id=\"72edcaad19de\" data-collection-slug=\"free-code-camp\"><img decoding=\"async\" class=\"avatar-image avatar-image--small alignleft\" src=\"https:\/\/cdn-images-1.medium.com\/fit\/c\/54\/54\/1*qFDyoRHR9QZGjhOxYvwoIQ.png\" alt=\"Go to the profile of Marina Ferreira\" \/><\/a><\/div>\n<div class=\"u-tableCell u-verticalAlignMiddle u-breakWord u-paddingLeft15\">\n<h3 class=\"ui-h3 u-fontSize18 u-lineHeightTighter u-marginBottom4\"><a class=\"link link--primary u-accentColor--hoverTextNormal\" dir=\"auto\" title=\"Go to the profile of Marina Ferreira\" href=\"https:\/\/medium.freecodecamp.org\/@marina.ferreira.developer\" rel=\"author cc:attributionUrl\" aria-label=\"Go to the profile of Marina Ferreira\" data-user-id=\"72edcaad19de\" data-collection-slug=\"free-code-camp\">Marina Ferreira<\/a><\/h3>\n<p class=\"ui-body u-fontSize14 u-lineHeightBaseSans u-textColorDark u-marginBottom4\">Software Engineer from S\u00e3o Paulo, Brazil.<\/p>\n<div class=\"u-tableCell \"><a class=\"link u-baseColor--link avatar avatar--roundedRectangle\" title=\"Go to freeCodeCamp.org\" href=\"https:\/\/medium.freecodecamp.org\/?source=footer_card\" aria-label=\"Go to freeCodeCamp.org\" data-action-source=\"footer_card\" data-collection-slug=\"free-code-camp\"><img decoding=\"async\" class=\"avatar-image u-size60x60 alignleft\" src=\"https:\/\/cdn-images-1.medium.com\/fit\/c\/54\/54\/1*MotlWcSa2n6FrOx3ul89kw.png\" alt=\"freeCodeCamp.org\" \/><\/a><\/div>\n<div class=\"u-tableCell u-verticalAlignMiddle u-breakWord u-paddingLeft15\">\n<h3 class=\"ui-h3 u-fontSize18 u-lineHeightTighter u-marginBottom4\"><a class=\"link link--primary u-accentColor--hoverTextNormal\" href=\"https:\/\/medium.freecodecamp.org\/?source=footer_card\" rel=\"collection\" data-action-source=\"footer_card\" data-collection-slug=\"free-code-camp\">freeCodeCamp.org<\/a><\/h3>\n<p class=\"ui-body u-fontSize14 u-lineHeightBaseSans u-textColorDark u-marginBottom4\">Stories worth reading about programming and technology from our open source community.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Stop losing your elements on the screen by understanding how an object figures where it is supposed to\u00a0sit Positioning an [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1116,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[49,12,50,88,51,119,118,44,47,29,115,116],"tags":[],"class_list":["post-1114","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-back-end","category-bloghassler-ec","category-css","category-design","category-flexbox","category-html","category-internet","category-javascript","category-medium","category-programacion","category-progresisive-web-apps","category-pwa"],"_links":{"self":[{"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/posts\/1114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/comments?post=1114"}],"version-history":[{"count":2,"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/posts\/1114\/revisions"}],"predecessor-version":[{"id":1118,"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/posts\/1114\/revisions\/1118"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/media\/1116"}],"wp:attachment":[{"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/media?parent=1114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/categories?post=1114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.hassler.ec\/wp\/wp-json\/wp\/v2\/tags?post=1114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}