{"id":26855,"date":"2016-07-18T21:01:30","date_gmt":"2016-07-18T13:01:30","guid":{"rendered":"https:\/\/www.hongkiat.com\/blog\/?p=26855"},"modified":"2022-10-14T20:41:10","modified_gmt":"2022-10-14T12:41:10","slug":"inverted-triangle-css-web-development","status":"publish","type":"post","link":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/","title":{"rendered":"Introduction to ITCSS for Web Developers"},"content":{"rendered":"<p>There\u2019s a handful of great methods for <strong>structuring CSS code<\/strong>, and they all work in different ways. The most popular ones are <a href=\"https:\/\/www.hongkiat.com\/blog\/basics-of-object-oriented-css\/\">OOCSS<\/a> and <a href=\"http:\/\/smacss.com\/\" target=\"_blank\" rel=\"noopener\">SMACSS<\/a>, but there\u2019s also a lesser known method called <strong>ITCSS (Inverted Triangle CSS)<\/strong> created by <a href=\"https:\/\/csswizardry.com\/\" target=\"_blank\" rel=\"noopener\">Harry Roberts<\/a>.<\/p>\n<p>It\u2019s not a library or a framework, but a <strong>methodology of writing code<\/strong> that\u2019s scalable and easy to manipulate. The benefits of ITCSS range from <strong>simple code organization<\/strong> to <a href=\"https:\/\/medium.com\/@jordankoschei\/how-i-shrank-my-css-by-84kb-by-refactoring-with-itcss-2e8dafee123a\" target=\"_blank\" rel=\"noopener nofollow\">smaller file sizes<\/a>, and a greater understanding of CSS architecture.<\/p>\n<p>ITCSS is not for everyone, but it provides a professional way to look at stylesheets with clarity during the coding process. Let\u2019s delve into the concepts behind ITCSS, and see how they can be applied to web projects.<\/p>\n<h2>What is ITCSS?<\/h2>\n<p>Modern ways of organizing CSS often fall back to <strong>modularization<\/strong> or <strong>CSS objects<\/strong> to construct abstract ideas.<\/p>\n<p>The new idea of <a href=\"https:\/\/www.creativebloq.com\/web-design\/manage-large-scale-web-projects-new-css-architecture-itcss-41514731\" target=\"_blank\" rel=\"noopener\">Inverted Triangle CSS<\/a> is a <strong>layered way of splitting CSS properties<\/strong> <strong>based on their level of specificity and importance<\/strong>. It\u2019s a less known method compared to SMACSS and <a href=\"https:\/\/www.hongkiat.com\/blog\/basics-of-object-oriented-css\/\">OOCSS<\/a> \u2013 although both can be combined with ITCSS.<\/p>\n<p>Since ITCSS is <strong>mostly proprietary<\/strong>, no detailed rule book exists about its usage. Only a <strong>set of specific principles<\/strong> is at our disposal. The author speaks about them in the video below.<\/p>\n<p class=\"video-19by6\"><iframe loading=\"lazy\" width=\"650\" height=\"366\" src=\"https:\/\/www.youtube.com\/embed\/hz76JIU_xB0\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>By default, ITCSS uses the same principles as <a href=\"https:\/\/github.com\/stubbornella\/oocss\/wiki\" target=\"_blank\" rel=\"noopener\">OOCSS<\/a> but <strong>with greater separation<\/strong> based on specificity. So if you\u2019re already familiar with OOCSS, consider this a unique <strong>alternate CSS architecture<\/strong> to try.<\/p>\n<p>Here are some of the greatest benefits of using ITCSS:<\/p>\n<ul>\n<li>Page objects can be split into their own CSS\/SCSS files for <strong>reusability<\/strong>. It\u2019s simple to copy\/paste and extend every object <strong>into other projects<\/strong>.<\/li>\n<li>Depth of specificity is <strong>up to you<\/strong>.<\/li>\n<li>There\u2019s <strong>no set folder structure<\/strong>, and no required use of preprocessing tools.<\/li>\n<li>You can merge concepts from other methodologies such as <a href=\"https:\/\/github.com\/css-modules\/css-modules\" target=\"_blank\" rel=\"noopener\">CSS modules<\/a> to <strong>create your own hybrid workflow<\/strong>.<\/li>\n<\/ul>\n<h2>The ITCSS System<\/h2>\n<p>Let\u2019s take a look at how the Inverted Triangle Model works using the following illustration from <a href=\"https:\/\/www.xfive.co\/blog\/itcss-scalable-maintainable-css-architecture\/\" target=\"_blank\" rel=\"noopener\">Lubos Kmetko\u2019s post<\/a>.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/inverted-triangle-css-web-development\/01-inverted-triangle-css-itcss-diagram.jpg\" alt=\"ITCSS Inverted Triangle Diagram\" width=\"802\" height=\"484\"><figcaption class=\"entry-image-caption\"><a href=\"https:\/\/www.xfive.co\/blog\/itcss-scalable-maintainable-css-architecture\/\" target=\"_blank\" rel=\"noopener\">Image: XFive.com<\/a><\/figcaption><\/figure>\n<p>A directional flow from  the flat top of the inverted triangle down to the tip at the bottom symbolizes an <strong>increase in specificity<\/strong>. This <strong>focus on less specificity<\/strong> makes it easier to reuse classes across a site multiple times.<\/p>\n<p>Each subsection of the triangle may be considered a separate file or group of files, although you don\u2019t need to write code in that way. It makes more sense for Sass\/Less users because of the import feature. Just think of each subsection as a methodology for <strong>splitting up and organizing reusable CSS code<\/strong>.<\/p>\n<p>Let\u2019s take a quick look at <strong>each section of the inverted triangle<\/strong> moving from the top down to the tip.<\/p>\n<ul>\n<li><strong>Settings<\/strong> \u2013 Preprocessor variables and methods (no actual CSS output)<\/li>\n<li><strong>Tools<\/strong> \u2013 Mixins and functions (no actual CSS output)<\/li>\n<li><strong>Generic<\/strong> \u2013 CSS resets which might include <a href=\"https:\/\/meyerweb.com\/eric\/tools\/css\/reset\/\" target=\"_blank\" rel=\"noopener\">Eric Meyer\u2019s<\/a> reset, <a href=\"https:\/\/www.hongkiat.com\/blog\/normalized-css\/\">Normalize.css<\/a>, or your own batch of code<\/li>\n<li><strong>Elements<\/strong> \u2013 Single HTML element selectors without classes<\/li>\n<li><strong>Objects<\/strong> \u2013 Classes for page structure typically following the OOCSS methodology<\/li>\n<li><strong>Components<\/strong> \u2013 Aesthetic classes for styling any & all page elements (often combined with the structure of object classes)<\/li>\n<li><strong>Trumps<\/strong> \u2013 The most specific styles for overriding anything else in the triangle<\/li>\n<\/ul>\n<p>Each layer of the inverted triangle can be <strong>adjusted to suit your needs<\/strong>. So if you don\u2019t use a CSS preprocessor then you won\u2019t need the Settings or Tools layers.<\/p>\n<p>You should feel free to interpret each subsection as you see fit. For example, <a href=\"https:\/\/medium.com\/@jordankoschei\/how-i-shrank-my-css-by-84kb-by-refactoring-with-itcss-2e8dafee123a\" target=\"_blank\" rel=\"noopener nofollow\">Jordan Koschei<\/a> explains how he combined structure and aesthetics together into object classes, leaving very little in the Components section.<\/p>\n<p>ITCSS has <strong>no hard-and-fast rules<\/strong> that you must follow. There is no ITCSS compliance checker, and nobody will scream at you for slightly altering this model.<\/p>\n<p>Although ITCSS\u2019 creator Harry Roberts was interested to keep his methods proprietary for internal use, you can find an <strong>open source example of ITCSS<\/strong> in <a href=\"https:\/\/github.com\/csswizardry\/frcss\" target=\"_blank\" rel=\"noopener\">this GitHub repo<\/a>. It\u2019s hosted by the CSS Wizardry account which is Harry Roberts\u2019 personal website.<\/p>\n<figure><a href=\"https:\/\/github.com\/csswizardry\/frcss\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/inverted-triangle-css-web-development\/02-csswizardry-itcss-demo.jpg\" alt=\"ITCSS Code Sample Repo Github\" width=\"800\" height=\"509\"><\/a><\/figure>\n<h2>BEM + IT = BEMIT Naming<\/h2>\n<p>One of the most popular CSS naming schemes is <a href=\"http:\/\/getbem.com\/naming\/\" target=\"_blank\" rel=\"noopener\">BEM<\/a>. This stands for Block-Element-Modifier and follows a very particular syntax.<\/p>\n<p>Each element in BEM describes a naming convention for CSS classes:<\/p>\n<ul>\n<li><strong>Blocks<\/strong> are classes for individual elements which can be replicated and stand alone. <\/li>\n<li><strong>Elements<\/strong> are always part of a block<\/li>\n<li> <strong>Modifiers<\/strong> always modify a block or element to slightly change its appearance (on\/off, active\/inactive, fixed, static, highlight\/neutral).<\/li>\n<\/ul>\n<p><strong>BEMIT<\/strong> is <a href=\"https:\/\/www.jamesturneronline.net\/blog\/bemit-naming-convention.html\" target=\"_blank\" rel=\"noopener\">the naming convention<\/a><strong> adopted by ITCSS<\/strong>, which borrows ideas from BEM while implementing new ideas with ITCSS.<\/p>\n<p>BEM syntax dictates very specific rules. Below is a sample from the <a href=\"http:\/\/getbem.com\/naming\/\" target=\"_blank\" rel=\"noopener\">BEM website<\/a>:<\/p>\n<pre>.form { }\r\n.form--theme-xmas { }\r\n.form--simple { }\r\n.form__input { }\r\n.form__submit { }\r\n.form__submit--disabled { }\r\n<\/pre>\n<p>Blocks have names with either no separation, or names separated by one dash or one underscore. Elements use two underscores and they describe internal elements consistent with that particular block. Modifiers work the same way but use two dashes for identification.<\/p>\n<p>Harry delves deeper into BEMIT in <a href=\"https:\/\/csswizardry.com\/2015\/08\/bemit-taking-the-bem-naming-convention-a-step-further\/\" target=\"_blank\" rel=\"noopener\">this blog post<\/a>. His description is very concise and it shows that the true nature of ITCSS is to <strong>play friendly with other CSS methodologies<\/strong>.<\/p>\n<p class=\"note\"><em>\u201cI decided to extend BEM to become BEMIT. BEMIT doesn\u2019t add any other types of class \u2013 we still only ever have Blocks, Elements, or Modifiers \u2013 but it does add usage and state information.\u201d<\/em><\/p>\n<p>Harry defines <strong>namespaces for objects<\/strong> appearing as <strong>prefixes for each major class name<\/strong>. They break down as <code>o-<\/code> for objects, <code>c-<\/code> for components, and <code>u-<\/code> for utilities (like clearfix or text centering).<\/p>\n<p>Here are some sample code representing <strong>typical BEMIT naming conventions<\/strong>.<\/p>\n<pre>&lt;div class=\"o-media  c-user  c-user--premium\"&gt;\r\n  &lt;img src=\"\" alt=\"\" class=\"o-media__img  c-user__photo  c-avatar\" \/&gt;\r\n  &lt;p class=\"o-media__body  c-user__bio\"&gt;...&lt;\/p&gt;\r\n&lt;\/div&gt;\r\n<\/pre>\n<p>He also recommends using the <code>@<\/code> suffix for classes based on media styles. So the <code>.o-media<\/code> class might change to <code>.o-media@lg<\/code> for large screens, and <code>.o-media@md<\/code> for mid-sized screens.<\/p>\n<p>Personally, I think the additional suffixes are <strong>too convoluted for basic web projects<\/strong>. I think most developers would rather use common media queries, and rewrite the classes at different breakpoints. But I can\u2019t say either method is right or wrong, and anyone can individually decide if they want to use BEMIT or not.<\/p>\n<p>I highly recommend reading <a href=\"https:\/\/csswizardry.com\/2015\/08\/bemit-taking-the-bem-naming-convention-a-step-further\/\" target=\"_blank\" rel=\"noopener\">this intro BEMIT article<\/a> to learn more about why ITCSS extended BEM, and how you might want to name your CSS classes.<\/p>\n<p>ITCSS can be summarized as <strong>an organizational method<\/strong> for writing <strong>reusable and scalable CSS<\/strong>. BEM is the preferred naming syntax, and BEMIT <strong>extends this to work <\/strong>with <a href=\"https:\/\/csswizardry.com\/2015\/03\/more-transparent-ui-code-with-namespaces\/\" target=\"_blank\" rel=\"noopener\">namespaces<\/a> for more specific and recognizable code.<\/p>\n<p>There\u2019s a lot to learn, and if you\u2019re new to CSS this will be a tough concept to break. But if you\u2019re willing to learn, I guarantee you\u2019ll be surprised with the sleek nature of ITCSS code.<\/p>\n<h2>Wrapping Up<\/h2>\n<p>Front-end developers are always looking to optimize their workflow. ITCSS is just another method that can contribute to an improved method of structuring complex websites.<\/p>\n<p>The difficulty is learning how it works in real project work. If you have the temerity, and drive to learn then ITCSS may be something worth adding to your toolkit. Even though I haven\u2019t found any official documentation, there are still a lot of resources online to learn about ITCSS.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.creativebloq.com\/web-design\/manage-large-scale-web-projects-new-css-architecture-itcss-41514731\/\" target=\"_blank\" rel=\"noopener\">Manage large-scale web projects with new CSS architecture ITCSS<\/a> <em>(creativebloq.com)<\/em><\/li>\n<li><a href=\"https:\/\/speakerdeck.com\/dafed\/managing-css-projects-with-itcss\" target=\"_blank\" rel=\"noopener\">Managing CSS Projects with ITCSS \u2013 Presentation Slides<\/a> <em>(speakerdeck.com)<\/em><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=1OKZOV-iLj4\" target=\"_blank\" rel=\"noopener nofollow\">CSS Projects with ITCSS (1hr video presentation)<\/a><\/li>\n<li><a href=\"https:\/\/css-tricks.com\/forums\/topic\/itcss-an-interesting-way-to-organize-large-scale-projects\/\" target=\"_blank\" rel=\"noopener\">ITCSS \u2013 An interesting way to organize large-scale projects<\/a> <em>(css-tricks.com)<\/em><\/li>\n<\/ul>\n<p><em>(Cover photo via <a target=\"_blank\" href=\"https:\/\/speakerdeck.com\/dafed\/managing-css-projects-with-itcss\" rel=\"noopener\">speakerdeck.com<\/a>)<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>There\u2019s a handful of great methods for structuring CSS code, and they all work in different ways. The most popular ones are OOCSS and SMACSS, but there\u2019s also a lesser known method called ITCSS (Inverted Triangle CSS) created by Harry Roberts. It\u2019s not a library or a framework, but a methodology of writing code that\u2019s&hellip;<\/p>\n","protected":false},"author":18,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[352],"tags":[507],"topic":[4520],"class_list":["entry-content","is-maxi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Introduction to ITCSS for Web Developers - Hongkiat<\/title>\n<meta name=\"description\" content=\"There&#039;s a handful of great methods for structuring CSS code, and they all work in different ways. The most popular ones are OOCSS and SMACSS, but there&#039;s\" \/>\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\/inverted-triangle-css-web-development\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introduction to ITCSS for Web Developers\" \/>\n<meta property=\"og:description\" content=\"There&#039;s a handful of great methods for structuring CSS code, and they all work in different ways. The most popular ones are OOCSS and SMACSS, but there&#039;s\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/\" \/>\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=\"2016-07-18T13:01:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-14T12:41:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/assets.hongkiat.com\/uploads\/inverted-triangle-css-web-development\/01-inverted-triangle-css-itcss-diagram.jpg\" \/>\n<meta name=\"author\" content=\"Jake Rocheleau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hongkiat\" \/>\n<meta name=\"twitter:site\" content=\"@hongkiat\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jake Rocheleau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/\"},\"author\":{\"name\":\"Jake Rocheleau\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/966b2daea15283b4145e71aa98a82c2a\"},\"headline\":\"Introduction to ITCSS for Web Developers\",\"datePublished\":\"2016-07-18T13:01:30+00:00\",\"dateModified\":\"2022-10-14T12:41:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/\"},\"wordCount\":1227,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/inverted-triangle-css-web-development\\\/01-inverted-triangle-css-itcss-diagram.jpg\",\"keywords\":[\"CSS\"],\"articleSection\":[\"Web Design\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/\",\"name\":\"Introduction to ITCSS for Web Developers - Hongkiat\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/inverted-triangle-css-web-development\\\/01-inverted-triangle-css-itcss-diagram.jpg\",\"datePublished\":\"2016-07-18T13:01:30+00:00\",\"dateModified\":\"2022-10-14T12:41:10+00:00\",\"description\":\"There's a handful of great methods for structuring CSS code, and they all work in different ways. The most popular ones are OOCSS and SMACSS, but there's\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/#primaryimage\",\"url\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/inverted-triangle-css-web-development\\\/01-inverted-triangle-css-itcss-diagram.jpg\",\"contentUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/inverted-triangle-css-web-development\\\/01-inverted-triangle-css-itcss-diagram.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/inverted-triangle-css-web-development\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction to ITCSS for Web Developers\"}]},{\"@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\\\/966b2daea15283b4145e71aa98a82c2a\",\"name\":\"Jake Rocheleau\",\"description\":\"Jake is a writer and designer with over 10 years experience working on the web. He writes about user experience design and cool resources for designers\",\"sameAs\":[\"https:\\\/\\\/www.hongkiat.com\"],\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/author\\\/jake\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introduction to ITCSS for Web Developers - Hongkiat","description":"There's a handful of great methods for structuring CSS code, and they all work in different ways. The most popular ones are OOCSS and SMACSS, but there's","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\/inverted-triangle-css-web-development\/","og_locale":"en_US","og_type":"article","og_title":"Introduction to ITCSS for Web Developers","og_description":"There's a handful of great methods for structuring CSS code, and they all work in different ways. The most popular ones are OOCSS and SMACSS, but there's","og_url":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/","og_site_name":"Hongkiat","article_publisher":"https:\/\/www.facebook.com\/hongkiatcom","article_published_time":"2016-07-18T13:01:30+00:00","article_modified_time":"2022-10-14T12:41:10+00:00","og_image":[{"url":"https:\/\/assets.hongkiat.com\/uploads\/inverted-triangle-css-web-development\/01-inverted-triangle-css-itcss-diagram.jpg","type":"","width":"","height":""}],"author":"Jake Rocheleau","twitter_card":"summary_large_image","twitter_creator":"@hongkiat","twitter_site":"@hongkiat","twitter_misc":{"Written by":"Jake Rocheleau","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/#article","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/"},"author":{"name":"Jake Rocheleau","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/966b2daea15283b4145e71aa98a82c2a"},"headline":"Introduction to ITCSS for Web Developers","datePublished":"2016-07-18T13:01:30+00:00","dateModified":"2022-10-14T12:41:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/"},"wordCount":1227,"commentCount":4,"publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/inverted-triangle-css-web-development\/01-inverted-triangle-css-itcss-diagram.jpg","keywords":["CSS"],"articleSection":["Web Design"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/","url":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/","name":"Introduction to ITCSS for Web Developers - Hongkiat","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/#primaryimage"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/inverted-triangle-css-web-development\/01-inverted-triangle-css-itcss-diagram.jpg","datePublished":"2016-07-18T13:01:30+00:00","dateModified":"2022-10-14T12:41:10+00:00","description":"There's a handful of great methods for structuring CSS code, and they all work in different ways. The most popular ones are OOCSS and SMACSS, but there's","breadcrumb":{"@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/#primaryimage","url":"https:\/\/assets.hongkiat.com\/uploads\/inverted-triangle-css-web-development\/01-inverted-triangle-css-itcss-diagram.jpg","contentUrl":"https:\/\/assets.hongkiat.com\/uploads\/inverted-triangle-css-web-development\/01-inverted-triangle-css-itcss-diagram.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hongkiat.com\/blog\/inverted-triangle-css-web-development\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hongkiat.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introduction to ITCSS for Web Developers"}]},{"@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\/966b2daea15283b4145e71aa98a82c2a","name":"Jake Rocheleau","description":"Jake is a writer and designer with over 10 years experience working on the web. He writes about user experience design and cool resources for designers","sameAs":["https:\/\/www.hongkiat.com"],"url":"https:\/\/www.hongkiat.com\/blog\/author\/jake\/"}]}},"jetpack_featured_media_url":"https:\/\/","jetpack_shortlink":"https:\/\/wp.me\/p4uxU-6Z9","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/26855","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\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/comments?post=26855"}],"version-history":[{"count":3,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/26855\/revisions"}],"predecessor-version":[{"id":62878,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/26855\/revisions\/62878"}],"wp:attachment":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/media?parent=26855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/categories?post=26855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/tags?post=26855"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/topic?post=26855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}