<?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: Neil Gardose</title>
    <description>The latest articles on DEV Community by Neil Gardose (@nkpgardose).</description>
    <link>https://dev.to/nkpgardose</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%2F279072%2F920558c7-9604-46aa-aef3-8fe397a5b5cb.jpeg</url>
      <title>DEV Community: Neil Gardose</title>
      <link>https://dev.to/nkpgardose</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nkpgardose"/>
    <language>en</language>
    <item>
      <title>How I deal with CSS(2019)</title>
      <dc:creator>Neil Gardose</dc:creator>
      <pubDate>Thu, 05 Dec 2019 10:10:56 +0000</pubDate>
      <link>https://dev.to/nkpgardose/how-i-deal-with-css-2019-48d6</link>
      <guid>https://dev.to/nkpgardose/how-i-deal-with-css-2019-48d6</guid>
      <description>&lt;p&gt;In this post, I'll be sharing some of my methodologies in writing CSS and will show some component examples. &lt;/p&gt;

&lt;p&gt;Feel free to comment and share some tips for improvement. This is my first post in &lt;a href="https://dev.to"&gt;https://dev.to&lt;/a&gt; and I hope you find it interesting!&lt;/p&gt;

&lt;h3&gt;
  
  
  👉 What CSS language extension do you use?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; None. I just use plain CSS with custom properties(variables) on my projects and open-source repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reasons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I decided not to use any CSS language extension so that developers who are new to CSS can jump on board more easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There's a chance that SASS may bloat your CSS. Here's one:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;    &lt;span class="cm"&gt;/* https://gist.github.com/nkpgardose/2160141607f98f74f86679fde1d914b7 - 2015 */&lt;/span&gt;
    &lt;span class="nc"&gt;.list&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

      &lt;span class="k"&gt;&amp;amp;&lt;/span&gt; &lt;span class="nc"&gt;.list-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;&amp;amp;&lt;/span&gt; &lt;span class="nc"&gt;.list-item-icon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.wh-list__icon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;@extend&lt;/span&gt; &lt;span class="nc"&gt;.list-item-icon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.wh-list__label&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;@extend&lt;/span&gt; &lt;span class="nc"&gt;.list-item&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Pretty simple right? Here the generated css result:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;    &lt;span class="nc"&gt;.list&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.list&lt;/span&gt; &lt;span class="nc"&gt;.list-item&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.list&lt;/span&gt; &lt;span class="nc"&gt;.wh-list__label&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.list&lt;/span&gt; &lt;span class="nc"&gt;.list-item&lt;/span&gt; &lt;span class="nc"&gt;.list-item-icon&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="nc"&gt;.list&lt;/span&gt; &lt;span class="nc"&gt;.wh-list__label&lt;/span&gt; &lt;span class="nc"&gt;.list-item-icon&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="nc"&gt;.list&lt;/span&gt; &lt;span class="nc"&gt;.list-item&lt;/span&gt; &lt;span class="nc"&gt;.wh-list__icon&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
    &lt;span class="nc"&gt;.list&lt;/span&gt; &lt;span class="nc"&gt;.wh-list__label&lt;/span&gt; &lt;span class="nc"&gt;.wh-list__icon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c"&gt;/* eyyy */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;When it comes to SASS, new developers must read the documentation and do some practices to totally understand how SASS works. But, this will consume learning time for new developers, instead of using that time to do the actual feature of a project.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I also refrain from including other styles from other components, so &lt;code&gt;@include&lt;/code&gt; and &lt;code&gt;@mixin&lt;/code&gt; will not be used that much.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To be &lt;strong&gt;brutally honest&lt;/strong&gt;, I'm a fan of &lt;a href="https://github.com/facebook/create-react-app"&gt;create-react-app&lt;/a&gt; node package -- so whenever I use it, I just want to run the project locally and do experiments or features since I'm too lazy to configure and read READMEs of many build tools. CRA doesn't have support on SASS when creating a new app so I just stick on whatever works for now.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📖 What CSS methodology you prefer?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;a href="https://rscss.io"&gt;rscss&lt;/a&gt; but in pascal case &amp;amp; camel case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reasons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I used a lot of CSS methodology(BEM, bootstrap way) before and RSCSS is suited to my liking.&lt;/li&gt;
&lt;li&gt;It has nice balance on HTML &amp;amp; CSS.&lt;/li&gt;
&lt;li&gt;This methodology challenge to make simple HTML template and CSS which result in less code. Less code meaning a few bugs.&lt;/li&gt;
&lt;li&gt;Since naming react components is in &lt;code&gt;PascalCase&lt;/code&gt;, I'm using &lt;code&gt;PascalCase&lt;/code&gt; and &lt;code&gt;camelCase&lt;/code&gt; for component name and modifiers respectively. This will lighten CSS as well since we don't have an extra &lt;code&gt;-&lt;/code&gt; character.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;    &lt;span class="c"&gt;/* field.css */&lt;/span&gt;
    &lt;span class="nc"&gt;.Field&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.Field&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;.label&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.Field&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;.input&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.Field&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;.errorMsg&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c"&gt;/* modifiers */&lt;/span&gt;
    &lt;span class="nc"&gt;.Field.compact&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.Field.compact&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;.input&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.Field.sticky&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.Field.helloWorld&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's an example template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"Field"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"label"&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"sample"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{label}&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"input"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"sample"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{errorMsg}&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's a react example as well:  &lt;a href="https://github.com/nkpgardose/EmojiPicker/tree/master/src/components"&gt;https://github.com/nkpgardose/EmojiPicker/tree/master/src/components&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🤔 Dealing with nested components
&lt;/h3&gt;

&lt;p&gt;Let's do a search bar and button as an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;    &lt;span class="c"&gt;/* search bar */&lt;/span&gt;
    &lt;span class="nc"&gt;.SearchBar&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.SearchBar&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;.input&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.SearchBar&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;.submit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c"&gt;/* button */&lt;/span&gt;
    &lt;span class="nc"&gt;.Btn&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.Btn.primary&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We'll use these styles on our template, it will look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;className=&lt;/span&gt;&lt;span class="s"&gt;"SearchBar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"input"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"submit Btn primary"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whenever you need a component inside a larger component. Class name declaration will be in this order.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    [element class of Parent component] [Component] [component\'s modifier]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  👍 Some CSS tips that I find it useful
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Always use classes.&lt;/li&gt;
&lt;li&gt;Abbreviate CSS names. &lt;code&gt;Btn&lt;/code&gt; instead of &lt;code&gt;Button&lt;/code&gt;, &lt;code&gt;Nav&lt;/code&gt; instead of &lt;code&gt;Navigation&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;As much as possible, prevent using &lt;code&gt;* {}&lt;/code&gt; on your CSS. A component should work flawlessly on any website.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;box-sizing: border-box&lt;/code&gt; when class have &lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt; (and min/max) properties.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Some useful links
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://speakerdeck.com/mdo/at-mdo-ular-css"&gt;https://speakerdeck.com/mdo/at-mdo-ular-css&lt;/a&gt;&lt;br&gt;
&lt;a href="https://rscss.io"&gt;https://rscss.io&lt;/a&gt;&lt;br&gt;
&lt;a href="https://codeguide.co"&gt;https://codeguide.co&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.aastudio.fr/box-sizing.html"&gt;https://www.aastudio.fr/box-sizing.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>tips</category>
      <category>ui</category>
    </item>
  </channel>
</rss>
