<?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: Veeresh YH</title>
    <description>The latest articles on DEV Community by Veeresh YH (@veeresh_yh).</description>
    <link>https://dev.to/veeresh_yh</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%2F2898892%2F652d879b-038d-40c2-9cb3-a6b0d08d861a.png</url>
      <title>DEV Community: Veeresh YH</title>
      <link>https://dev.to/veeresh_yh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/veeresh_yh"/>
    <language>en</language>
    <item>
      <title>Best Practices for Writing SCSS (SASS) in Block-Element-Modifier (BEM) Style</title>
      <dc:creator>Veeresh YH</dc:creator>
      <pubDate>Wed, 26 Feb 2025 07:47:05 +0000</pubDate>
      <link>https://dev.to/veeresh_yh/best-practices-for-writing-scss-sass-in-block-element-modifier-bem-style-47cm</link>
      <guid>https://dev.to/veeresh_yh/best-practices-for-writing-scss-sass-in-block-element-modifier-bem-style-47cm</guid>
      <description>&lt;p&gt;SCSS (SASS) combined with Block-Element-Modifier (BEM) methodology helps create maintainable, scalable, and reusable CSS for modern web applications. Following best practices ensures a consistent and structured approach to styling.&lt;/p&gt;

&lt;p&gt;🚀 What is BEM?&lt;br&gt;
BEM (Block-Element-Modifier) is a methodology for writing clean and organized CSS.&lt;/p&gt;

&lt;p&gt;Block (.block) – A standalone component (e.g., .card)&lt;br&gt;
Element (.block_&lt;em&gt;element) – A part of the block (e.g., .card&lt;/em&gt;_title)&lt;br&gt;
Modifier (.block--modifier) – A variation of the block or element (e.g., .card--dark)&lt;br&gt;
💡 Example:&lt;/p&gt;

&lt;p&gt;`.card {&lt;br&gt;
  background: white;&lt;br&gt;
  padding: 16px;&lt;br&gt;
  border-radius: 8px;&lt;/p&gt;

&lt;p&gt;&amp;amp;__title {&lt;br&gt;
    font-size: 18px;&lt;br&gt;
    font-weight: bold;&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;&amp;amp;__button {&lt;br&gt;
    padding: 8px 12px;&lt;br&gt;
    border: none;&lt;br&gt;
    cursor: pointer;&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;&amp;amp;--dark {&lt;br&gt;
    background: #333;&lt;br&gt;
    color: white;&lt;br&gt;
  }&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;✅ Why?&lt;/p&gt;

&lt;p&gt;Ensures clarity and modularity&lt;br&gt;
Avoids CSS conflicts&lt;br&gt;
Increases reusability&lt;br&gt;
1️⃣ Keep Nesting Minimal&lt;br&gt;
SCSS allows nesting, but deep nesting increases specificity and makes styles harder to override.&lt;/p&gt;

&lt;p&gt;🚨 Avoid this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.card {&lt;br&gt;
  &amp;amp;__title {&lt;br&gt;
    .icon {&lt;br&gt;
      color: red;&lt;br&gt;
    }&lt;br&gt;
  }&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ Better approach:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.card__title .icon {&lt;br&gt;
  color: red;&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
✔ Keep nesting limited to 2 levels for maintainability.&lt;/p&gt;

&lt;p&gt;2️⃣ Use SCSS Variables for Consistency&lt;br&gt;
Define common styles using variables to maintain consistency and make updates easier.&lt;/p&gt;

&lt;p&gt;`$primary-color: #007bff;&lt;br&gt;
$secondary-color: #6c757d;&lt;br&gt;
$border-radius: 8px;&lt;/p&gt;

&lt;p&gt;.button {&lt;br&gt;
  background-color: $primary-color;&lt;br&gt;
  border-radius: $border-radius;&lt;br&gt;
  color: white;&lt;br&gt;
}`&lt;br&gt;
✅ Why?&lt;/p&gt;

&lt;p&gt;Easier maintenance and updates&lt;br&gt;
Consistency across styles&lt;br&gt;
3️⃣ Use Mixins for Reusability&lt;br&gt;
SCSS mixins allow reusable style patterns.&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
@mixin button($bg-color) {&lt;br&gt;
  background-color: $bg-color;&lt;br&gt;
  padding: 10px 15px;&lt;br&gt;
  border: none;&lt;br&gt;
  cursor: pointer;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.button {&lt;br&gt;
  &lt;a class="mentioned-user" href="https://dev.to/include"&gt;@include&lt;/a&gt; button(#007bff);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.button--secondary {&lt;br&gt;
  &lt;a class="mentioned-user" href="https://dev.to/include"&gt;@include&lt;/a&gt; button(#6c757d);&lt;br&gt;
}`&lt;br&gt;
✅ Why?&lt;/p&gt;

