<?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: Vosidiy M.</title>
    <description>The latest articles on DEV Community by Vosidiy M. (@vosidiy).</description>
    <link>https://dev.to/vosidiy</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%2F399500%2Fd5acb1e4-80d3-4c40-b48e-24f7c57b82d3.png</url>
      <title>DEV Community: Vosidiy M.</title>
      <link>https://dev.to/vosidiy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vosidiy"/>
    <language>en</language>
    <item>
      <title>Color &amp; Gradient Tools for Web in 2025</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Sat, 08 Nov 2025 07:50:51 +0000</pubDate>
      <link>https://dev.to/vosidiy/color-gradient-tools-for-web-in-2025-2195</link>
      <guid>https://dev.to/vosidiy/color-gradient-tools-for-web-in-2025-2195</guid>
      <description>&lt;p&gt;How to generate colorful backgrounds for app or website? Web gradients create visual depth and interest by blending multiple colors on backgrounds. They help in crafting dynamic user interfaces. &lt;/p&gt;

&lt;p&gt;A list of tools to create stunning gradients and CSS patterns for website&lt;/p&gt;

&lt;p&gt;Color and Gradient Tools Used by Top Designers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://uicolors.app/generate" rel="noopener noreferrer"&gt;https://uicolors.app/generate&lt;/a&gt;&lt;br&gt;
Tailwind color generator. A color-system generator and preview tool that lets you build palettes for UI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://supa-palette.com" rel="noopener noreferrer"&gt;https://supa-palette.com&lt;/a&gt;&lt;br&gt;
Color palette generator for Figma. Offers Figma plugin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://photogradient.com" rel="noopener noreferrer"&gt;https://photogradient.com&lt;/a&gt;&lt;br&gt;
Online tool to generate smooth mesh gradients&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://storytale.io/browse/?categoryId=4" rel="noopener noreferrer"&gt;https://storytale.io/browse/?categoryId=4&lt;/a&gt;&lt;br&gt;
Part of Storytale’s illustration library, find graphics, artwork, backgrounds and design assets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://lumenloops.com" rel="noopener noreferrer"&gt;https://lumenloops.com&lt;/a&gt;&lt;br&gt;
Animated hero illustrations and accent graphics (SVG, video formats) designed to elevate landing pages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kigen.design/color" rel="noopener noreferrer"&gt;https://kigen.design/color&lt;/a&gt;&lt;br&gt;
An interactive color generator for UI made for Kigen design system plugin: lets you produce full color systems from a base color &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Save and Follow us. &lt;br&gt;
&lt;strong&gt;Find more tools at &lt;a href="http://finalui.com?ref=dev.to"&gt;http://finalui.com?ref=dev.to&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://finalui.com/patterns-gradients" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1qs56hb3ehlvxwa7364.png" alt="finalui screenshot" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>color</category>
      <category>gradient</category>
      <category>css</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Wed, 30 Jul 2025 06:39:03 +0000</pubDate>
      <link>https://dev.to/vosidiy/-4bm</link>
      <guid>https://dev.to/vosidiy/-4bm</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/vosidiy" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F399500%2Fd5acb1e4-80d3-4c40-b48e-24f7c57b82d3.png" alt="vosidiy"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/vosidiy/product-card-with-multiple-thumbnail-images-change-on-mouse-hover-45oj" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Product card with multiple thumbnail images (change on mouse hover)&lt;/h2&gt;
      &lt;h3&gt;Vosidiy M. ・ Jul 28&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#css&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#html&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#coding&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>css</category>
      <category>html</category>
      <category>coding</category>
      <category>webdev</category>
    </item>
    <item>
      <title>My article</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Wed, 30 Jul 2025 06:37:32 +0000</pubDate>
      <link>https://dev.to/vosidiy/my-article-2ik6</link>
      <guid>https://dev.to/vosidiy/my-article-2ik6</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/vosidiy" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F399500%2Fd5acb1e4-80d3-4c40-b48e-24f7c57b82d3.png" alt="vosidiy"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/vosidiy/create-own-css-grid-system-that-makes-life-much-easier-48dc" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I made my CSS grid system that made my life much easy (No framework, no build process)&lt;/h2&gt;
      &lt;h3&gt;Vosidiy M. ・ Jul 28&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#css&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#sass&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#scss&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>css</category>
      <category>webdev</category>
      <category>sass</category>
      <category>scss</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Mon, 28 Jul 2025 13:38:06 +0000</pubDate>
      <link>https://dev.to/vosidiy/-1759</link>
      <guid>https://dev.to/vosidiy/-1759</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/vosidiy/create-own-css-grid-system-that-makes-life-much-easier-48dc" class="crayons-story__hidden-navigation-link"&gt;I made my CSS grid system that made my life much easy (No framework, no build process)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/vosidiy" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F399500%2Fd5acb1e4-80d3-4c40-b48e-24f7c57b82d3.png" alt="vosidiy profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/vosidiy" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vosidiy M.
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vosidiy M.
                
              
              &lt;div id="story-author-preview-content-2728512" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/vosidiy" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F399500%2Fd5acb1e4-80d3-4c40-b48e-24f7c57b82d3.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vosidiy M.&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/vosidiy/create-own-css-grid-system-that-makes-life-much-easier-48dc" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 28 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/vosidiy/create-own-css-grid-system-that-makes-life-much-easier-48dc" id="article-link-2728512"&gt;
          I made my CSS grid system that made my life much easy (No framework, no build process)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/css"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;css&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/sass"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;sass&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/scss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;scss&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/vosidiy/create-own-css-grid-system-that-makes-life-much-easier-48dc#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>css</category>
      <category>webdev</category>
      <category>sass</category>
      <category>scss</category>
    </item>
    <item>
      <title>I made my CSS grid system that made my life much easy (No framework, no build process)</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Mon, 28 Jul 2025 13:29:35 +0000</pubDate>
      <link>https://dev.to/vosidiy/create-own-css-grid-system-that-makes-life-much-easier-48dc</link>
      <guid>https://dev.to/vosidiy/create-own-css-grid-system-that-makes-life-much-easier-48dc</guid>
      <description>&lt;p&gt;I was using Bootstrap CSS before, but I was never happy because of its lack of utility classes for margins, padding, and other sizings.&lt;br&gt;
