<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vaibhav-Singh21</title>
    <description>The latest articles on DEV Community by Vaibhav-Singh21 (@vaibhavsingh21).</description>
    <link>https://dev.to/vaibhavsingh21</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F541419%2F36ebe3d8-e5ec-4d67-82af-79047b0dab91.jpeg</url>
      <title>DEV Community: Vaibhav-Singh21</title>
      <link>https://dev.to/vaibhavsingh21</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vaibhavsingh21"/>
    <language>en</language>
    <item>
      <title>The Best Naming Model in Html &amp; CSS - BEM</title>
      <dc:creator>Vaibhav-Singh21</dc:creator>
      <pubDate>Wed, 16 Dec 2020 20:00:58 +0000</pubDate>
      <link>https://dev.to/vaibhavsingh21/the-best-naming-model-in-html-css-bem-29pe</link>
      <guid>https://dev.to/vaibhavsingh21/the-best-naming-model-in-html-css-bem-29pe</guid>
      <description>&lt;p&gt;BEM is an abbreviation of the key elements of the methodology —&lt;strong&gt;Block, Element and Modifier&lt;/strong&gt;. It is a popular &lt;em&gt;naming convention&lt;/em&gt; for classes in HTML and CSS.&lt;br&gt;
Here’s an example:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Block component */
.btn {}

/* Element that depends upon the block */ 
.btn__play {}

/* Modifier that changes the style of the block */
.btn--blue {} 
.btn--big {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The BEM approach ensures that everyone who participates in the development of a website works with a single codebase and speaks the same language. Using proper naming will prepare you for the changes in design of the website.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Block
&lt;/h2&gt;

&lt;h5&gt;
  
  
  Naming
&lt;/h5&gt;

&lt;p&gt;Block names may consist of Latin letters, digits, and dashes.&lt;br&gt;
To form a CSS class, add a short prefix for namespacing :&lt;br&gt;
&lt;code&gt;.block&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  HTML
&lt;/h5&gt;

&lt;p&gt;Any DOM node can be a block if it accepts a class name.&lt;br&gt;
&lt;code&gt;&amp;lt;div class="block"&amp;gt;...&amp;lt;/div&amp;gt;&lt;/code&gt; &lt;/p&gt;

&lt;h5&gt;
  
  
  CSS
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Use class name selector only&lt;/li&gt;
&lt;li&gt;No tag name or ids&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;.block { color: #032; }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. Element
&lt;/h2&gt;

&lt;p&gt;It is a Parts of a block and have no meaning on its own. &lt;br&gt;
Any element is semantically tied to its block.&lt;/p&gt;

&lt;h5&gt;
  
  
  Naming
&lt;/h5&gt;

&lt;p&gt;Element names may consist of Latin letters, digits, dashes and underscores. CSS class is formed as &lt;strong&gt;block name plus two underscores plus element name&lt;/strong&gt; : &lt;code&gt;.block__element&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  HTML
&lt;/h5&gt;

&lt;p&gt;Any DOM node within a block can be an element. Within a given block, all elements are equal.&lt;br&gt;
&lt;code&gt;&amp;lt;div class="block"&amp;gt;&lt;br&gt;
      ...&lt;br&gt;
      &amp;lt;span class="block__element"&amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt;
    &amp;lt;/div&amp;gt;&lt;/code&gt; &lt;/p&gt;

&lt;h5&gt;
  
  
  CSS
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Use class name selector only
&amp;gt; .block__element { color: #032; }&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Modifier
&lt;/h2&gt;

&lt;p&gt;Attributes on blocks or elements. Use them to change appearance, behavior or state.&lt;/p&gt;

&lt;h5&gt;
  
  
  Naming
&lt;/h5&gt;

&lt;p&gt;Modifier names may consist of Latin letters, digits, dashes and underscores. CSS class is formed as &lt;strong&gt;block’s or element’s name plus two dashes&lt;/strong&gt;: &lt;br&gt;
&lt;code&gt;.block--mod&lt;/code&gt; or  &lt;code&gt;.block--element__mod&lt;/code&gt; and &lt;code&gt;.block--color-black&lt;/code&gt; with &lt;code&gt;.block--color-blue&lt;/code&gt;.&lt;br&gt;
&lt;em&gt;Spaces are compensated with &lt;em&gt;dashes&lt;/em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  HTML
&lt;/h5&gt;

&lt;p&gt;Modifier is an extra class name which you add to a block/element DOM node. Add modifier classes only to blocks/elements they modify, and keep the original class:&lt;br&gt;
&lt;code&gt;&amp;lt;div class="block block--mod"&amp;gt;...&amp;lt;/div&amp;gt;&lt;br&gt;
    &amp;lt;div class="block block--size-big&lt;br&gt;
        block--shadow-yes"&amp;gt;...&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  CSS
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Use modifier class name as selector:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;.block--hidden { }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;To alter elements based on a block-level modifier:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;.block--mod .block__element { }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Element modifier:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;.block__element--mod { }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Reference&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I learnt a lot about a new naming convention for html elements. A big thanks to Dom aka &lt;strong&gt;dcode&lt;/strong&gt;. if you guys want to learn more about BEM,&lt;br&gt;
check out his youtube video :&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=u-XKw585KqY&amp;amp;ab_channel=dcode"&gt;Link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
