{"id":1628,"date":"2025-12-12T17:15:42","date_gmt":"2025-12-12T16:15:42","guid":{"rendered":"https:\/\/bitsolto.com\/bitacora\/?p=1628"},"modified":"2025-12-12T17:17:52","modified_gmt":"2025-12-12T16:17:52","slug":"a-funcion-css-if","status":"publish","type":"post","link":"https:\/\/bitsolto.com\/bitacora\/blog\/a-funcion-css-if\/","title":{"rendered":"A funci\u00f3n CSS if()"},"content":{"rendered":"<p>Cantas veces pensaches en poder establecer propiedades CSS base\u00e1ndote en determinadas condici\u00f3ns: <em>Si se da unha condici\u00f3n aplicamos un estilo, se a condici\u00f3n cambia, o estilo tam\u00e9n cambia<\/em>?<\/p>\n<p>Seguro que para responder esta pregunta se che ocorren unhas cantas soluci\u00f3ns.<\/p>\n<h3><strong>a) empregar <code>calc()<\/code> con variables CSS (&#8211;var)<\/strong><\/h3>\n<p>O m\u00e1is pr\u00f3ximo a l\u00f3xica condicional:<\/p>\n<pre><code class=\"language-css\">:root {\n  --es-grande: 0; \/* 0 = falso, 1 = verdadeiro *\/\n}\n\n.elemento {\n  \/* Se --es-grande \u00e9 1 \u2192 200px, se \u00e9 0 \u2192 100px *\/\n  width: calc(100px + var(--es-grande) * 100px);\n  height: calc(50px + var(--es-grande) * 50px);\n}<\/code><\/pre>\n<h3><strong>b) Variables CSS con valores alternativos (<code>var(--a, fallback)<\/code>)<\/strong><\/h3>\n<pre><code class=\"language-css\">.elemento {\n  --mi-ancho: var(--ancho-personalizado, 200px); \/* Fallback *\/\n  width: var(--mi-ancho);\n}<\/code><\/pre>\n<h3><strong>c) Media Queries (condici\u00f3ns baseadas no contexto)<\/strong><\/h3>\n<pre><code class=\"language-css\">\/* &quot;If&quot; a pantalla \u00e9 maior de 768px *\/\n.elemento {\n  width: 100%;\n}\n\n@media (min-width: 768px) {\n  .elemento {\n    width: 50%; \/* Valor diferente *\/\n  }\n}<\/code><\/pre>\n<h3><strong>d) <code>min()<\/code>, <code>max()<\/code>, <code>clamp()<\/code> (l\u00f3xica matem\u00e1tica)<\/strong><\/h3>\n<p><strong>Soporte total en navegadores modernos<\/strong> (2024+).<\/p>\n<pre><code class=\"language-css\">\/* Exemplo pr\u00e1ctico: Ancho responsivo con l\u00edmites *\/\n.contenedor {\n  width: min(100%, 1200px); \/* Nunca m\u00e1is de 1200px *\/\n}\n\n\/* Font-size responsiva *\/\n.texto {\n  font-size: clamp(1rem, 2.5vw, 2rem); \/* M\u00ednimo 1rem, m\u00e1ximo 2rem *\/\n}\n\n\/* &quot;If&quot; impl\u00edcito con max() *\/\n.boton {\n  padding: max(1rem, 3%); \/* O maior dos dous valores *\/\n}<\/code><\/pre>\n<h3><strong>e) <code>@supports<\/code> (feature queries)<\/strong><\/h3>\n<pre><code class=\"language-css\">\/* &quot;if&quot; o navegador soporta grid *\/\n@supports (display: grid) {\n  .contenedor {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n  }\n}\n\n\/* &quot;if&quot; NON soporta grid *\/\n@supports not (display: grid) {\n  .contenedor {\n    display: flex;\n    flex-wrap: wrap;\n  }\n}<\/code><\/pre>\n<p>Vexamos alg\u00fans exemplos de todo isto:<\/p>\n<h3><strong>Exemplo 1: Tema claro\/escuro<\/strong><\/h3>\n<pre><code class=\"language-css\">:root {\n  --tema: 0; \/* 0 = claro, 1 = escuro *\/\n  --fondo: calc(255 - var(--tema) * 200);\n  --texto: calc(var(--tema) * 200);\n}\n\nbody {\n  background-color: rgb(var(--fondo), var(--fondo), var(--fondo));\n  color: rgb(var(--texto), var(--texto), var(--texto));\n}<\/code><\/pre>\n<h3><strong>Exemplo 2: Layout condicional<\/strong><\/h3>\n<pre><code class=\"language-css\">:root {\n  --sidebar-active: 0; \/* 0 = oculto, 1 = visible *\/\n}\n\n.main-content {\n  width: calc(100% - var(--sidebar-active) * 300px);\n}\n\n.sidebar {\n  transform: translateX(calc((1 - var(--sidebar-active)) * -100%));\n}<\/code><\/pre>\n<h3><strong>Exemplo 3: Spacing responsive con clamp()<\/strong><\/h3>\n<pre><code class=\"language-css\">.card {\n  \/* Espazo que cambia co ancho pero con l\u00edmites *\/\n  padding: clamp(1rem, 5vw, 3rem);\n  margin: clamp(0.5rem, 3vw, 2rem);\n\n  \/* Gap condicional *\/\n  gap: max(1rem, min(4vw, 2rem));\n}<\/code><\/pre>\n<h3><strong>Soporte dos navegadores (2025)<\/strong><\/h3>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">T\u00e9cnica<\/th>\n<th style=\"text-align: left;\">Chrome<\/th>\n<th style=\"text-align: left;\">Firefox<\/th>\n<th style=\"text-align: left;\">Safari<\/th>\n<th style=\"text-align: left;\">Edge<\/th>\n<th style=\"text-align: left;\">Soporte<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>min()<\/code>\/<code>max()<\/code><\/td>\n<td style=\"text-align: left;\">79+<\/td>\n<td style=\"text-align: left;\">75+<\/td>\n<td style=\"text-align: left;\">13.1+<\/td>\n<td style=\"text-align: left;\">79+<\/td>\n<td style=\"text-align: left;\"><strong>Total<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>clamp()<\/code><\/td>\n<td style=\"text-align: left;\">79+<\/td>\n<td style=\"text-align: left;\">75+<\/td>\n<td style=\"text-align: left;\">13.1+<\/td>\n<td style=\"text-align: left;\">79+<\/td>\n<td style=\"text-align: left;\"><strong>Total<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>calc()<\/code><\/td>\n<td style=\"text-align: left;\">26+<\/td>\n<td style=\"text-align: left;\">16+<\/td>\n<td style=\"text-align: left;\">7+<\/td>\n<td style=\"text-align: left;\">12+<\/td>\n<td style=\"text-align: left;\"><strong>Total<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>@supports<\/code><\/td>\n<td style=\"text-align: left;\">28+<\/td>\n<td style=\"text-align: left;\">22+<\/td>\n<td style=\"text-align: left;\">9+<\/td>\n<td style=\"text-align: left;\">12+<\/td>\n<td style=\"text-align: left;\"><strong>Total<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Variables CSS<\/td>\n<td style=\"text-align: left;\">49+<\/td>\n<td style=\"text-align: left;\">31+<\/td>\n<td style=\"text-align: left;\">9.1+<\/td>\n<td style=\"text-align: left;\">15+<\/td>\n<td style=\"text-align: left;\"><strong>Total<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>if()<\/code> proposta<\/td>\n<td style=\"text-align: left;\">137+<\/td>\n<td style=\"text-align: left;\">\u274c<\/td>\n<td style=\"text-align: left;\">\u274c<\/td>\n<td style=\"text-align: left;\">\u274c<\/td>\n<td style=\"text-align: left;\"><strong>M\u00ednimo<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Vale! iso \u00e9 algo que xa fixeches moitas veces con axuda de JavaScript ou recorrendo a t\u00e9cnicas alternativas en CSS como as que se enumeran aqu\u00ed. Pero, e que che parecer\u00eda poder facelo con s\u00f3 CSS?<\/p>\n<p>Desde fai xa tempo existe unha <strong>proposta<\/strong> para <code>if()<\/code> no borrador de <em>CSS Values Level 4<\/em>, pero polo de agora <strong>ning\u00fan navegador o soporta actualmente<\/strong> de forma nativa, excepto Chrome 137+.<\/p>\n<p>Certo que case ning\u00fan outro navegador lle da soporte, de momento. Pero todo se andar\u00e1!<\/p>\n<p>Pero mentres  agardamos pola extensi\u00f3n completa do soporte de <code>if()<\/code> nativo en CSS, as funci\u00f3ns <strong><code>min()<\/code>, <code>max()<\/code>, <code>clamp()<\/code>, <code>calc()<\/code> combinadas con variables CSS e <code>@supports<\/code><\/strong> ofrecen capacidades de l\u00f3xica moi potentes con <strong>soporte universal en navegadores modernos<\/strong>. <\/p>\n<ol>\n<li><strong><code>clamp()<\/code><\/strong> para valores responsivos con l\u00edmites<\/li>\n<li><strong><code>@supports<\/code><\/strong> para fallbacks compatibles<\/li>\n<li><strong>combinaci\u00f3n de t\u00e9cnicas<\/strong> para l\u00f3xica complexa:<\/li>\n<\/ol>\n<pre><code class=\"language-css\">.elemento {\n  \/* l\u00f3xica condicional complexa *\/\n  width: var(--custom-width, clamp(300px, 50vw, 800px));\n}<\/code><\/pre>\n<ol start=\"4\">\n<li>Para casos complexos, os preprocesadores seguen sendo unha opci\u00f3n v\u00e1lida, con <strong>ferramentas para &quot;CSS condicional&quot;<\/strong> como:\n<ul>\n<li><strong>Sass\/Less<\/strong>: Ofrecen <code>@if<\/code>, <code>@else<\/code> no preprocesado<\/li>\n<li><strong>PostCSS<\/strong>: Plugins como <code>postcss-conditionals<\/code><\/li>\n<li><strong>CSS-in-JS<\/strong>: L\u00f3xica real de JavaScript (Styled-components, Emotion)<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Dado o soporte que ofrece xa Chrome 137+, podemos dar por descontado que pouco a pouco o resto de navegadores iran incorporando este soporte.<\/p>\n<h2>Capacidades da funci\u00f3n if()<\/h2>\n<p>Tal como se planea, a funci\u00f3n <code>if()<\/code> introduce a l\u00f3xica condicional nativa en CSS:<\/p>\n<pre><code class=\"language-css\">propiedade: if(\n  condicion-1: valor-1;\n  condicion-2: valor-2;\n  condicion-3: valor-3;\n  else: valor-por-defecto\n)<\/code><\/pre>\n<p>A funci\u00f3n comproba as condici\u00f3ns de forma secuencial e aplica o valor axeitado correspondente. Se ningunha condici\u00f3n coincide, \u00fasase o valor <code>else<\/code> \u2014 tal e como se esperar\u00eda das linguaxes de programaci\u00f3n, pero agora en CSS -.<\/p>\n<p>A funci\u00f3n <code>if()<\/code> contar\u00e1 con tres capacidades b\u00e1sicas:<\/p>\n<h3>1. Consultas de estilo: <code>style()<\/code><\/h3>\n<p>Con <code>style()<\/code>, podes reaccionar \u00e1s propiedades personalizadas CSS:<\/p>\n<pre><code class=\"language-css\">.card {\n  --status: attr(data-status type(&lt;custom-ident&gt;));\n\n  border-color: if(\n    style(--status: pending): royalblue;\n    style(--status: complete): seagreen;\n    style(--status: error): crimson;\n    else: gray\n  );\n}<\/code><\/pre>\n<p>Un \u00fanico atributo <code>data-status<\/code> en HTML controla agora todo o estilo \u2014 xa non precisas m\u00e1is clases de utilidade-.<\/p>\n<h3>2. Consultas de medios: <code>media()<\/code><\/h3>\n<p>Con <code>media()<\/code>, defines valores responsivos en li\u00f1a, evitando as\u00ed os bloques de consulta multimedia (<code><code>@media<\/code><\/code> query) ani\u00f1ados. :<\/p>\n<pre><code class=\"language-css\">h1 {\n  font-size: if(\n    media(width &gt;= 1200px): 3rem;\n    media(width &gt;= 768px): 2.5rem;\n    media(width &gt;= 480px): 2rem;\n    else: 1.75rem\n  );<\/code><\/pre>\n<h3>3. Detecci\u00f3n de caracter\u00edsticas: <code>supports()<\/code><\/h3>\n<p>Con <code>supports()<\/code>, se comproban as funci\u00f3ns do navegador directamente na propiedade:<\/p>\n<pre><code class=\"language-css\">.element {\n  border-color: if(\n    supports(color: lch(0 0 0)): lch(50% 100 150);\n    supports(color: lab(0 0 0)): lab(50 100 -50);\n    else: rgb(200, 100, 50)\n  );\n}<\/code><\/pre>\n<h2>Casos de uso<\/h2>\n<h3>Modo escuro en tres li\u00f1a<\/h3>\n<pre><code class=\"language-css\">body {\n  --theme: &quot;dark&quot;; \/* Toggle via JavaScript or User Preference *\/\n\n  background: if(\n    style(--theme: &quot;dark&quot;): #1a1a1a;\n    else: white\n  );\n\n  color: if(\n    style(--theme: &quot;dark&quot;): #e4e4e4;\n    else: #333\n  );\n}<\/code><\/pre>\n<h3>Compo\u00f1entes do estado do sistema de dese\u00f1o<\/h3>\n<pre><code class=\"language-css\">.alert {\n  --type: attr(data-type type(&lt;custom-ident&gt;));\n\n  background: if(\n    style(--type: success): #d4edda;\n    style(--type: warning): #fff3cd;\n    style(--type: danger): #f8d7da;\n    style(--type: info): #d1ecf1;\n    else: #f8f9fa\n  );\n\n  border-left: 4px solid if(\n    style(--type: success): #28a745;\n    style(--type: warning): #ffc107;\n    style(--type: danger): #dc3545;\n    style(--type: info): #17a2b8;\n    else: #6c757d\n  );\n}<\/code><\/pre>\n<h3>Contedor sen caos de consultas de medios<\/h3>\n<pre><code class=\"language-css\">.container {\n  width: if(\n    media(width &gt;= 1400px): 1320px;\n    media(width &gt;= 1200px): 1140px;\n    media(width &gt;= 992px): 960px;\n    media(width &gt;= 768px): 720px;\n    media(width &gt;= 576px): 540px;\n    else: 100%\n  );\n\n  padding-inline: if(\n    media(width &gt;= 768px): 2rem;\n    else: 1rem\n  );\n}<\/code><\/pre>\n<h3>Combinaci\u00f3n con funci\u00f3ns modernas de CSS<\/h3>\n<pre><code class=\"language-css\">.element {\n  \/* With the new light-dark() function *\/\n  color: if(\n    style(--high-contrast: true): black;\n    else: light-dark(#333, #e4e4e4)\n  );\n\n  \/* With CSS Custom Functions (@function) *\/\n  padding: if(\n    style(--spacing: loose): --spacing-function(2);\n    style(--spacing: tight): --spacing-function(0.5);\n    else: --spacing-function(1)\n  );\n}<\/code><\/pre>\n<h2>Lembra<\/h2>\n<p>A data Nadal 2025 este \u00e9 o soporte para funci\u00f3n nativa de CSS <code>if()<\/code>:<\/p>\n<ul>\n<li>\u2705 Chrome\/Edge: Da versi\u00f3n 137<\/li>\n<li>\u2705 Chrome Android: Da versi\u00f3n 139<\/li>\n<li>\u274c Firefox: En desenvolvemento<\/li>\n<li>\u274c Safari: Na folla de ruta<\/li>\n<li>\u274c \u00d3pera: A\u00ednda sen apoio<\/li>\n<\/ul>\n<p>Como o soporte segue a medrar, podes usar este patr\u00f3n:<\/p>\n<pre><code>.button {\n  \/* Fallback for all browsers *\/\n  padding: 1rem 2rem;\n  background: #007bff;\n\n  \/* Modern browsers automatically override *\/\n  padding: if(\n    style(--size: small): 0.5rem 1rem;\n    style(--size: large): 1.5rem 3rem;\n    else: 1rem 2rem\n  );\n\n  background: if(\n    style(--variant: primary): #007bff;\n    style(--variant: success): #28a745;\n    style(--variant: danger): #dc3545;\n    else: #6c757d\n  );\n}<\/code><\/pre>\n<h2>O que depara o futuro<\/h2>\n<p>O Grupo de Traballo CSS xa est\u00e1 a traballar en extensi\u00f3ns para esta nova funci\u00f3n:<\/p>\n<ul>\n<li>Consultas sobre o rango: <code>if(style(--value &gt; 100): ...)<\/code><\/li>\n<li>Operadores l\u00f3xicos: <code>if(style(--a: true) and style(--b: false): ...)<\/code><\/li>\n<li>Integraci\u00f3n de Consultas de Contedores: A\u00ednda m\u00e1is conciencia do contexto.<\/li>\n<\/ul>\n<hr \/>\n<p>ref:<\/p>\n<ul>\n<li><a href=\"https:\/\/medium.com\/@karstenbiedermann\/the-css-if-function-has-arrived-152115ab2115\">The CSS if() Function Has Arrived! | by Karsten Biedermann | Medium<\/a><\/li>\n<li><a href=\"https:\/\/css-tricks.com\/lightly-poking-at-the-css-if-function-in-chrome-137\/\">Lightly Poking at the CSS if() Function in Chrome 137 | CSS-Tricks<\/a><\/li>\n<li><a href=\"https:\/\/css-tip.com\/inline-if\/\">How to correctly use if() in CSS<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Cantas veces pensaches en poder establecer propiedades CSS base\u00e1ndote en determinadas condici\u00f3ns: Si se da unha condici\u00f3n aplicamos un estilo, se a condici\u00f3n cambia, o estilo tam\u00e9n cambia? Seguro que para responder esta pregunta se che ocorren unhas cantas soluci\u00f3ns. a) empregar calc() con variables CSS (&#8211;var) O m\u00e1is pr\u00f3ximo a l\u00f3xica condicional: :root { [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","omw_enable_modal_window":"enable","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1628","post","type-post","status-publish","format-standard","hentry","category-blog","entry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/posts\/1628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/comments?post=1628"}],"version-history":[{"count":2,"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/posts\/1628\/revisions"}],"predecessor-version":[{"id":1630,"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/posts\/1628\/revisions\/1630"}],"wp:attachment":[{"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/media?parent=1628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/categories?post=1628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitsolto.com\/bitacora\/wp-json\/wp\/v2\/tags?post=1628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}