I tried to extend it by digging into its SCSS (Sass) files, but it was too complicated. Sass mixins and functions were dependent on each other; a small mistake might take hours to fix. &lt;/p&gt;

&lt;p&gt;So, last year, I decided to build my own CSS framework for my products - &lt;a href="https://ecommerce-ui.com/" rel="noopener noreferrer"&gt;Ecommerce Templates&lt;/a&gt;. (&lt;a href="https://ecommerce-ui.com/" rel="noopener noreferrer"&gt;ecommerce-ui.com&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;I used to create and sell e-commerce templates. My templates were built on Bootstrap 5. After creating my own CSS framework, I never looked back at Bootstrap. Also, I hate Tailwind due to its messy, long class names and its requirement for build processes. I don't like using the terminal for small changes on HTML. &lt;br&gt;
So, I created a framework that combines elements of Tailwind and Bootstrap. &lt;/p&gt;

&lt;p&gt;Here is my breakpoint configuration in scss (sass)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nv"&gt;$breakpoints&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="s1"&gt;'sm'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'min-width: 641px'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;  &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;mobile&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;small&lt;/span&gt; &lt;span class="n"&gt;tablet&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt;
  &lt;span class="s1"&gt;'md'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'min-width: 921px'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;medium&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nb"&gt;larger&lt;/span&gt; &lt;span class="n"&gt;tablet&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt;
  &lt;span class="s1"&gt;'lg'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'min-width: 1201px'&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;large&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;desktop&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;any&lt;/span&gt; &lt;span class="n"&gt;widescreen&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's no need for too many breakpoints. Since most users browse on desktops or mobile devices. Even tablet users are not too many.  we can streamline our code by targeting these key screen sizes. &lt;br&gt;
First thing to create default classes for grid, without breakpoints&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nc"&gt;.row&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;--flex-gap-rows&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default gap // gap.scss file&lt;/span&gt;
  &lt;span class="na"&gt;--flex-gap-cols&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// default gap // gap.scss file&lt;/span&gt;
  &lt;span class="na"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// css gap breaks flex column, it is good for css grid only&lt;/span&gt;
  &lt;span class="na"&gt;row-gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// css gap breaks flex column, it is good for css grid only&lt;/span&gt;
  &lt;span class="nl"&gt;column-gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// css gap breaks flex column, it is good for css grid only&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-wrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;wrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="m"&gt;-0&lt;/span&gt;&lt;span class="mi"&gt;.5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;flex-gap-cols&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="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="m"&gt;-0&lt;/span&gt;&lt;span class="mi"&gt;.5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;flex-gap-cols&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;flex-gap-rows&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.row&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;flex-gap-cols&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="mi"&gt;.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;padding-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;flex-gap-cols&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="mi"&gt;.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;flex-gap-rows&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;//////////// ROW COLS&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-auto&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-2&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-3&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33&lt;/span&gt;&lt;span class="mi"&gt;.33333333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-4&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-5&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-6&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="mi"&gt;.66666667%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-7&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="mi"&gt;.285714%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-8&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="mi"&gt;.5%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-9&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="mi"&gt;.111111%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-10&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-11&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="mi"&gt;.09090909%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nc"&gt;.row-cols-12&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="mi"&gt;.33333333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Based on above configuration, we create loop to create grid system based on each breakpoint.&lt;br&gt;
So it will iterate all classes for sm, md, lg&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="k"&gt;@each&lt;/span&gt; &lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$size&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$breakpoints&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$size&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="c1"&gt;// breakpoinst styles&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-auto&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-2&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-3&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33&lt;/span&gt;&lt;span class="mi"&gt;.3333333333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-4&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-5&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-6&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="mi"&gt;.6666666667%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-7&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;14&lt;/span&gt;&lt;span class="mi"&gt;.285714%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-8&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="mi"&gt;.5%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-9&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="mi"&gt;.111111%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-10&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-11&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="mi"&gt;.09090909%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="nc"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nd"&gt;:row-cols-12&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="mi"&gt;.33333333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;important&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
    &lt;span class="c1"&gt;// end breakpoint&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;/div&gt;



&lt;p&gt;So how you can use it?&lt;br&gt;
You can easily create columns upto 12. &lt;br&gt;
For example:&lt;br&gt;
(On large screens, there will be 5 items in a row, on medium screens 4 items per row, and on mobile (default) 2 items per row)&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;"row lg:row-cols-5 md:row-cols-4 row-cols-2"&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; Column 1 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 2 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 3 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 4 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;  
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 5 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 1 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 2 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 3 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 4 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt; Column 5 &lt;span class="nt"&gt;&amp;lt;/div&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;You can create 7 column or 9 column very easily. Just by adding classes into parent element. &lt;/p&gt;

&lt;p&gt;I made all of my components and utility classes using Sass. There's no build process and no dependency management. I love Codekit and Prepros; they convert any Sass (SCSS) file into CSS easily. Check out how I created all my other utility classes and components for  &lt;a href="https://ecommerce-ui.com/" rel="noopener noreferrer"&gt;eCommerce Templates&lt;/a&gt; You can &lt;a href="https://finalui.gumroad.com/l/ecommerceui" rel="noopener noreferrer"&gt;Download here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the next lesson, I'll share how I created other utility classes. Please follow me on &lt;a href="https://vosidiy.medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;br&gt;
&lt;a href="https://vosidiy.medium.com/" rel="noopener noreferrer"&gt;vosidiy.medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ecommerce-ui.com/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqet0hoth9lzsww8wllv.png" alt="Ecommerce templates" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>sass</category>
      <category>scss</category>
    </item>
    <item>
      <title>Product card with multiple thumbnail images (change on mouse hover)</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Mon, 28 Jul 2025 12:56:19 +0000</pubDate>
      <link>https://dev.to/vosidiy/product-card-with-multiple-thumbnail-images-change-on-mouse-hover-45oj</link>
      <guid>https://dev.to/vosidiy/product-card-with-multiple-thumbnail-images-change-on-mouse-hover-45oj</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitrcke3erusw2y4i1qt7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitrcke3erusw2y4i1qt7.png" alt="product card gallery"&gt;&lt;/a&gt;&lt;br&gt;
Today, e-commerce is evolving rapidly. Users are lazy to click, that's why most websites implement a feature that displays multiple images without requiring a click on the product link.&lt;/p&gt;

&lt;p&gt;User just hover on product and while moving the cursor, the image will change. &lt;/p&gt;

&lt;p&gt;When you ask ChatGPT to create features like this, the code you get tends to be complicated and messy, often filled with CSS and JavaScript.&lt;/p&gt;

&lt;p&gt;However, I decided to create the simplest CSS-only solution&lt;/p&gt;

&lt;p&gt;In this example, I used css classes  from &lt;a href="https://ecommerce-ui.com/" rel="noopener noreferrer"&gt;ecommerce-ui.com&lt;/a&gt;. Just for basic structure, grid and utilities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsazeu7l6r6tvy6hoe0hc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsazeu7l6r6tvy6hoe0hc.gif" alt="example card"&gt;&lt;/a&gt;&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;figure&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card shadow overflow-hidden"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="c"&gt;&amp;lt;!-- Gallery start --&amp;gt;&lt;/span&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;"product-images"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&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;"hover-zone zone1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://placehold.net/1.png"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&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;"hover-zone zone2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://placehold.net/2.png"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&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;"hover-zone zone3"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://placehold.net/3.png"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&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;"hover-zone zone4"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://placehold.net/4.png"&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;span class="c"&gt;&amp;lt;!-- Gallery end// --&amp;gt;&lt;/span&gt;
     &lt;span class="nt"&gt;&amp;lt;figcaption&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"p-5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h5&amp;gt;&lt;/span&gt;Product name &lt;span class="nt"&gt;&amp;lt;/h5&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"mb-3 mt-2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;$199.00&lt;span class="nt"&gt;&amp;lt;/p&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;"btn btn-default"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; Add to cart &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
     &lt;span class="nt"&gt;&amp;lt;/figcaption&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/figure&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the code above, you can see that we've divided it into four vertical zones (columns), with each column having its own image. All images overlap each other. We simply show or hide them according to the mouse hover on each zone.&lt;/p&gt;

&lt;p&gt;Here is simple css&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="nc"&gt;.product-images&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;260px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;pointer&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.product-images&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Invisible horizontal zones */&lt;/span&gt;
&lt;span class="nc"&gt;.hover-zone&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
  &lt;span class="nl"&gt;border-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="nb"&gt;solid&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;.zone1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.zone2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.zone3&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.zone4&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;75%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.hover-zone&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;visibility&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.hover-zone&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nt"&gt;img&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;visibility&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;visible&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.hover-zone&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;border-bottom-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="no"&gt;blue&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;/div&gt;



&lt;p&gt;You can see that, we changing opacity and visibility. &lt;/p&gt;

&lt;p&gt;Here is full working example on codepen:&lt;br&gt;
Check out this Pen I made!&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/vosidiy/embed/ZYbBzvG?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsazeu7l6r6tvy6hoe0hc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsazeu7l6r6tvy6hoe0hc.gif" alt="product card ui image gallery"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ecommerce-ui.com/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9b7b44elyxxkrqviwnuy.png" alt="Ecommerce template"&gt;&lt;/a&gt;&lt;br&gt;
Download e-commerce Templates and UI Kit&lt;br&gt;
&lt;a href="https://ecommerce-ui.com" rel="noopener noreferrer"&gt;https://ecommerce-ui.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>coding</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Use these placeholder images to test your UI</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Sun, 06 Apr 2025 07:49:51 +0000</pubDate>
      <link>https://dev.to/vosidiy/use-these-placeholder-images-to-test-your-ui-gn5</link>
      <guid>https://dev.to/vosidiy/use-these-placeholder-images-to-test-your-ui-gn5</guid>
      <description>&lt;p&gt;As a UI designer and developer, I often struggle to find suitable placeholder images. For example, when a product photo is unavailable, I prefer to display an empty box. &lt;br&gt;
Similarly, for real estate websites, a grayscale or dummy image of a building's shape is preferable before the actual photo loads. &lt;/p&gt;

&lt;p&gt;Yes, there are many stock photo libraries, requiring time-consuming searches, resizing, and optimization with tinypng.com. To solve this, I created a website and stored collection of images for common use cases.&lt;br&gt;
You can use by downloading or just by adding url&lt;br&gt;
for exampple: &lt;br&gt;
&lt;code&gt;https://placehold.net/default.svg&lt;/code&gt;&lt;br&gt;
or &lt;br&gt;
&lt;code&gt;https://placehold.net/building-400x600.png&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;More placeholder images on &lt;a href="https://placehold.net/" rel="noopener noreferrer"&gt;placehold.net&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is placeholder image?
&lt;/h2&gt;

&lt;p&gt;Placeholder photos are used by designers or developers to visualize a design or layout before the final image is replaced.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkdil94amk4fgcjb22v9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkdil94amk4fgcjb22v9.png" alt="Placeholder image example" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A placeholder image is essentially a substitute image used in website or application design while the actual images are being created or are not yet available. They serve a few key purposes:  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layout and Design:&lt;/strong&gt;&lt;br&gt;
Placeholder photos help visualize the final layout of your future website or app, ensuring that image spaces are properly allocated. This allows designers and developers to test how the design will look with images of different sizes and aspect ratios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance:&lt;/strong&gt;&lt;br&gt;
Using lightweight placeholder images can improve page loading speed, especially during development when high-resolution images might slow things down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Content Planning:&lt;/strong&gt;&lt;br&gt;
They help to indicate where images will be placed, making it easier to plan the content and flow of the page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing Responsiveness:&lt;/strong&gt;&lt;br&gt;
With the increasing importance of responsive design, designers need to ensure that images look good on all devices. Placeholder images allow them to test how images will resize and adapt to different screen sizes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are many other placeholder image but all of them are boring images with texts like "No image" or just a shape of mountain &amp;amp; sun..&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, I wrote this post to spread the word. All for free&lt;br&gt;
&lt;a href="https://placehold.net" rel="noopener noreferrer"&gt;https://placehold.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make the UI stand out until the real image comes along.&lt;br&gt;
Thanks!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>design</category>
      <category>figma</category>
      <category>ui</category>
    </item>
    <item>
      <title>List of useful tools &amp; widgets for website to boost marketing</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Wed, 31 Jan 2024 12:02:02 +0000</pubDate>
      <link>https://dev.to/vosidiy/useful-tools-widgets-for-website-to-boost-marketing-1c8h</link>
      <guid>https://dev.to/vosidiy/useful-tools-widgets-for-website-to-boost-marketing-1c8h</guid>
      <description>&lt;p&gt;&lt;strong&gt;There are some online tools you can integrate by just adding few lines of code, and improve marketing and sales on your website&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Forms are everywhere!
&lt;/h2&gt;

&lt;p&gt;I think that, &lt;code&gt;&amp;lt;FORM&amp;gt;&lt;/code&gt; element is one of top inventions of human being :-)&lt;br&gt;
There are many purposes of using form elements: For ex: Registration form, Feedback form, Appointment form, Client proposal form, Product submission form, Booking form, Survey form, Voting form, Event booking form and so on.&lt;/p&gt;

