{"id":4035,"date":"2012-04-30T06:30:37","date_gmt":"2012-04-30T12:30:37","guid":{"rendered":"http:\/\/www.vanseodesign.com\/?p=4035"},"modified":"2012-04-30T06:30:37","modified_gmt":"2012-04-30T12:30:37","slug":"block-element-modifier","status":"publish","type":"post","link":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/","title":{"rendered":"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS"},"content":{"rendered":"<p>For the last couple of months I&#8217;ve been talking a lot about <a href=\"http:\/\/www.vanseodesign.com\/css\/flawed-practices\/\">giving our css best practices a refresh<\/a> and along the way have looked at approaches such as OOCSS, SMACSS, and DRY CSS. They all have some common underlying principles, one of which is the separation of structure and presentation.<br \/>\n<!--more--><br \/>\nWe&#8217;ve all had this goal for years, but our practices haven&#8217;t really achieved it. Instead of decoupling our html and css we&#8217;ve been locking them ever tighter and making them more and more dependent on each other. I apologize if you&#8217;re getting tired of hearing me talk about coupling, but I think it&#8217;s a very important concept to understand if you want to <a href=\"http:\/\/www.vanseodesign.com\/css\/scalable-maintainable\/\">develop scalable and maintainable websites<\/a>.<\/p>\n<p>Just last week Jonathan Snook, creator of SMACSS, <a href=\"http:\/\/coding.smashingmagazine.com\/2012\/04\/20\/decoupling-html-from-css\/\">brought up the very same topic<\/a> on Smashing Magazine. I want to touch on a few of the points he made and then give a quick walk through of yet another method (BEM) with similar goals to the ones we&#8217;ve been talking about.<\/p>\n<p><a href=\"http:\/\/www.flickr.com\/photos\/smithser\/3870653508\/\"><img decoding=\"async\" src=\"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/broken-chain.jpg\" alt=\"Rusty chain around a tree with one broken link\" \/><\/a><\/p>\n<h2>Decoupling HTML and CSS<\/h2>\n<p>Ideally we&#8217;d like to be able to completely rewrite our html or css without touching the other. That&#8217;s unlikely to happen all the time. There will often be a need to changes one after changing the other. However the less dependent our html and css are on each other, the better.<\/p>\n<p>Using OOCSS we reduce coupling by dropping <a href=\"http:\/\/www.vanseodesign.com\/css\/css-selector-performance\/\">descendent selectors<\/a> in favor of classes. With a DRY CSS approach we&#8217;re also using classes, but here the magic is based more on how we organize our css around stylistic groups. SMACSS falls somewhere in between these approaches.<\/p>\n<p>All agree we should move away from location based selectors as tying css selectors to a specific html structure leads to greater difficulty in changing either html or css. Inevitably we&#8217;re left managing specificity.<\/p>\n<p>Jonathan Snook refers to this as the <a href=\"http:\/\/smacss.com\/book\/applicability\">depth of applicability<\/a> or in his words, &#8220;the depth at which a particular rule set impacts the elements around it.&#8221;<\/p>\n<p>For example consider the following code for a relatively simple navigation bar with a single drop down.<\/p>\n<p>{code type=html}<\/p>\n<ul id=\"nav\">\n<li><a href=\"\">Item 1<\/a><\/li>\n<li><a href=\"\">Item 2<\/a>\n<ul>\n<li><a href=\"\">Sub Item 1<\/a><\/li>\n<li><a href=\"\">Sub Item 2<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"\">Item 3<\/a><\/li>\n<\/ul>\n<p>{\/code}<\/p>\n<p>If we were to write some css targeting the link in the drop down ( #nav li a ), the depth of applicability is 5. Even though we didn&#8217;t specifically mention every element along the way we&#8217;ve moved through ul#nav to  li to ul to li to a, or 5 levels of html structure.<\/p>\n<p>That&#8217;s too much and it also affects both the top level links and secondary links in the drop down. Jonathan offers two ways to reduce the depth of applicability<\/p>\n<ul>\n<li><strong>Child selectors<\/strong> &mdash; using #nav > li > a  <a href=\"http:\/\/www.markdotto.com\/2012\/03\/02\/stop-the-cascade\/\">limits the scope<\/a> to the top level links<\/li>\n<li><strong>Class selectors<\/strong> &mdash; is ultimately the better approach as it&#8217;s not dependent on html structure at all<\/li>\n<\/ul>\n<p>Jonathan offers some additional explanation and examples in the Smashing Magazine article, which is worth a read if you&#8217;ve yet to see it.<\/p>\n<p>The key is in seeing that many of the selectors we&#8217;ve been using over the years are coupling our html and css ever tighter. The debate is still ongoing as to the best way to decouple things, though hopefully you agree there&#8217;s a need for decoupling.<\/p>\n<p><a href=\"http:\/\/www.flickr.com\/photos\/ogimogi\/2253657555\/\"><img decoding=\"async\" src=\"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/lego-blocks.jpg\" alt=\"Lego blocks scattered on a table\" \/><\/a><\/p>\n<h2>BEM &mdash; Block, Element, Modifier<\/h2>\n<p>The <a href=\"http:\/\/bem.github.com\/bem-method\/pages\/beginning\/beginning.en.html\">BEM approach to developing websites<\/a> comes from the developers at Yandex. It has similar goals to the approaches we&#8217;ve seen before.<\/p>\n<ul>\n<li>Quick development<\/li>\n<li>Team efficiency<\/li>\n<li>Scalability<\/li>\n<li>Code reuse<\/li>\n<\/ul>\n<h3>Blocks and Elements<\/h3>\n<p>Under BEM a block is it&#8217;s own independent entity. Blocks can be simple or complex and they can contain other blocks. There&#8217;s something familiar in this as every html element is <a href=\"http:\/\/www.vanseodesign.com\/css\/display-property\/\">displayed as a box or block of some kind<\/a>.<\/p>\n<p>At the highest level of a design, your blocks might be your header block, footer block, main content block, and sidebar block. Your header would likely include several blocks inside such as one for your logo and tagline, another for a navigation bar, and maybe another making up a search field and button.<\/p>\n<p>Elements are parts of blocks. They perform certain functions within the block and they&#8217;re context dependent. Take an element outside its block and it no longer makes sense. For example a search block might be made up of 2 elements.<\/p>\n<ul>\n<li>Input field<\/li>\n<li>Button<\/li>\n<\/ul>\n<p>Removing one doesn&#8217;t make sense as the block would no longer function correctly.<\/p>\n<p>Together blocks and elements are arranged in your design to form your <a href=\"http:\/\/www.vanseodesign.com\/css\/elastic-layout-code\/\">page layout<\/a>. Elements are arranged inside blocks and blocks are arranged inside other blocks working up to the outermost container blocks that shape the page as a whole.<\/p>\n<p>Blocks and elements should have keywords (names) associated with them. The only way the same name or keyword is reused is when the same block or element is being reused. Blocks must be independent of each other to allow for arbitrary placement within the design. We want to be able to take our search block and easily move it from the top right in the header to the middle of the sidebar for example.<\/p>\n<p>This leads to 3 <a href=\"http:\/\/www.vanseodesign.com\/css\/practical-guidelines\/\">guidelines for writing css<\/a>:<\/p>\n<ul>\n<li>Blocks should have unique names, which become classes<\/li>\n<li>HTML elements should not be used in css selectors since they aren&#8217;t context-free<\/li>\n<li>Cascading selectors for several blocks should be avoided<\/li>\n<\/ul>\n<p>Here again it&#8217;s the use of classes that aims to solve the problem of coupling. We&#8217;re also encouraged to avoid location based selectors (context dependent) to help decouple our code.<\/p>\n<p><a href=\"http:\/\/www.flickr.com\/photos\/stevendepolo\/6228420376\/\"><img decoding=\"async\" src=\"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/modified-tee.jpg\" alt=\"A single white golf tee amidst a sea or orange tees\" \/><\/a><\/p>\n<h3>Modifiers<\/h3>\n<p>What happens when you have a block like a search input and button and you want to add another to the page that looks similar, though not exactly like the first? This is where modifiers come in. Modifiers help us create similar though different blocks from already existing blocks. <\/p>\n<blockquote><p>\nA modifier is a property of a block or an element that alters its look or behavior. A modifier has a name and a value. Several modifiers can be used at once.\n<\/p><\/blockquote>\n<p>Typically a modifier will be an additional css class you would add to an element. An example I&#8217;m sure you&#8217;ve come across is <a href=\"http:\/\/www.vanseodesign.com\/wordpress\/hightlight-current-page-wordpress\/\">highlighting the currently selected menu item<\/a> so it stands out from the rest of the menu items. To achieve this you probably created css similar to the following.<\/p>\n<p>{code type=css}<br \/>\n.current {<br \/>\n  background: #f00;<br \/>\n}<br \/>\n{\/code}<\/p>\n<p>You&#8217;d then added class=&#8221;current&#8221; to the currently selected menu item. The class modifies one element inside your navigation block.<\/p>\n<p>BEM goes a lot further than what I&#8217;ve described above. In fact it&#8217;s for more than just html and css. It covers behaviors with Javascript, though the same basic principles and approach apply. I&#8217;ll let you read the original source if you&#8217;d like more details. I mainly wanted to show you the basic approach.<\/p>\n<p>The idea of seeing a web page as elements within blocks within blocks is an easy one to grasp and probably how many of us already view the pages we develop. I certainly have, as you can see in a couple of posts I wrote for Onextrapixel a couple years back.<\/p>\n<ul>\n<li><a href=\"http:\/\/www.onextrapixel.com\/2010\/04\/28\/part-1-how-to-turn-a-design-image-into-a-working-web-page\/\">Part 1: How to Turn a Design Image Into a Working Web Page<\/a><\/li>\n<li><a href=\"http:\/\/www.onextrapixel.com\/2010\/04\/29\/part-2-how-to-turn-a-design-image-into-a-working-web-page\/\">Part 2: How to Turn a Design Image Into a Working Web Page<\/a><\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.flickr.com\/photos\/27620885@N02\/2617716184\/\"><img decoding=\"async\" src=\"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/lego-le-corbusier.png\" alt=\"Model of Le Corbusier's Villa Savoye built with Lego\" \/><\/a><\/p>\n<h2>Summary<\/h2>\n<p>Again I hope I&#8217;m not repeating myself too much in all these posts, but these concepts are important ones to understand. Ultimately I think we should be rethinking some of our css practices as they haven&#8217;t been as great as we&#8217;d like to believe. Many have been thinking the same thing and over the last few years we&#8217;ve seen quite a few new methods and approaches for writing html, css, and javascript.<\/p>\n<p>Most of these methods are similar in their underlying goals and principles, which is the main thing to be paying attention to. You&#8217;ll likely pick and choose techniques across some of these approaches depending upon the specific problem in front of you as opposed to following any one entirely.<\/p>\n<p>It&#8217;s the underlying principles like decoupling html and css that are more important. It&#8217;s the idea of reducing location based selectors, mostly likely through a greater use of classes that you should be thinking about. See how each approach attempts to solve this and decide which makes the most sense for you.<\/p>\n<p>If you&#8217;re getting tired of these posts please let me know. I realize I&#8217;ve been offering a lot about this same basic concept for awhile and perhaps the message has long since gotten across. If you are enjoying these posts and some of the methods I&#8217;ve been pointing to, let me know as well. There are more approaches out there with similar goals in mind that I could cover.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For the last couple of months I&#8217;ve been talking a lot about giving our css best practices a refresh and along the way have looked at approaches such as OOCSS, SMACSS, and DRY CSS. They all have some common underlying principles, one of which is the separation of structure and presentation.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"series":[],"class_list":["post-4035","post","type-post","status-publish","format-standard","hentry","category-css"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS - Vanseo Design<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vanseodesign.com\/css\/block-element-modifier\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS - Vanseo Design\" \/>\n<meta property=\"og:description\" content=\"For the last couple of months I&#8217;ve been talking a lot about giving our css best practices a refresh and along the way have looked at approaches such as OOCSS, SMACSS, and DRY CSS. They all have some common underlying principles, one of which is the separation of structure and presentation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vanseodesign.com\/css\/block-element-modifier\/\" \/>\n<meta property=\"og:site_name\" content=\"Vanseo Design\" \/>\n<meta property=\"article:published_time\" content=\"2012-04-30T12:30:37+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/broken-chain.jpg\" \/>\n<meta name=\"author\" content=\"Steven Bradley\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steven Bradley\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/\"},\"author\":{\"name\":\"Steven Bradley\",\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/#\\\/schema\\\/person\\\/470cda6ba835fb52596b2e26bcbd8fe4\"},\"headline\":\"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS\",\"datePublished\":\"2012-04-30T12:30:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/\"},\"wordCount\":1448,\"commentCount\":18,\"image\":{\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.vanseodesign.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/04\\\/broken-chain.jpg\",\"articleSection\":[\"CSS\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/\",\"url\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/\",\"name\":\"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS - Vanseo Design\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.vanseodesign.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/04\\\/broken-chain.jpg\",\"datePublished\":\"2012-04-30T12:30:37+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/#\\\/schema\\\/person\\\/470cda6ba835fb52596b2e26bcbd8fe4\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.vanseodesign.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/04\\\/broken-chain.jpg\",\"contentUrl\":\"http:\\\/\\\/www.vanseodesign.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/04\\\/broken-chain.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/block-element-modifier\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vanseodesign.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CSS\",\"item\":\"https:\\\/\\\/vanseodesign.com\\\/css\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/#website\",\"url\":\"https:\\\/\\\/vanseodesign.com\\\/\",\"name\":\"Vanseo Design\",\"description\":\"Helping you build search engine friendly websites\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vanseodesign.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vanseodesign.com\\\/#\\\/schema\\\/person\\\/470cda6ba835fb52596b2e26bcbd8fe4\",\"name\":\"Steven Bradley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"\\\/\\\/www.gravatar.com\\\/avatar\\\/0f47bf400c3c1bafe06ee2884405baaa?s=96&#038;r=pg&#038;d=https%3A%2F%2Fvanseodesign.com%2Fblog%2Fwp-content%2Fthemes%2Fvanseo-design%2Fimages%2Fgravatar.png\",\"url\":\"\\\/\\\/www.gravatar.com\\\/avatar\\\/0f47bf400c3c1bafe06ee2884405baaa?s=96&#038;r=pg&#038;d=https%3A%2F%2Fvanseodesign.com%2Fblog%2Fwp-content%2Fthemes%2Fvanseo-design%2Fimages%2Fgravatar.png\",\"contentUrl\":\"\\\/\\\/www.gravatar.com\\\/avatar\\\/0f47bf400c3c1bafe06ee2884405baaa?s=96&#038;r=pg&#038;d=https%3A%2F%2Fvanseodesign.com%2Fblog%2Fwp-content%2Fthemes%2Fvanseo-design%2Fimages%2Fgravatar.png\",\"caption\":\"Steven Bradley\"},\"sameAs\":[\"https:\\\/\\\/www.vanseodesign.com\\\/about\\\/\"],\"url\":\"https:\\\/\\\/vanseodesign.com\\\/author\\\/vangogh\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS - Vanseo Design","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:\/\/vanseodesign.com\/css\/block-element-modifier\/","og_locale":"en_US","og_type":"article","og_title":"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS - Vanseo Design","og_description":"For the last couple of months I&#8217;ve been talking a lot about giving our css best practices a refresh and along the way have looked at approaches such as OOCSS, SMACSS, and DRY CSS. They all have some common underlying principles, one of which is the separation of structure and presentation.","og_url":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/","og_site_name":"Vanseo Design","article_published_time":"2012-04-30T12:30:37+00:00","og_image":[{"url":"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/broken-chain.jpg","type":"","width":"","height":""}],"author":"Steven Bradley","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Steven Bradley","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/#article","isPartOf":{"@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/"},"author":{"name":"Steven Bradley","@id":"https:\/\/vanseodesign.com\/#\/schema\/person\/470cda6ba835fb52596b2e26bcbd8fe4"},"headline":"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS","datePublished":"2012-04-30T12:30:37+00:00","mainEntityOfPage":{"@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/"},"wordCount":1448,"commentCount":18,"image":{"@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/#primaryimage"},"thumbnailUrl":"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/broken-chain.jpg","articleSection":["CSS"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vanseodesign.com\/css\/block-element-modifier\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/","url":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/","name":"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS - Vanseo Design","isPartOf":{"@id":"https:\/\/vanseodesign.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/#primaryimage"},"image":{"@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/#primaryimage"},"thumbnailUrl":"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/broken-chain.jpg","datePublished":"2012-04-30T12:30:37+00:00","author":{"@id":"https:\/\/vanseodesign.com\/#\/schema\/person\/470cda6ba835fb52596b2e26bcbd8fe4"},"breadcrumb":{"@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vanseodesign.com\/css\/block-element-modifier\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/#primaryimage","url":"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/broken-chain.jpg","contentUrl":"http:\/\/www.vanseodesign.com\/blog\/wp-content\/uploads\/2012\/04\/broken-chain.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/vanseodesign.com\/css\/block-element-modifier\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vanseodesign.com\/"},{"@type":"ListItem","position":2,"name":"CSS","item":"https:\/\/vanseodesign.com\/css\/"},{"@type":"ListItem","position":3,"name":"BEM: The Block, Element, Modifier Approach To Decoupling HTML And CSS"}]},{"@type":"WebSite","@id":"https:\/\/vanseodesign.com\/#website","url":"https:\/\/vanseodesign.com\/","name":"Vanseo Design","description":"Helping you build search engine friendly websites","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vanseodesign.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/vanseodesign.com\/#\/schema\/person\/470cda6ba835fb52596b2e26bcbd8fe4","name":"Steven Bradley","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"\/\/www.gravatar.com\/avatar\/0f47bf400c3c1bafe06ee2884405baaa?s=96&#038;r=pg&#038;d=https%3A%2F%2Fvanseodesign.com%2Fblog%2Fwp-content%2Fthemes%2Fvanseo-design%2Fimages%2Fgravatar.png","url":"\/\/www.gravatar.com\/avatar\/0f47bf400c3c1bafe06ee2884405baaa?s=96&#038;r=pg&#038;d=https%3A%2F%2Fvanseodesign.com%2Fblog%2Fwp-content%2Fthemes%2Fvanseo-design%2Fimages%2Fgravatar.png","contentUrl":"\/\/www.gravatar.com\/avatar\/0f47bf400c3c1bafe06ee2884405baaa?s=96&#038;r=pg&#038;d=https%3A%2F%2Fvanseodesign.com%2Fblog%2Fwp-content%2Fthemes%2Fvanseo-design%2Fimages%2Fgravatar.png","caption":"Steven Bradley"},"sameAs":["https:\/\/www.vanseodesign.com\/about\/"],"url":"https:\/\/vanseodesign.com\/author\/vangogh\/"}]}},"_links":{"self":[{"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/posts\/4035","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/comments?post=4035"}],"version-history":[{"count":0,"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/posts\/4035\/revisions"}],"wp:attachment":[{"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/media?parent=4035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/categories?post=4035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/tags?post=4035"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/vanseodesign.com\/wp-json\/wp\/v2\/series?post=4035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}