{"id":72701,"date":"2024-09-02T18:00:09","date_gmt":"2024-09-02T10:00:09","guid":{"rendered":"https:\/\/www.hongkiat.com\/blog\/?p=72701"},"modified":"2024-10-29T19:50:51","modified_gmt":"2024-10-29T11:50:51","slug":"css-property-rule","status":"publish","type":"post","link":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/","title":{"rendered":"Getting Started with CSS @property Rule"},"content":{"rendered":"<p>The CSS <code>@property<\/code> is a powerful feature that brings more control and flexibility to custom properties, also known as <a href=\"https:\/\/www.hongkiat.com\/blog\/css-variables\/\">CSS variables<\/a>.<\/p>\n<p>It is introduced as part of the <a href=\"https:\/\/www.youtube.com\/watch?v=5eBar5TI71M\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">CSS Houdini<\/a> project, which is designed to provide developers with deeper access to the browser\u2019s rendering engine. The <code>@property<\/code> rule allows you to define custom properties with specific types, default values, and even the capability to <a href=\"https:\/\/www.hongkiat.com\/blog\/animatecss-css3-animation-library\/\">animate CSS properties<\/a>.<\/p>\n<p>In this article, we\u2019ll explore what the <code>@property<\/code> rule is, why it\u2019s useful, and how you can leverage it in your web projects.<\/p>\n<h2>What is <code>@property<\/code> for?<\/h2>\n<p>CSS custom properties, also known as CSS variables, have made styles more reusable. It allows you to define a value once and use it throughout your stylesheet.<\/p>\n<p>However, one limitation has been the inability to specify a property\u2019s type or set default values directly in CSS. This means any value can be assigned to a custom property, which can lead to unexpected results and make it harder to maintain your styles in some situations.<\/p>\n<p>This is where the <code>@property<\/code> rule comes in. It allows you to set a default value, provides a fallback value that will be used if the custom property is not explicitly set, enables custom property animation, and defines a type for a custom property.<\/p>\n<p>This ensures that a variable can only accept a specific data type, such as a length, color, or number.<\/p>\n<p>The type of the property is defined with the <code>syntax<\/code> property. It accepts a string value defining the CSS type value, as follows:<\/p>\n<table>\n<thead>\n<tr>\n<th>Type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>&lt;length&gt;<\/code><\/td>\n<td>Any valid <code>&lt;length&gt;<\/code> values e.g., 10px, 2em, 50%, 3rem<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;number&gt;<\/code><\/td>\n<td>Any valid <code>&lt;number&gt;<\/code> values e.g., 1, 0.5, -3, 100<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;percentage&gt;<\/code><\/td>\n<td>Any valid <code>&lt;percentage&gt;<\/code> values e.g., 50%, 100%, 25%<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;length-percentage&gt;<\/code><\/td>\n<td>Any valid <code>&lt;length-percentage&gt;<\/code> values e.g., 10px, 50%, 2em, 75%<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;color&gt;<\/code><\/td>\n<td>Any valid <code>&lt;color&gt;<\/code> values e.g., #ff0000, rgb(255, 0, 0), rgba(255, 0, 0, 0.5), blue<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;image&gt;<\/code><\/td>\n<td>Any valid <code>&lt;image&gt;<\/code> values e.g., url(image.jpg), linear-gradient(to right, red, blue)<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;url&gt;<\/code><\/td>\n<td>Any valid <code>url()<\/code> values e.g., url(\u2018https:\/\/example.com\/image.jpg\u2019)<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;integer&gt;<\/code><\/td>\n<td>Any valid <code>&lt;integer&gt;<\/code> values e.g., 1, -10, 42<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;angle&gt;<\/code><\/td>\n<td>Any valid <code>&lt;angle&gt;<\/code> values e.g., 45deg, 0.5turn, 1rad<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;time&gt;<\/code><\/td>\n<td>Any valid <code>&lt;time&gt;<\/code> values e.g., 1s, 500ms, 0.75s<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;resolution&gt;<\/code><\/td>\n<td>Any valid <code>&lt;resolution&gt;<\/code> values e.g., 300dpi, 2dppx<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;transform-function&gt;<\/code><\/td>\n<td>Any valid <code>&lt;transform-function&gt;<\/code> values e.g., rotate(45deg), scale(1.5), translateX(100px)<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;custom-ident&gt;<\/code><\/td>\n<td>Any valid <code>&lt;custom-ident&gt;<\/code> values e.g., \u2013my-variable, custom-identifier<\/td>\n<\/tr>\n<tr>\n<td><code>&lt;transform-list&gt;<\/code><\/td>\n<td>A list of valid <code>&lt;transform-function&gt;<\/code> values e.g., rotate(45deg) scale(1.5) translateX(100px)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Example<\/h2>\n<p>Let\u2019s say we have a button component. We\u2019d like to define some defaults on this component. Traditionally, we could use custom properties to define the background color and border radius of the button component, like so:<\/p>\n<pre>\r\n.button {\r\n  background-color: #fff;\r\n  border-radius: 8px;\r\n}\r\n<\/pre>\n<p>Or, use CSS variables to define the values once and reuse them throughout the stylesheet:<\/p>\n<pre>\r\n:root {\r\n  --button-bg: #fff;\r\n  --button-rounded: 8px;\r\n}\r\n<\/pre>\n<p>But, what if we want to ensure that the background color is always a valid color value, and the border radius is always a valid length value?<\/p>\n<p>We can use the <code>@property<\/code> rule to define the type of these custom properties and set default values.<\/p>\n<p>To do so, we could create a couple of custom properties defined with the following options in the <code>@property<\/code> rule:<\/p>\n<pre>\r\n@property --button-bg {\r\n  syntax: '&lt;color&gt;';\r\n  initial-value: #0D74CE;\r\n  inherits: false;\r\n}\r\n@property --button-rounded {\r\n  syntax: '&lt;length&gt;';\r\n  initial-value: 8px;\r\n  inherits: false;\r\n}\r\n<\/pre>\n<p>In this example, we have two custom properties defining the background color and border radius of the button component.<\/p>\n<p>We use the <code>syntax<\/code> property to define the type of the custom property, while the <code>initial-value<\/code> property sets the default value.<\/p>\n<p>We also use the <code>inherits<\/code> property to specify whether the custom property inherits its value from its parent element, in which case we set them all to false to avoid inheritance.<\/p>\n<p>Once they are set, we can now use these custom properties in our styles, like so:<\/p>\n<pre>\r\n.button {\r\n  background-color: var(--button-bg);\r\n  border-radius: var(--button-rounded);\r\n}\r\n<\/pre>\n<p class=\"codepen\" data-height=\"450\" data-default-tab=\"css,result\" data-slug-hash=\"abgKvrN\" data-pen-title=\"CSS @property\" data-user=\"hkdc\" style=\"height: 450px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;\"> <span>See the Pen <a href=\"https:\/\/codepen.io\/hkdc\/pen\/abgKvrN\" rel=\"nofollow\"> CSS @property<\/a> by HONGKIAT (<a href=\"https:\/\/codepen.io\/hkdc\" rel=\"nofollow\">@hkdc<\/a>)\n  on <a href=\"https:\/\/codepen.io\" rel=\"nofollow\">CodePen<\/a>.<\/span><\/p>\n<p><script async src=\"https:\/\/cpwebassets.codepen.io\/assets\/embed\/ei.js\"><\/script><\/p>\n<h2>Wrapping up<\/h2>\n<p>The CSS <code>@property<\/code> rule brings a significant step forward to CSS custom properties, or CSS variables. All major and latest browsers already support the CSS <code>@property<\/code> rule.<\/p>\n<table>\n<thead>\n<tr>\n<th>Browser<\/th>\n<th>Desktop Version<\/th>\n<th>Mobile Version<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Google Chrome<\/td>\n<td>85 and later<\/td>\n<td>85 and later<\/td>\n<\/tr>\n<tr>\n<td>Mozilla Firefox<\/td>\n<td>128 and later<\/td>\n<td>Not supported<\/td>\n<\/tr>\n<tr>\n<td>Safari<\/td>\n<td>15.4 and later<\/td>\n<td>15.4 and later (iOS)<\/td>\n<\/tr>\n<tr>\n<td>Microsoft Edge<\/td>\n<td>85 and later<\/td>\n<td>85 and later<\/td>\n<\/tr>\n<tr>\n<td>Opera<\/td>\n<td>71 and later<\/td>\n<td>71 and later<\/td>\n<\/tr>\n<tr>\n<td>Samsung Internet<\/td>\n<td>14.0 and later<\/td>\n<td>14.0 and later<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To sum up, the CSS <code>@property<\/code> rule is a powerful feature and a great addition to the CSS language that can help you write more maintainable and type-safe stylesheets. If you haven\u2019t already, give it a try in your next project!<\/p>","protected":false},"excerpt":{"rendered":"<p>The CSS @property is a powerful feature that brings more control and flexibility to custom properties, also known as CSS variables. It is introduced as part of the CSS Houdini project, which is designed to provide developers with deeper access to the browser\u2019s rendering engine. The @property rule allows you to define custom properties with&hellip;<\/p>\n","protected":false},"author":113,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3392],"tags":[507],"topic":[],"class_list":["entry-content","is-maxi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Getting Started with CSS @property Rule - Hongkiat<\/title>\n<meta name=\"description\" content=\"The CSS @property is a powerful feature that brings more control and flexibility to custom properties, also known as CSS variables. It is introduced as\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting Started with CSS @property Rule\" \/>\n<meta property=\"og:description\" content=\"The CSS @property is a powerful feature that brings more control and flexibility to custom properties, also known as CSS variables. It is introduced as\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/\" \/>\n<meta property=\"og:site_name\" content=\"Hongkiat\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hongkiatcom\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-02T10:00:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-29T11:50:51+00:00\" \/>\n<meta name=\"author\" content=\"Thoriq Firdaus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tfirdaus\" \/>\n<meta name=\"twitter:site\" content=\"@hongkiat\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thoriq Firdaus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/css-property-rule\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/css-property-rule\\\/\"},\"author\":{\"name\":\"Thoriq Firdaus\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\"},\"headline\":\"Getting Started with CSS @property Rule\",\"datePublished\":\"2024-09-02T10:00:09+00:00\",\"dateModified\":\"2024-10-29T11:50:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/css-property-rule\\\/\"},\"wordCount\":696,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"keywords\":[\"CSS\"],\"articleSection\":[\"Coding\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/css-property-rule\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/css-property-rule\\\/\",\"name\":\"Getting Started with CSS @property Rule - Hongkiat\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\"},\"datePublished\":\"2024-09-02T10:00:09+00:00\",\"dateModified\":\"2024-10-29T11:50:51+00:00\",\"description\":\"The CSS @property is a powerful feature that brings more control and flexibility to custom properties, also known as CSS variables. It is introduced as\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/css-property-rule\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/css-property-rule\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/css-property-rule\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with CSS @property Rule\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"name\":\"Hongkiat\",\"description\":\"Tech and Design Tips\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\",\"name\":\"Hongkiat.com\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"contentUrl\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"width\":1200,\"height\":799,\"caption\":\"Hongkiat.com\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hongkiatcom\",\"https:\\\/\\\/x.com\\\/hongkiat\",\"https:\\\/\\\/www.pinterest.com\\\/hongkiat\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\",\"name\":\"Thoriq Firdaus\",\"description\":\"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.\",\"sameAs\":[\"https:\\\/\\\/thoriq.com\",\"https:\\\/\\\/x.com\\\/tfirdaus\"],\"jobTitle\":\"Web Developer\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/author\\\/thoriq\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Getting Started with CSS @property Rule - Hongkiat","description":"The CSS @property is a powerful feature that brings more control and flexibility to custom properties, also known as CSS variables. It is introduced as","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/","og_locale":"en_US","og_type":"article","og_title":"Getting Started with CSS @property Rule","og_description":"The CSS @property is a powerful feature that brings more control and flexibility to custom properties, also known as CSS variables. It is introduced as","og_url":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/","og_site_name":"Hongkiat","article_publisher":"https:\/\/www.facebook.com\/hongkiatcom","article_published_time":"2024-09-02T10:00:09+00:00","article_modified_time":"2024-10-29T11:50:51+00:00","author":"Thoriq Firdaus","twitter_card":"summary_large_image","twitter_creator":"@tfirdaus","twitter_site":"@hongkiat","twitter_misc":{"Written by":"Thoriq Firdaus","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/#article","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/"},"author":{"name":"Thoriq Firdaus","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807"},"headline":"Getting Started with CSS @property Rule","datePublished":"2024-09-02T10:00:09+00:00","dateModified":"2024-10-29T11:50:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/"},"wordCount":696,"publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"keywords":["CSS"],"articleSection":["Coding"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/","url":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/","name":"Getting Started with CSS @property Rule - Hongkiat","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/#website"},"datePublished":"2024-09-02T10:00:09+00:00","dateModified":"2024-10-29T11:50:51+00:00","description":"The CSS @property is a powerful feature that brings more control and flexibility to custom properties, also known as CSS variables. It is introduced as","breadcrumb":{"@id":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hongkiat.com\/blog\/css-property-rule\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.hongkiat.com\/blog\/css-property-rule\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hongkiat.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting Started with CSS @property Rule"}]},{"@type":"WebSite","@id":"https:\/\/www.hongkiat.com\/blog\/#website","url":"https:\/\/www.hongkiat.com\/blog\/","name":"Hongkiat","description":"Tech and Design Tips","publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hongkiat.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hongkiat.com\/blog\/#organization","name":"Hongkiat.com","url":"https:\/\/www.hongkiat.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","contentUrl":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","width":1200,"height":799,"caption":"Hongkiat.com"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hongkiatcom","https:\/\/x.com\/hongkiat","https:\/\/www.pinterest.com\/hongkiat\/"]},{"@type":"Person","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807","name":"Thoriq Firdaus","description":"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.","sameAs":["https:\/\/thoriq.com","https:\/\/x.com\/tfirdaus"],"jobTitle":"Web Developer","url":"https:\/\/www.hongkiat.com\/blog\/author\/thoriq\/"}]}},"jetpack_featured_media_url":"https:\/\/","jetpack_shortlink":"https:\/\/wp.me\/p4uxU-iUB","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/72701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/comments?post=72701"}],"version-history":[{"count":3,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/72701\/revisions"}],"predecessor-version":[{"id":73009,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/72701\/revisions\/73009"}],"wp:attachment":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/media?parent=72701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/categories?post=72701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/tags?post=72701"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/topic?post=72701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}