&lt;p&gt;Here is a real-life example: if you need a loan from bank, You visit website of bank, You will find a loan calcualtor form with few input elements, where you can choose number of month and loan amount. Then, website instantly gives you all the detail about monthly installments. So, this kind of forms can be found on many websites and in every industry.&lt;/p&gt;

&lt;p&gt;Today, every business have a website. And website should have some interactivity to give proper information. Visitor may want to order your service directly from website. Anyways, main purpose of website is usually generating leads — receiving orders or communicating with clients.&lt;/p&gt;

&lt;p&gt;Here are some tools which adds interactivity to any website. And makes your website lead generating magnet. You can also integrate these tools with messengers like Telegram or WhatsApp to get notification if new order received.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4up40l4vwnmhmpr71puc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4up40l4vwnmhmpr71puc.jpg" alt=" " width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://link.jotform.com/finalui-NOD4fuwtXK" rel="noopener noreferrer"&gt;jotform.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
One of the most used tool, You can create and share contact form or order form pages even without having a website. You can also accept payments, add conditions based on users selection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.fillout.com/?ref=finalui" rel="noopener noreferrer"&gt;fillout.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
This is one of my favorite form builder. You can create any kind of interactivity to you form. Even it can create price estimator or cost calculator form where users input their request and instantly get costs based on your formula.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://stepform.io/ru?id=2541" rel="noopener noreferrer"&gt;stepform.io&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
This is also my go to solution when it comes to creating a form where visitors can generate estimated price. Its formula element is so powerful. You can create multi step form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://formcarry.com/?via=finalui" rel="noopener noreferrer"&gt;formcarry.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
This tool can be integrated with any HTML form elements, You just create any form in your website and then add special url link to &lt;code&gt;&amp;lt;form action=url&amp;gt;&lt;/code&gt;, That’s it. all easy, You don’t need any coding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://formspark.io/" rel="noopener noreferrer"&gt;formspark.io&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
This is very basic tool to convert your html form elements into working form where users can submit order or contact from your site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discount generator
&lt;/h2&gt;