&lt;p&gt;Avoids repetition&lt;br&gt;
Improves scalability&lt;br&gt;
4️⃣ Organize SCSS Using the 7-1 Pattern&lt;br&gt;
For large projects, follow the 7-1 architecture pattern for better organization.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/scss&lt;br&gt;
  ├── abstracts/   (variables, mixins, functions)&lt;br&gt;
  ├── base/        (reset, typography, global styles)&lt;br&gt;
  ├── components/  (buttons, cards, modals)&lt;br&gt;
  ├── layout/      (grid, header, footer)&lt;br&gt;
  ├── pages/       (home, about, contact)&lt;br&gt;
  ├── themes/      (light, dark theme)&lt;br&gt;
  ├── vendors/     (third-party styles)&lt;br&gt;
  ├── main.scss    (imports everything)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;💡 Example import structure:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
@import "abstracts/variables";&lt;br&gt;
@import "base/reset";&lt;br&gt;
@import "layout/grid";&lt;br&gt;
@import "components/button";&lt;/code&gt;&lt;br&gt;
✅ Why?&lt;/p&gt;

&lt;p&gt;Enhances code maintainability&lt;br&gt;
Avoids CSS conflicts&lt;br&gt;
5️⃣ Avoid Using ID Selectors&lt;br&gt;
ID selectors (#id) have high specificity and make styles harder to override.&lt;/p&gt;

&lt;p&gt;🚨 Bad Practice:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#header {&lt;br&gt;
  background: red;&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
✅ Use a BEM class instead:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
.header {&lt;br&gt;
  background: red;&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
✔ Stick to class-based selectors for flexibility.&lt;/p&gt;

&lt;p&gt;6️⃣ Use @extend with Caution&lt;br&gt;
@extend can reduce repetition, but overusing it may cause bloated styles.&lt;/p&gt;

&lt;p&gt;🚨 Avoid this:&lt;/p&gt;

&lt;p&gt;`.error {&lt;br&gt;
  color: red;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.alert {&lt;br&gt;
  @extend .error;  // Might create unintended dependencies&lt;br&gt;
}&lt;code&gt;&lt;br&gt;
✅ Better approach:&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
.alert {&lt;br&gt;
  color: red;&lt;br&gt;
}`&lt;br&gt;
7️⃣ Use Utility Classes for Common Styles&lt;br&gt;
Instead of adding extra modifiers, use utility classes for repeated styles.&lt;/p&gt;

&lt;p&gt;✅ Example:&lt;/p&gt;

&lt;p&gt;`.u-text-center {&lt;br&gt;
  text-align: center;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;.u-mt-20 {&lt;br&gt;
  margin-top: 20px;&lt;br&gt;
}`&lt;br&gt;
📌 Usage:&lt;/p&gt;

&lt;p&gt;Welcome&lt;/p&gt;

&lt;p&gt;✔ Keeps BEM focused on components while utilities handle layout styles.&lt;/p&gt;

&lt;p&gt;8️⃣ Write Mobile-First SCSS&lt;br&gt;
Use mobile-first media queries for responsiveness.&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
.button {&lt;br&gt;
  padding: 10px 15px;&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/media"&gt;@media&lt;/a&gt; (min-width: 768px) {&lt;br&gt;
    padding: 12px 20px;&lt;br&gt;
  }&lt;br&gt;
}`&lt;br&gt;
✅ Why?&lt;/p&gt;

&lt;p&gt;Optimized for mobile devices first&lt;br&gt;
Ensures better performance&lt;br&gt;
9️⃣ Keep SCSS Modular with Separate Files&lt;br&gt;
Instead of writing all styles in one file, split them into separate SCSS files.&lt;/p&gt;

&lt;p&gt;✔ Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
/components/_button.scss  &lt;br&gt;
/components/_card.scss&lt;/code&gt; &lt;br&gt;
Then import them into main.scss:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
@import "components/button";&lt;br&gt;
@import "components/card";&lt;/code&gt;&lt;br&gt;
✅ Why?&lt;/p&gt;

&lt;p&gt;Increases reusability&lt;br&gt;
Keeps styles organized&lt;br&gt;
🔟 Use CSS Grid &amp;amp; Flexbox Instead of Floats&lt;br&gt;
SCSS works well with modern layout techniques like Flexbox and CSS Grid.&lt;/p&gt;

&lt;p&gt;🚨 Avoid using floats:&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;.container {&lt;br&gt;
  float: left;&lt;br&gt;
  width: 50%;&lt;br&gt;
}`&lt;br&gt;
✅ Use Flexbox instead:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.container {&lt;br&gt;
  display: flex;&lt;br&gt;
  justify-content: space-between;&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
🚀 Final Thoughts&lt;br&gt;
Writing SCSS in BEM style improves code maintainability, readability, and scalability.&lt;/p&gt;

&lt;p&gt;✅ Key Takeaways:&lt;br&gt;
✔ Follow BEM naming conventions&lt;br&gt;
✔ Limit nesting depth&lt;br&gt;
✔ Use variables &amp;amp; mixins&lt;br&gt;
✔ Organize SCSS using the 7-1 pattern&lt;br&gt;
✔ Avoid ID selectors &amp;amp; deep specificity&lt;br&gt;
✔ Write mobile-first styles&lt;/p&gt;

&lt;p&gt;By following these best practices, you can write clean, efficient, and scalable SCSS! 🎯&lt;/p&gt;

</description>
      <category>scss</category>
      <category>webdev</category>
      <category>css</category>
    </item>
  </channel>
</rss>