&lt;p&gt;Some countries has low salaries per month. Your digital product might be expensive for some countries with low income. This tool can generate discount based on country.&lt;br&gt;
&lt;strong&gt;&lt;a href="https://gumroad.com/a/309047251/xdjms" rel="noopener noreferrer"&gt;paritydeals.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Generate discount automatically based on visitor’s country.&lt;/p&gt;

&lt;h2&gt;
  
  
  Newsletter, email &amp;amp; sms marketing
&lt;/h2&gt;

&lt;p&gt;Here are some proven tools which used by many creators.&lt;br&gt;
Newsletter always help to keep your audience informed about new updates.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;convertkit.com&lt;/li&gt;
&lt;li&gt;mailjet.com&lt;/li&gt;
&lt;li&gt;mailerlite.com&lt;/li&gt;
&lt;li&gt;brevo.com&lt;/li&gt;
&lt;li&gt;drip.com&lt;/li&gt;
&lt;li&gt;flodesk.com&lt;/li&gt;
&lt;li&gt;yespo.io&lt;/li&gt;
&lt;li&gt;formspark.io&lt;/li&gt;
&lt;li&gt;loops.so&lt;/li&gt;
&lt;li&gt;zoho.com/marketingautomation/&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Notification alerts, Popup, Upsell
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;optinmonster.com&lt;/li&gt;
&lt;li&gt;privy.com&lt;/li&gt;
&lt;li&gt;onesignal.com&lt;/li&gt;
&lt;li&gt;wisepops.com&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Email and SMS marketing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;sendlane.com
This is tool is perfect choice if your business growing fast and you need more automation for marketing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Chat and messaging
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;drift.com&lt;/li&gt;
&lt;li&gt;dixa.com&lt;/li&gt;
&lt;li&gt;tawk.to&lt;/li&gt;
&lt;li&gt;chatra.com&lt;/li&gt;
&lt;li&gt;helpscout.com&lt;/li&gt;
&lt;li&gt;freshworks.com&lt;/li&gt;
&lt;li&gt;crisp.chat&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Customer engagement
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;trustpulse.com
Sometimes you can see on some websites informing about “X user just purchased this product” or “Someone just booked service”. This kind of information gives more trust to new users.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  That’s it for now…
&lt;/h2&gt;

&lt;p&gt;Follow me on &lt;a href="https://www.linkedin.com/in/vosidiy/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
I write about online tools, web design, UX/UI Design&lt;/p&gt;

&lt;p&gt;&lt;a href="https://finalui.com/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fquw9qghy6qeal3jhpcnm.png" alt="Design system" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>marketing</category>
      <category>forms</category>
      <category>nocode</category>
    </item>
    <item>
      <title>Designing navigation menu for web</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Sat, 16 Apr 2022 08:39:18 +0000</pubDate>
      <link>https://dev.to/vosidiy/navigation-menu-examples-for-website-design-and-code-2o43</link>
      <guid>https://dev.to/vosidiy/navigation-menu-examples-for-website-design-and-code-2o43</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Website navigation menu is an essential part of UI. It’s like a foundation of any website. That’s why you shouldn’t ignore this article if you are a web designer or web developer.&lt;/p&gt;

&lt;p&gt;There is no so called “best website navigation”. Menu always depends on website. For ex. For some websites it is enough &lt;a href="https://bootstrap-menu.com/detail-basic-hover.html" rel="noopener noreferrer"&gt;simple horizontal menu&lt;/a&gt;. For more complex websites you may need a large mega-menu. Here is tutorial for megamenu with bootstrap. Most of e-commerce websites has multi level menus like treeview. so it depends on your website’s structure and number of pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to design better website menu
&lt;/h2&gt;

&lt;p&gt;First of all you should create a sitemap or structure tree of your website based on importance of every link. Some links should be always visible at the top header or at the bottom — footer, but some other links are linked with other pages. For example: Pages like — About, Products, Plans, Contact, and Blog pages should be visible at the top header. To access the History of company and Team pages, you need to click the About page first, then go to inner pages.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi75nhjr8e93z4xkbaac2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi75nhjr8e93z4xkbaac2.png" alt="Website sitemap for menu" width="800" height="535"&gt;&lt;/a&gt;&lt;br&gt;
In this tutorial I will share all possible menu variants with examples. These are mostly horizontal menus. These information are useful for both web designers and front-end developers. At the end I will share a link to download html css code.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Simple horizontal menu with dropdown
&lt;/h2&gt;

&lt;p&gt;You’ve already seen such menus everywhere on the internet. Dropdown menu can opened by click or on hover, or both. On bootstrap framework it is clickable only. But you can make it open on hover with few line of css code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7z29vnzurs6wi1kefcy0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7z29vnzurs6wi1kefcy0.jpg" alt="Basic horizontal menu" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Multi level menu design.
&lt;/h2&gt;

&lt;p&gt;Multilevel web menu is also called tree-view menu. When you open a dropdown and bring mouse cursor one of the item of dropdown, another dropdown appears from left or right side. Here is example image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmv9pvlf1z8jqfy0dfvz3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmv9pvlf1z8jqfy0dfvz3.jpg" alt="Dropdown website menu example" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Megamenu design samples.
&lt;/h2&gt;

&lt;p&gt;Mega-menu is mostly used on e-commerce sites. It can show all catalogue of products on single dropdown window. You can put large content inside mega-menu, like showing all categories of products, many links, banners inside it. It is a bit complex menu to create and make responsive. Here is some design examples of mega menu:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdsnu9pqgixs74ce9i930.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdsnu9pqgixs74ce9i930.jpg" alt="Simple mega-menu sample" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is another megamenu style for ecommerce web sites, each category list has its heading and icon:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkt1edvdmw2nn350mavl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkt1edvdmw2nn350mavl.jpg" alt="Ecommerce dropdown mega-menu idea" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even, you can show product promotions or offers inside mega-menu block. Here is sample:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1cva5xcooe32qizdbm7x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1cva5xcooe32qizdbm7x.jpg" alt="Large Mega menu with banners" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Mega-menu with tab menu inside
&lt;/h2&gt;

&lt;p&gt;That kind of megamenu is mostly for e-commerce websites, It is same as above large full width megamenu but, It has vertical (sometimes horizontal tabs). Tabs can be clickable or hoverable as well. Here is example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhfxlhdmj61vru5im3sp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhfxlhdmj61vru5im3sp.jpg" alt="Megamenu with inner sub menu" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Dropdown with large submenu.
&lt;/h2&gt;

&lt;p&gt;Another variant of menu is dropdown with large submenu on the right side.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mnl64mkhhqvde0njt1n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mnl64mkhhqvde0njt1n.jpg" alt="Ecommerce menu dropdown sample screenshot" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyomt44fzp8b3inispbpp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyomt44fzp8b3inispbpp.jpg" alt="Example of drop-down mega-menu for e-commerce image" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Large dropdown menu design.
&lt;/h2&gt;

&lt;p&gt;It is same as normal dropdown but it has larger width, Similar to Ebay.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faop5fwt5xp197lfzvjn5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faop5fwt5xp197lfzvjn5.jpg" alt="Large dropdown menu for website" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffx3s5ws2hdwhcp2qtf85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffx3s5ws2hdwhcp2qtf85.png" alt="Ebay menu categories design sample" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Helping visitors to navigate throughout website pages should be a priority for every website. The website menu design should work well for both desktop and mobile users. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Follow me:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/vosidiy" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/vosidiy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://finalui.com/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmv01rd6sviipfu2u1or4.png" alt=" " width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>navigation</category>
      <category>menu</category>
      <category>bootstrap</category>
    </item>
    <item>
      <title>Ways of creating an online shop website (technical side of e-commerce)</title>
      <dc:creator>Vosidiy M.</dc:creator>
      <pubDate>Wed, 06 Apr 2022 17:23:40 +0000</pubDate>
      <link>https://dev.to/vosidiy/ways-of-creating-an-online-shop-website-technical-side-of-e-commerce-2o5b</link>
      <guid>https://dev.to/vosidiy/ways-of-creating-an-online-shop-website-technical-side-of-e-commerce-2o5b</guid>
      <description>&lt;p&gt;The volume of online sales in the world has grown dramatically in recent years. I worked with many people who started online business. Some of them failed, some of them selling online successfully. Some of them spent a lot money and time to create a website, some of them running business without having own website, but selling online. I also started an online store business. After a while, I gave it up. Because my partner who gave me this idea, he couldn’t supply products.&lt;/p&gt;

&lt;h4&gt;
  
  
  Briefly about myself…
&lt;/h4&gt;

&lt;p&gt;I became interested in IT and programming in 2010 ( I was 20). I first learned PHP and Wordpress and made several online store websites and product catalog websites. When I was a student at university, I earned money by creating e-commerce websites. At that time, websites was very simple: There was a product catalog, categories, cart, order forms and admin panel…&lt;br&gt;
Later, I chose web design field, Creating an interfaces was interesting for me rather than programming. Until now I designed hundreds of online stores and marketplace websites. Sometimes I also convert my designs into responsive HTML / CSS pages.&lt;br&gt;
In the process, I learned all technical aspects of e-commerce business. Now, I decided to write about it.&lt;/p&gt;

&lt;h4&gt;
  
  
  Ways of selling online
&lt;/h4&gt;

&lt;p&gt;It all starts with asking a question:&lt;br&gt;
What do you want to sell?&lt;br&gt;
Where do you want to sell? Who do you want to sell to?&lt;br&gt;
Actually, there are two main options selling items in your city (without online):&lt;br&gt;
Option 1: You buy land and build a shop.&lt;br&gt;
Option 2: You rent a place in a big market or supermarket.&lt;br&gt;
The same is true in the world of the internet:&lt;br&gt;
Method 1: You get a hosting server (a database, GB or MB space) and program everything as you want or hire a programmer to do job.&lt;br&gt;
Method 2: You register on a big marketplace websites and start selling. Such sites are also called multi vendor e-commerce sites. For example, amazon.com, alibaba, etsy.com and so on.&lt;br&gt;
In this article, we will talk about Method 1 — how to create your own e-commerce website.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to start a shopping website?
&lt;/h4&gt;

&lt;p&gt;There is an endless debate among programmers: “Is PHP better or Python?”, “Laravel or Yii framework?”, “Wordpress or other CMS?” and so on. There are also many online web constructors, just like LEGO, you can create your own website by combining the elements you need. For example Squarespace, Webflow, Wix and so on. They also allow you to create a website with your custom design.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv1naey6e048r2m97kbsq.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv1naey6e048r2m97kbsq.jpeg" alt="dev tools for ecommerce" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are far from the IT and programming, then you may ask someone to guide you. And he or she will tell you “do it this way or that way” based on his or her own experience. You trust him. Because, he is a programmer! Then if you ask another programmer, he will recommend the method he knows well. And you start taking risks. In most cases, programmers prefer to start from scratch, Or to build based on previously written code.&lt;/p&gt;

&lt;p&gt;Creating a website is still half of the way :-), there is still a lot of work you have to do: Integrating with payment system (Paypal, Visa or your country’s local bank), integration with delivery service, future improvements like UX / UI design, code optimization,…, content filling, constant updating product catalog, such as taking images of products, writing detailed information and so on. Apart from that, marketing and online advertising is also important (this is another big topic).&lt;/p&gt;

&lt;p&gt;If you ask an architect about building methods, he will tell you about several ways to build a simple building. Whether brick or cement, wooden board or aluminum profile, and so on. The same is true in the field of programming.&lt;/p&gt;

&lt;h4&gt;
  
  
  What does an online store website consist of?
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Front-end part (Visible part for users or clients). For example, Home page, Catalog page, Product information page, etc. Site design.&lt;/li&gt;
&lt;li&gt;Database.&lt;/li&gt;
&lt;li&gt;Admin control panel. To add, delete items, receive orders. This is usually used by administrator or operator.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb9y2fvlah162ttn5bwzu.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb9y2fvlah162ttn5bwzu.jpeg" alt="website architecture back-end development" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Method #1. Creating everything from scratch (from zero)
&lt;/h4&gt;

&lt;p&gt;Many websites (including online stores) are written in PHP. But nobody writes code in pure PHP. Because it would be very time consuming. There are many so called “code libraries” (also called Frameworks) based on PHP.&lt;/p&gt;

&lt;p&gt;Most widely used PHP frameworks are Laravel, Yii, or Codeigniter. Remember: A programmer usually doesn’t work with all programming languages. Even PHP programmers have their own preferred Frameworks. Some prefer to use Laravel framework, others prefer the method they like. So, you select a programming language (PHP for ex.) to build your future website, and then select a Framework based on that language. That’s it!&lt;/p&gt;

&lt;p&gt;There are some advantages and disadvantages of creating all from scratch.&lt;br&gt;
Bad news is: You will spend more time and money. Many unexpected bugs (errors) may occur during creation. Need to test all functionality before you launch business.&lt;br&gt;
Good news is: You can create whatever you want without limits. Anytime you can expand your website’s functionality.&lt;/p&gt;

&lt;h4&gt;
  
  
  Steps to create it all from scratch.
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Planning and designing. Hire a web designer to create interface of your future website. This also take some time depending how professional your designer is. But now there are ready-made design libraries — pre-made web elements. Also known as Design library or UI Kit. For example: &lt;a href="https://ecommerce-uikit.com" rel="noopener noreferrer"&gt;https://ecommerce-uikit.com&lt;/a&gt;&lt;br&gt;
This can save 80% of the time of designer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HTML/CSS coding. So once you’ve got a detailed design of your future website, you need to convert them into html / css files.&lt;br&gt;
Here’s what you need to know. There are many ready-made html templates for e-commerce you can find on the Internet. If you use a ready-made html template, then there is no need to hire a designer.&lt;br&gt;
You can find many beautifully designed templates: For example: &lt;a href="https://themeforest.net/category/site-templates?term=ecommerce" rel="noopener noreferrer"&gt;https://themeforest.net/category/site-templates?term=ecommerce&lt;/a&gt;&lt;br&gt;
I would also like to mention the html template I created:&lt;br&gt;
&lt;a href="https://bootstrap-ecommerce.com" rel="noopener noreferrer"&gt;https://bootstrap-ecommerce.com&lt;/a&gt;&lt;br&gt;
You can easily customize the color and style. It consists of ready-made blocks. It is enough to know Bootstrap, CSS and SASS to customize according to your style.&lt;br&gt;
Check also &lt;a href="https://bootstrap-ecommerce.com/templates.html" rel="noopener noreferrer"&gt;https://bootstrap-ecommerce.com/templates.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating a database. Mysql, postgresql, mongodg and others can be used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrate your html pages with database.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Testing and fixing errors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upload to server and launch.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, the process of creating all from scratch is completely up to you. Only money, time and an experienced programmer is needed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Method #2. Using ready-made code
&lt;/h4&gt;

&lt;p&gt;There is another way that saves a lot of time and effort. If someone created a site from scratch with PHP or other language, then you can get a copy of that code to speed up the process. For ex. you can ask a programmer if he/she already worked on similar project, may be he can re-use that code for you. On the internet there are many open-source codes. On github.com you can find many of them. There are also paid options available on this site:&lt;br&gt;
&lt;a href="https://codecanyon.net/category/php-scripts/shopping-carts" rel="noopener noreferrer"&gt;https://codecanyon.net/category/php-scripts/shopping-carts&lt;/a&gt;&lt;br&gt;
You can also search Google for “online shop script” or “ecommerce php script”. Hundreds of people have already created similar project. Why reinvent the wheel. All you have to do is adapt it to your needs. Anyways, you can save 90% of time.&lt;/p&gt;

&lt;h4&gt;
  
  
  Method #3. Use of CMS systems
&lt;/h4&gt;

&lt;p&gt;CMS (Content Management System). This is also a ready-made code similar to the above method. But it is not a code created by “someone”, but a community with its own ecosystem and support team. An example of this is the Wordpress CMS.&lt;br&gt;
Wordpress is also a system created in PHP. In other words, it is a ready-made website created in PHP and has its own admin panel and front view. Usually CMS systems have additional plug-ins. Plugin — it is a set of additional codes which can enhance the capabilities of system. For example, Wordpress was actually designed for simple blog websites. But it has a plugin called Woocommerce (woocommerce.com) that allows to create an online store.&lt;/p&gt;

&lt;p&gt;Another popular CMS system is opencart (opencart.com), a ready-made system for online shopping. To use them, you just need to get a hosting (web server — a place for a database) and buy a domain name (&lt;a href="http://www" rel="noopener noreferrer"&gt;www&lt;/a&gt;. something .com).&lt;/p&gt;

&lt;p&gt;The advantage of CMS is, it takes 5 minutes to create your basic online store with essential functionalities. But…. you spend some time customizing it for your needs, such as changing design, adding extra features, and connecting to a payment system. For such tasks you need to find a programmer who already has experience in this system. Usually a programmer who is expert in PHP may not know Wordpress at all. Although Wordpress is also built on PHP :-).&lt;/p&gt;

&lt;h4&gt;
  
  
  Method #4. Use of SAAS systems
&lt;/h4&gt;

&lt;p&gt;This is the easiest and quickest method. SAAS means Software as a service. You need to open account and start uploading your products.&lt;br&gt;
Most popular SAAS system is shopify.com. It gives all essential functionality with pre-made design templates for your website. Or you can create your own design also.There is only monthly fee to run your shop.&lt;/p&gt;

&lt;p&gt;Benefit of the SAAS system is, you don’t need to worry about hosting server, finding programmer, security, payment systems and so on. Shopify has already integrated with Paypal and Visa, Master Card.&lt;/p&gt;

&lt;h4&gt;
  
  
  Method #5. Create based on Headless CMS or API
&lt;/h4&gt;

&lt;p&gt;Usually modern javascript is used for this method. For ex. ReactJS, VueJS or other libraries. It means that, your front-end (visual part for user) and back-end (admin control) parts are totally separate. They communicate via API (Aplication programming interface) or special code to retrieve any information (for example, Product Name and Picture) from the database.&lt;br&gt;
You can create your website with PHP + Larevel using this method. Or you can use ready made codebase.&lt;br&gt;
Here is one of the example: vuestorefront.io&lt;br&gt;
It provides all you need (Admin control, Database, …) but without front-end (visual part of your website). You will use their API to integrate with your custom html template. Sometimes this method called also SPA (Single Page Application)&lt;/p&gt;

&lt;p&gt;Advantages of this method:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Performance will be high. There is no page reload on each click. Only certain part of website will change when you click on any button or link.&lt;/li&gt;
&lt;li&gt;The front-end and Admin parts of the website are completely separate from each other, which makes them easier to manage or extend later.&lt;/li&gt;
&lt;li&gt;It is also possible to create a mobile application of the your website using the API. Because mobile apps communicate with server via API code.
Note: When creating a mobile version of the online store, I’d recommend the following ready-made design and html template for your app: 
&lt;a href="https://bootstrap-ecommerce.com/templates/mobile/website/index.html" rel="noopener noreferrer"&gt;https://bootstrap-ecommerce.com/templates/mobile/website/index.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Which method should I choose?
&lt;/h4&gt;

&lt;p&gt;The choice depends on your situation and future plans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsw4s9ptvqzia7aced9fa.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsw4s9ptvqzia7aced9fa.jpeg" alt="thinking man" width="720" height="480"&gt;&lt;/a&gt;&lt;br&gt;
If you do not have a large number of products for sale, then do not rush to open your own shopping website. It would be better to join marketplace websites (where many users can register and sell items). for example Amazon, Ebay, Etsy. You may find local marketplaces in your country also, For ex: market.yandex.ru in Russia. abad.uz, sello.uz in Uzbekistan.&lt;br&gt;
On marketplaces you don’t have to worry about coding or integrating with a payment system. All you have to do is to create a profile and add your products.&lt;/p&gt;

&lt;p&gt;If you are planning to sell a large number of products and you don’t have experience in online business. In that case, I recommend methods #2 or #3. Using ready-made code or CMS will save your time and money. Because you don’t know if sales will grow or not, it helps to test your business idea.&lt;br&gt;
Start using Opencart or Wordpress + Woocommerce. Then connect payment systems. Only one programmer is enough to do this job.&lt;/p&gt;

&lt;p&gt;Later, when your business grows and you will need a custom website with many functionalities. For example, advanced search functionality, which can auto-correct words, or multi alphabet search functionality and so on. So in that case you will need to hire a professional programmer and start from scratch (as mentioned above in method #1).&lt;br&gt;
In fact, custom features can be added to CMS-based sites as well. Only if you find an expert who can do it.&lt;/p&gt;

&lt;h4&gt;
  
  
  Payment system
&lt;/h4&gt;

&lt;p&gt;There are many payment gateways. For ex. stripe.com, braintreepayments.com or paypal.com and others. You can check the list of the countries which supported by those payment systems. There might be local payment gateways in your country. For ex: yookassa.ru in Russia, merchant.payme.uz in Uzbekistan&lt;/p&gt;

&lt;h4&gt;
  
  
  Marketing and advertising
&lt;/h4&gt;

&lt;p&gt;In fact, it’s a big topic. In short, hire someone to do social media marketing (SMM — facebook and instagram), Video advertising (Youtube), Search engine (Google ads, SEO). In many Asian countries Telegram app channels are very popular.&lt;/p&gt;

&lt;h4&gt;
  
  
  About success…
&lt;/h4&gt;

&lt;p&gt;Success in any business is not easy. Here are some important rules I understood from my experience:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start small. Forget about having a huge business empire all of a sudden. The long journey also begins with the first step.&lt;/li&gt;
&lt;li&gt;Work with constant patience and attention.&lt;/li&gt;
&lt;li&gt;It is very important to respond every user’s (or client’s) message or call.
The list goes on and on.
In the next articles I plan to write to you on the following topics.&lt;/li&gt;
&lt;li&gt;Sale of digital products (sale of e-books, software products, creative developments)&lt;/li&gt;
&lt;li&gt;Creating a mobile version of the online store (for smartphones).&lt;/li&gt;
&lt;li&gt;Useful microservices for wesbite which may boost sales growth.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Follow me for more articles:&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/vosidiy" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/vosidiy&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dribbble.com/vosidiy" rel="noopener noreferrer"&gt;https://dribbble.com/vosidiy&lt;/a&gt;&lt;br&gt;
&lt;a href="https://behance.net/vosidiy" rel="noopener noreferrer"&gt;https://behance.net/vosidiy&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ecommerce</category>
      <category>shop</category>
      <category>website</category>
    </item>
  </channel>
</rss>
