Electronics/Gadget Store Home Page Design

  • No Paid Theme Needed
  • Built on Shopify
  • Free Theme
  • Cusing Custom Sections

  • No Bulky Libraries Used
  • 3-Days Return Policy
  • Easy to use

Product Description

Complete Gadget Homepage Template (Import Ready)

Instead of manually installing multiple sections, adjusting layouts, and fixing spacing issues — import the complete homepage template and get the exact structure, design flow, and styling instantly.

Step 1 : Header

1. Make Header Transparent
header.liquid
{% if section.settings.enable_transparent-header and template == 'index' %}
    .header-wrapper{
    position: absolute;
	  width: 100%;
    background: transparent;
    top: 0px;
    background: linear-gradient(to bottom, rgb(0 0 0), rgb(0 0 0 / 0%));
    }
    .scrolled-past-header sticky-header{
    background: var(--gradient-background) !important;
    /* color: rgba(var(--color-foreground), 0.75); */
    }
{%- endif -%}
header.liquid
{
      "type": "checkbox",
      "id": "enable_transparent-header",
      "label": "Enable Transparent Header",
      "default": false
      },
2. Menu Styling
base.css
/* Change Menu Styling */
.header__inline-menu ul li span{
    font-size: 14px;
    font-style: normal;
    font-weight: 700;
    letter-spacing: -.56px;
    line-height: normal;
}
base.css
/* Center Align Header Menu */

@media screen and (min-width: 750px) {
     header{
           display: flex!important;
    justify-content: space-between!important;
      }
}
3. Change Cart Icon
icon-cart.svg & icon-cart-empty.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 24" class="icon icon-cart-empty" width="20" height="20" fill="none">
  <path d="M6.32373 6.75317H20.0286C20.5901 6.75317 21.1254 6.99071 21.5023 7.40707C21.8791 7.8235 22.0622 8.37983 22.0063 8.9386L21.41 14.9016C21.3084 15.9176 20.4534 16.6914 19.4323 16.6914H9.94126C8.9934 16.6918 8.17716 16.0228 7.99137 15.0934L6.32373 6.75317Z" stroke="currentColor" stroke-width="1" stroke-linejoin="round"></path>
  <path d="M6.32364 6.75314L5.51865 3.53016C5.40787 3.08797 5.01048 2.77784 4.55463 2.77783H3.34216M9.30513 20.6667H11.2928M17.2557 20.6667H19.2434" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
4. Cart Icon Styling
base.css
.header_icon, .header_icon--cart .icon {
    height: 2.7rem;
    width: 4.4rem;
    padding: 0;
}

Step 2: Image Menu / Mega Menu Images

1. Mega Menu Collection Image Type Settings
header.liquid
{
  "type": "select",
  "id": "mega_menu_images_toggle",
  "options": [
    {
      "value": "none",
      "label": "None"
    },
    {
      "value": "featured",
      "label": "Featured"
    },
    {
      "value": "metafield",
      "label": "Metafield"
    }
  ],
  "default": "none",
  "label": "Mega menu collection image type"
},
{
  "type": "checkbox",
  "id": "mega_menu_images_title",
  "label": "Hide the collection title (when mega menu images is active)",
  "default": false
},
{
  "type": "checkbox",
  "id": "megamenu_backdrop_toggle",
  "label": "Add a backdrop to darken rest of page when megamenu is open",
  "default": true
},
2. Mega Menu Image Custom - Snippet
megamenu-image-custom.liquid
<ul class="mega-menu__list megamenu-with-image page-width">
  {%- for childlink in link.links -%}
    {% assign image_url = '' %}

    {% if menu_images_toggle == 'featured' %}
      {% if childlink.object.featured_image %}
        {% assign image_url = childlink.object.featured_image | img_url: 'master' %}
      {% endif %}
    {% elsif menu_images_toggle == 'metafield' %}
      {% assign image_url = childlink.object.metafields.custom.header_menu_image | img_url: 'master' %}
    {% endif %}
    
    <li>
      <div class="mega-menu__column">
        {% if image_url != blank %}
          <a href="{{ childlink.url }}">
            <img src="{{ image_url }}" alt="{{ childlink.title | escape }}" class="mega-menu__image">
          </a>
        {% endif %}
        <a id="HeaderMenu-{{ link.handle }}-{{ childlink.handle }}" href="{{ childlink.url }}" class="mega-menu__link mega-menu__link--level-2 link{% if childlink.current %} mega-menu__link--active{% endif %} {% if menu_titles_toggle %}hide-title{% endif %}" {% if childlink.current %} aria-current="page" {% endif %}>
          {{ childlink.title | escape }}
        </a>
      </div>
    </li>
  {%- endfor -%}
</ul>

<style>

  .mega-menu__image {
    width: 100%;
    border-radius: 10px; /* Adjust the radius value as needed (ex: 10px for rounded corners, 0px for square corners, 50% makes the image a circle) */
    object-fit: cover; 
    aspect-ratio: 1 / 1;
  }

  .mega-menu__column {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      text-align: center;
  }

  .mega-menu__column img{
    padding: 10px;
    background-color: #e0e0e0;
    border-radius: 100px;
    border: 1px solid #c8c8c8;
  }

  .mega-menu__link--level-2 {
    font-weight: 700;
    letter-spacing: -.56px;
    line-height: normal;
}
  
.mega-menu__list.megamenu-with-image {
  justify-content: center;
  grid-template-columns: repeat(auto-fit, minmax(calc((100% - (5 * 4rem)) / 6), calc((100% - (5 * 4rem)) / 6)));
}

.mega-menu__link.hide-title {
  display: none; 
}

.menu-backdrop {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.5); 
  z-index: 3; 
}

</style>

{% if megamenu_backdrop_toggle %}

  <style>
  #menu-backdrop {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0,0,0,0.5);
    z-index: 3;
  }
  </style>
  
  <script>
  document.addEventListener('DOMContentLoaded', function () {
    const menuBackdrop = document.getElementById('menu-backdrop');
    document.querySelectorAll('.mega-menu').forEach(function(megaMenu) {
      megaMenu.addEventListener('toggle', function () {
        const isAnyMenuOpen = [...document.querySelectorAll('.mega-menu')].some(menu => menu.hasAttribute('open'));
        menuBackdrop.style.display = isAnyMenuOpen ? 'block' : 'none';
      });
    });
    menuBackdrop.addEventListener('click', function () {
      document.querySelectorAll('.mega-menu').forEach(function(megaMenu) {
        megaMenu.removeAttribute('open');
      });
      menuBackdrop.style.display = 'none';
    });
  });
  
  </script>

{% endif %}
3. Rendering Mega Menu Image Custom Snippet
header-mega-menu.liquid
{% if section.settings.menu_type_desktop == 'mega' and section.settings.mega_menu_images_toggle != 'none' %}
	{% render 'megamenu-image-custom', 
	    link:link,
	    menu_images_toggle: section.settings.mega_menu_images_toggle,
	    menu_titles_toggle: section.settings.mega_menu_images_title,
	    megamenu_backdrop_toggle: section.settings.megamenu_backdrop_toggle
	  %}
{% else %}

//.... existing code.....//

{% endif %}
theme.liquid
<div id="menu-backdrop"></div>

Step 3 : Responsive Slideshow

slideshow.liquid
{{ 'section-image-banner.css' | asset_url | stylesheet_tag }}
{{ 'component-slider.css' | asset_url | stylesheet_tag }}
{{ 'component-slideshow.css' | asset_url | stylesheet_tag }}
{%- style -%}
  {%- if section.settings.controls_over_slider -%}
    .slideshow__controls {
      position: absolute;
      bottom: 20px;
      left: 50%;
      transform: translateX(-50%);
      z-index: 1;
      border:none;
    }

    .slideshow .banner__content{
      display:none!important;
    }
    
    .slideshow__controls--overlay {
      bottom: 0px;
    }

    .slideshow__autoplay{
      display: none!important;
    }

    .slider-counter__link--active.slider-counter__link--dots .dot {
    background-color: white!important;
    }
    
    .slideshow__controls .slider-button {
    color: #bebebe;
    }
    .slider-counter__link--dots .dot {
        background: #bebebe;
    }
  {%- endif -%}

  .banner__media {
    height: auto;
    position: relative;
  }
  
{%- endstyle -%}

{%- style -%}
    @media screen and (max-width: 749px) {
      {%- if section.settings.slide_height == 'adapt_image' and section.blocks.first.settings.image-mob != blank -%}
      /* Removed ::before pseudo-elements that were creating extra spacing */
      {%- endif -%}
      .desk{
        display:none;
      }
    }

    @media screen and (min-width: 750px) {
      {%- if section.settings.slide_height == 'adapt_image' and section.blocks.first.settings.image != blank -%}
      /* Removed ::before pseudo-elements that were creating extra spacing */
      {%- endif -%}

      .mob{
        display:none;
      }
    }
{%- endstyle -%}

<slideshow-component
  class="slider-mobile-gutter{% if section.settings.layout == 'grid' %} page-width{% endif %}"
  role="region"
  aria-roledescription="{{ 'sections.slideshow.carousel' | t }}"
  aria-label="{{ section.settings.accessibility_info | escape }}"
>
  {%- if section.settings.auto_rotate and section.blocks.size > 1 -%}
    <div class="slideshow__controls slideshow__controls--top slider-buttons {% if section.settings.controls_over_slider %} slideshow__controls--overlay{% endif %}">
      <button
        type="button"
        class="slider-button slider-button--prev"
        name="previous"
        aria-label="{{ 'sections.slideshow.previous_slideshow' | t }}"
        aria-controls="Slider-{{ section.id }}"
      >
       {{- 'icon-caret.svg' | inline_asset_content -}}
      </button>
      <div class="slider-counter slider-counter--{{ section.settings.slider_visual }}{% if section.settings.slider_visual == 'counter' or section.settings.slider_visual == 'numbers' %} caption{% endif %}">
        {%- if section.settings.slider_visual == 'counter' -%}
          <span class="slider-counter--current">1</span>
          <span aria-hidden="true"> / </span>
          <span class="visually-hidden">{{ 'general.slider.of' | t }}</span>
          <span class="slider-counter--total">{{ section.blocks.size }}</span>
        {%- else -%}
          <div class="slideshow__control-wrapper">
            {%- for block in section.blocks -%}
              <button
                class="slider-counter__link slider-counter__link--{{ section.settings.slider_visual }} link"
                aria-label="{{ 'sections.slideshow.load_slide' | t }} {{ forloop.index }} {{ 'general.slider.of' | t }} {{ forloop.length }}"
                aria-controls="Slider-{{ section.id }}"
              >
                {%- if section.settings.slider_visual == 'numbers' -%}
                  {{ forloop.index -}}
                {%- else -%}
                  <span class="dot"></span>
                {%- endif -%}
              </button>
            {%- endfor -%}
          </div>
        {%- endif -%}
      </div>
      <button
        type="button"
        class="slider-button slider-button--next"
        name="next"
        aria-label="{{ 'sections.slideshow.next_slideshow' | t }}"
        aria-controls="Slider-{{ section.id }}"
      >
        {{- 'icon-caret.svg' | inline_asset_content -}}
      </button>

      {%- if section.settings.auto_rotate -%}
        <button
          type="button"
          class="slideshow__autoplay slider-button{% if section.settings.auto_rotate == false %} slideshow__autoplay--paused{% endif %}"
          aria-label="{{ 'sections.slideshow.pause_slideshow' | t }}"
        >
          {{- 'icon-pause.svg' | inline_asset_content -}}
          {{- 'icon-play.svg' | inline_asset_content -}}
        </button>
      {%- endif -%}
    </div>
  {%- endif -%}

  <div
    class="slideshow banner banner--{{ section.settings.slide_height }} grid grid--1-col slider slider--everywhere{% if section.blocks.first.settings.image == blank %} slideshow--placeholder{% endif %}{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--fade-in{% endif %}"
    id="Slider-{{ section.id }}"
    aria-live="polite"
    aria-atomic="true"
    data-autoplay="{{ section.settings.auto_rotate }}"
    data-speed="{{ section.settings.change_slides_speed }}"
  >
    {%- for block in section.blocks -%}
      <style>
        #Slide-{{ section.id }}-{{ forloop.index }} .banner__media::after {
          opacity: {{ block.settings.image_overlay_opacity | divided_by: 100.0 }};
        }
      </style>
      <div
        class="slideshow__slide grid__item grid--1-col slider__slide"
        id="Slide-{{ section.id }}-{{ forloop.index }}"
        {{ block.shopify_attributes }}
        role="group"
        aria-roledescription="{{ 'sections.slideshow.slide' | t }}"
        aria-label="{{ forloop.index }} {{ 'general.slider.of' | t }} {{ forloop.length }}"
        tabindex="-1"
      >
        <div class="slideshow__media banner__media media desk {% if block.settings.image == blank %} placeholder{% endif %}{% if section.settings.image_behavior != 'none' %} animate--{{ section.settings.image_behavior }}{% endif %}">
          {%- if block.settings.image -%}
            {%- liquid
              assign height = block.settings.image.width | divided_by: block.settings.image.aspect_ratio | round
              if section.settings.image_behavior == 'ambient'
                assign sizes = '120vw'
                assign widths = '450, 660, 900, 1320, 1800, 2136, 2400, 3600, 7680'
              else
                assign sizes = '100vw'
                assign widths = '375, 550, 750, 1100, 1500, 1780, 2000, 3000, 3840'
              endif
              assign fetch_priority = 'auto'
              if section.index == 1
                assign fetch_priority = 'high'
              endif
            -%}
            {%- if forloop.first %}
              {{
                block.settings.image
                | image_url: width: 3840
                | image_tag: height: height, sizes: sizes, widths: widths, fetchpriority: fetch_priority
              }}
            {%- else -%}
              {{
                block.settings.image
                | image_url: width: 3840
                | image_tag: loading: 'lazy', height: height, sizes: sizes, widths: widths
              }}
            {%- endif -%}
          {%- else -%}
            {%- assign placeholder_slide = forloop.index | modulo: 2 -%}
            {%- if placeholder_slide == 1 -%}
              {{ 'hero-apparel-2' | placeholder_svg_tag: 'placeholder-svg' }}
            {%- else -%}
              {{ 'hero-apparel-1' | placeholder_svg_tag: 'placeholder-svg' }}
            {%- endif -%}
          {%- endif -%}
        </div>

        <a href="{{ block.settings.image_link }}" style="display: block;position: absolute;width: 100%;height: 100%;left: 0;top: 0;z-index: 999;"></a>

        <div class="slideshow__media banner__media media mob {% if block.settings.image-mob == blank %} placeholder{% endif %}{% if section.settings.image_behavior != 'none' %} animate--{{ section.settings.image_behavior }}{% endif %}">
          {%- if block.settings.image-mob -%}
            {%- liquid
              assign height = block.settings.image.width | divided_by: block.settings.image-mob.aspect_ratio | round
              if section.settings.image_behavior == 'ambient'
                assign sizes = '120vw'
                assign widths = '450, 660, 900, 1320, 1800, 2136, 2400, 3600, 7680'
              else
                assign sizes = '100vw'
                assign widths = '375, 550, 750, 1100, 1500, 1780, 2000, 3000, 3840'
              endif
            -%}
            {{
              block.settings.image-mob
              | image_url: width: 3840
              | image_tag: loading: 'lazy', height: height, sizes: sizes, widths: widths
            }}
          {%- else -%}
            {%- assign placeholder_slide = forloop.index | modulo: 2 -%}
            {%- if placeholder_slide == 1 -%}
              {{ 'hero-apparel-2' | placeholder_svg_tag: 'placeholder-svg' }}
            {%- else -%}
              {{ 'hero-apparel-1' | placeholder_svg_tag: 'placeholder-svg' }}
            {%- endif -%}
          {%- endif -%}
        </div>
        
        <div class="slideshow__text-wrapper banner__content banner__content--{{ block.settings.box_align }} page-width{% if block.settings.show_text_box == false %} banner--desktop-transparent{% endif %}{% if settings.animations_reveal_on_scroll and forloop.index == 1 %} scroll-trigger animate--slide-in{% endif %}">
          <div class="slideshow__text banner__box content-container content-container--full-width-mobile color-{{ block.settings.color_scheme }} gradient slideshow__text--{{ block.settings.text_alignment }} slideshow__text-mobile--{{ block.settings.text_alignment_mobile }}">
            {%- if block.settings.heading != blank -%}
              <h2 class="banner__heading inline-richtext {{ block.settings.heading_size }}">
                {{ block.settings.heading }}
              </h2>
            {%- endif -%}
            {%- if block.settings.subheading != blank -%}
              <div class="banner__text rte" {{ block.shopify_attributes }}>
                <p>{{ block.settings.subheading }}</p>
              </div>
            {%- endif -%}
            {%- if block.settings.button_label != blank -%}
              <div class="banner__buttons">
                <a
                  {% if block.settings.link %}
                    href="{{ block.settings.link }}"
                  {% else %}
                    role="link" aria-disabled="true"
                  {% endif %}
                  class="button {% if block.settings.button_style_secondary %}button--secondary{% else %}button--primary{% endif %}"
                >
                  {{- block.settings.button_label | escape -}}
                </a>
              </div>
            {%- endif -%}
          </div>
        </div>
      </div>
    {%- endfor -%}
  </div>

  {%- if section.blocks.size > 1 and section.settings.auto_rotate == false -%}
    <div class="slideshow__controls slider-buttons">
      <button
        type="button"
        class="slider-button slider-button--prev"
        name="previous"
        aria-label="{{ 'sections.slideshow.previous_slideshow' | t }}"
        aria-controls="Slider-{{ section.id }}"
      >
        {{- 'icon-caret.svg' | inline_asset_content -}}
      </button>
      <div class="slider-counter slider-counter--{{ section.settings.slider_visual }}{% if section.settings.slider_visual == 'counter' or section.settings.slider_visual == 'numbers' %} caption{% endif %}">
        {%- if section.settings.slider_visual == 'counter' -%}
          <span class="slider-counter--current">1</span>
          <span aria-hidden="true"> / </span>
          <span class="visually-hidden">{{ 'general.slider.of' | t }}</span>
          <span class="slider-counter--total">{{ section.blocks.size }}</span>
        {%- else -%}
          <div class="slideshow__control-wrapper">
            {%- for block in section.blocks -%}
              <button
                class="slider-counter__link slider-counter__link--{{ section.settings.slider_visual }} link"
                aria-label="{{ 'sections.slideshow.load_slide' | t }} {{ forloop.index }} {{ 'general.slider.of' | t }} {{ forloop.length }}"
                aria-controls="Slider-{{ section.id }}"
              >
                {%- if section.settings.slider_visual == 'numbers' -%}
                  {{ forloop.index -}}
                {%- else -%}
                  <span class="dot"></span>
                {%- endif -%}
              </button>
            {%- endfor -%}
          </div>
        {%- endif -%}
      </div>
      <button
        type="button"
        class="slider-button slider-button--next"
        name="next"
        aria-label="{{ 'sections.slideshow.next_slideshow' | t }}"
        aria-controls="Slider-{{ section.id }}"
      >
        {{- 'icon-caret.svg' | inline_asset_content -}}
      </button>

      {%- if section.settings.auto_rotate -%}
        <button
          type="button"
          class="slideshow__autoplay slider-button{% if section.settings.auto_rotate == false %} slideshow__autoplay--paused{% endif %}"
          aria-label="{{ 'sections.slideshow.pause_slideshow' | t }}"
        >
          {{- 'icon-pause.svg' | inline_asset_content -}}
          {{- 'icon-play.svg' | inline_asset_content -}}
        </button>
      {%- endif -%}
    </div>
  {%- endif -%}
</slideshow-component>

{%- if request.design_mode -%}
  <script src="{{ 'theme-editor.js' | asset_url }}" defer="defer"></script>
{%- endif -%}

<style>
/* Updated adaptive image styles to eliminate unnecessary spacing */
.banner--adapt_image {
  height: auto !important;
  min-height: unset !important;
  overflow: hidden;
  margin: 0 !important;
  padding: 0 !important;
}

.banner--adapt_image .banner__media {
  height: auto !important;
  padding-bottom: 0 !important;
  position: relative;
  width: 100%;
  max-width: 100%;
  margin: 0 !important;
  padding: 0 !important;
}

.banner--adapt_image .banner__media img {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  width: 100% !important;
  height: auto !important;
  max-width: 100% !important;
  object-fit: cover !important;
  transform: none !important;
  display: block;
  margin: 0 !important;
  padding: 0 !important;
}

.banner--adapt_image .banner__content {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 2;
  max-width: calc(100% - 2rem);
}

/* Ensure no extra spacing from the section wrapper */
.section .banner--adapt_image {
  max-width: 100vw;
  overflow-x: hidden;
  margin: 0 !important;
  padding: 0 !important;
}

/* Remove any default spacing from slideshow component */
.slideshow.banner--adapt_image {
  margin: 0 !important;
  padding: 0 !important;
}

.slideshow.banner--adapt_image .slideshow__slide {
  margin: 0 !important;
  padding: 0 !important;
}

/* Desktop specific fixes */
@media screen and (min-width: 750px) {
  .banner--adapt_image {
    max-width: 100%;
    overflow: hidden;
    margin: 0 !important;
    padding: 0 !important;
  }
  
  .banner--adapt_image .banner__media {
    max-width: 100%;
    margin: 0 !important;
    padding: 0 !important;
  }
}

/* Mobile responsive display controls */
@media screen and (max-width: 749px) {
  .desk {
    display: none !important;
  }
  .mob {
    display: block !important;
  }
}

@media screen and (min-width: 750px) {
  .mob {
    display: none !important;
  }
  .desk {
    display: block !important;
  }
}
</style>

{% schema %}
{
  "name": "t:sections.slideshow.name",
  "tag": "section",
  "class": "section",
  "disabled_on": {
    "groups": ["header", "footer"]
  },
  "settings": [
    {
      "type": "select",
      "id": "layout",
      "options": [
        {
          "value": "full_bleed",
          "label": "t:sections.slideshow.settings.layout.options__1.label"
        },
        {
          "value": "grid",
          "label": "t:sections.slideshow.settings.layout.options__2.label"
        }
      ],
      "default": "full_bleed",
      "label": "t:sections.slideshow.settings.layout.label"
    },
    {
      "type": "select",
      "id": "slide_height",
      "options": [
        {
          "value": "adapt_image",
          "label": "t:sections.slideshow.settings.slide_height.options__1.label"
        },
        {
          "value": "small",
          "label": "t:sections.slideshow.settings.slide_height.options__2.label"
        },
        {
          "value": "medium",
          "label": "t:sections.slideshow.settings.slide_height.options__3.label"
        },
        {
          "value": "large",
          "label": "t:sections.slideshow.settings.slide_height.options__4.label"
        }
      ],
      "default": "medium",
      "label": "t:sections.slideshow.settings.slide_height.label"
    },
    {
      "type": "select",
      "id": "slider_visual",
      "options": [
        {
          "value": "dots",
          "label": "t:sections.slideshow.settings.slider_visual.options__2.label"
        },
        {
          "value": "counter",
          "label": "t:sections.slideshow.settings.slider_visual.options__1.label"
        },
        {
          "value": "numbers",
          "label": "t:sections.slideshow.settings.slider_visual.options__3.label"
        }
      ],
      "default": "counter",
      "label": "t:sections.slideshow.settings.slider_visual.label"
    },
    {
      "type": "checkbox",
      "id": "controls_over_slider",
      "label": "Show Controls Over Slider",
      "default": true
    },
    {
      "type": "checkbox",
      "id": "auto_rotate",
      "label": "t:sections.slideshow.settings.auto_rotate.label",
      "default": false
    },
    {
      "type": "range",
      "id": "change_slides_speed",
      "min": 3,
      "max": 9,
      "step": 2,
      "unit": "s",
      "label": "t:sections.slideshow.settings.change_slides_speed.label",
      "default": 5
    }
  ],
  "blocks": [
    {
      "type": "slide",
      "name": "t:sections.slideshow.blocks.slide.name",
      "limit": 5,
      "settings": [
        {
          "type": "image_picker",
          "id": "image",
          "label": "t:sections.slideshow.blocks.slide.settings.image.label"
        },
        {
          "type": "image_picker",
          "id": "image-mob",
          "label": "Mobile Image"
        },
        {
          "type": "url",
          "id": "image_link",
          "label": "Image Link"
        },
        {
          "type": "inline_richtext",
          "id": "heading",
          "default": "Image slide",
          "label": "t:sections.slideshow.blocks.slide.settings.heading.label"
        },
        {
          "type": "select",
          "id": "heading_size",
          "options": [
            {
              "value": "h2",
              "label": "t:sections.all.heading_size.options__1.label"
            },
            {
              "value": "h1",
              "label": "t:sections.all.heading_size.options__2.label"
            },
            {
              "value": "h0",
              "label": "t:sections.all.heading_size.options__3.label"
            }
          ],
          "default": "h1",
          "label": "t:sections.all.heading_size.label"
        },
        {
          "type": "inline_richtext",
          "id": "subheading",
          "default": "Tell your brand's story through images",
          "label": "t:sections.slideshow.blocks.slide.settings.subheading.label"
        },
        {
          "type": "text",
          "id": "button_label",
          "default": "Button label",
          "label": "t:sections.slideshow.blocks.slide.settings.button_label.label",
          "info": "t:sections.slideshow.blocks.slide.settings.button_label.info"
        },
        {
          "type": "url",
          "id": "link",
          "label": "t:sections.slideshow.blocks.slide.settings.link.label"
        },
        {
          "type": "checkbox",
          "id": "button_style_secondary",
          "label": "t:sections.slideshow.blocks.slide.settings.secondary_style.label",
          "default": false
        },
        {
          "type": "select",
          "id": "box_align",
          "options": [
            {
              "value": "top-left",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__1.label"
            },
            {
              "value": "top-center",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__2.label"
            },
            {
              "value": "top-right",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__3.label"
            },
            {
              "value": "middle-left",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__4.label"
            },
            {
              "value": "middle-center",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__5.label"
            },
            {
              "value": "middle-right",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__6.label"
            },
            {
              "value": "bottom-left",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__7.label"
            },
            {
              "value": "bottom-center",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__8.label"
            },
            {
              "value": "bottom-right",
              "label": "t:sections.slideshow.blocks.slide.settings.box_align.options__9.label"
            }
          ],
          "default": "middle-center",
          "label": "t:sections.slideshow.blocks.slide.settings.box_align.label",
          "info": "t:sections.slideshow.blocks.slide.settings.box_align.info"
        },
        {
          "type": "checkbox",
          "id": "show_text_box",
          "label": "t:sections.slideshow.blocks.slide.settings.show_text_box.label",
          "default": true
        },
        {
          "type": "select",
          "id": "text_alignment",
          "options": [
            {
              "value": "left",
              "label": "t:sections.slideshow.blocks.slide.settings.text_alignment.option_1.label"
            },
            {
              "value": "center",
              "label": "t:sections.slideshow.blocks.slide.settings.text_alignment.option_2.label"
            },
            {
              "value": "right",
              "label": "t:sections.slideshow.blocks.slide.settings.text_alignment.option_3.label"
            }
          ],
          "default": "center",
          "label": "t:sections.slideshow.blocks.slide.settings.text_alignment.label"
        },
        {
          "type": "range",
          "id": "image_overlay_opacity",
          "min": 0,
          "max": 100,
          "step": 10,
          "unit": "%",
          "label": "t:sections.slideshow.blocks.slide.settings.image_overlay_opacity.label",
          "default": 0
        },
        {
          "type": "color_scheme",
          "id": "color_scheme",
          "label": "t:sections.all.colors.label",
          "default": "scheme-1"
        },
        {
          "type": "header",
          "content": "t:sections.slideshow.settings.mobile.content"
        },
        {
          "type": "select",
          "id": "text_alignment_mobile",
          "options": [
            {
              "value": "left",
              "label": "t:sections.slideshow.blocks.slide.settings.text_alignment_mobile.options__1.label"
            },
            {
              "value": "center",
              "label": "t:sections.slideshow.blocks.slide.settings.text_alignment_mobile.options__2.label"
            },
            {
              "value": "right",
              "label": "t:sections.slideshow.blocks.slide.settings.text_alignment_mobile.options__3.label"
            }
          ],
          "default": "center",
          "label": "t:sections.slideshow.blocks.slide.settings.text_alignment_mobile.label"
        }
      ]
    }
  ],
  "presets": [
    {
      "name": "t:sections.slideshow.presets.name",
      "blocks": [
        {
          "type": "slide"
        },
        {
          "type": "slide"
        }
      ]
    }
  ]
}
{% endschema %}

Step 4 : Collection Grid

Step 5 : Tabbed Collection

Step 6 : Responsive Image Banner

cds_image_banner.liquid
{{ 'section-image-banner.css' | asset_url | stylesheet_tag }}

{%- liquid
  assign desktop_image = section.settings.image
  assign mobile_image = section.settings.image_2
  assign desktop_height = section.settings.desktop_image_height
  assign mobile_height = section.settings.mobile_image_height

  assign desktop_sizes = '100vw'
  assign mobile_sizes = '100vw'
  assign desktop_widths = '375, 550, 750, 1100, 1500, 1780, 2000, 3000, 3840'
  assign mobile_widths = '375, 550, 750, 1100'

  if section.settings.image_behavior == 'ambient'
    assign desktop_sizes = '120vw'
    assign mobile_sizes = '120vw'
    assign desktop_widths = '450, 660, 900, 1320, 1800, 2136, 2400, 3600, 7680'
    assign mobile_widths = '450, 660, 900, 1320'
  elsif section.settings.image_behavior == 'fixed' or section.settings.image_behavior == 'zoom-in'
    assign desktop_sizes = '100vw'
    assign mobile_sizes = '100vw'
  endif

  assign fetch_priority = 'auto'
  if section.index == 1
    assign fetch_priority = 'high'
  endif
-%}

<div class="banner__desktop">
  <div 
    id="Banner-{{ section.id }}" 
    class="banner banner--content-align-{{ section.settings.desktop_content_alignment }} banner--{{ desktop_height }}{% if settings.animations_reveal_on_scroll %}{% if section.settings.show_text_below %} banner--mobile-bottom{% endif %}{% if section.settings.show_text_box == false %} banner--desktop-transparent{% endif %} scroll-trigger animate--fade-in{% endif %}"
  >
    {%- if desktop_image != blank -%}
      {%- if section.settings.image_link != blank -%}
        <a href="{{ section.settings.image_link }}" class="banner__link">
      {%- endif -%}
      <div class="banner__media media{% if section.settings.image_behavior != 'none' %} animate--{{ section.settings.image_behavior }}{% endif %}{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--fade-in{% endif %}">
        {%- liquid
          assign image_height_desktop = desktop_image.width | divided_by: desktop_image.aspect_ratio
        -%}
        {{
          desktop_image
          | image_url: width: 3840
          | image_tag:
            width: desktop_image.width,
            height: image_height_desktop,
            class: '',
            sizes: desktop_sizes,
            widths: desktop_widths,
            fetchpriority: fetch_priority
        }}
      </div>
      {%- if section.settings.image_link != blank -%}
        </a>
      {%- endif -%} 
    {%- else -%}
      <div class="banner__media media placeholder{% if section.settings.image_behavior != 'none' %} animate--{{ section.settings.image_behavior }}{% endif %}{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--fade-in{% endif %}">
        {{ 'hero-apparel-1' | placeholder_svg_tag: 'placeholder-svg' }}
      </div>
    {%- endif -%}
  
    <div class="banner__content banner__content--{{ section.settings.desktop_content_position }} page-width{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--slide-in{% endif %}">
      <div class="banner__box content-container content-container--full-width-mobile color-{{ section.settings.color_scheme }} gradient">
        {%- if section.settings.image_link == blank -%}
          {%- for block in section.blocks -%}
            {%- case block.type -%}
              {%- when 'heading' -%}
                <h2 class="banner__heading inline-richtext {{ block.settings.heading_size }}" {{ block.shopify_attributes }}>
                  {{ block.settings.heading }}
                </h2>
              {%- when 'text' -%}
                <div class="banner__text rte {{ block.settings.text_style }}" {{ block.shopify_attributes }}>
                  <p>{{ block.settings.text }}</p>
                </div>
              {%- when 'buttons' -%}
                <div class="banner__buttons{% if block.settings.button_label_1 != blank and block.settings.button_label_2 != blank %} banner__buttons--multiple{% endif %}" {{ block.shopify_attributes }}>
                  {%- if block.settings.button_label_1 != blank -%}
                    <a {% if block.settings.button_link_1 == blank %}role="link" aria-disabled="true"{% else %}href="{{ block.settings.button_link_1 }}"{% endif %} class="button{% if block.settings.button_style_secondary_1 %} button--secondary{% else %} button--primary{% endif %}">
                      {{- block.settings.button_label_1 | escape -}}
                    </a>
                  {%- endif -%}
                  {%- if block.settings.button_label_2 != blank -%}
                    <a {% if block.settings.button_link_2 == blank %}role="link" aria-disabled="true"{% else %}href="{{ block.settings.button_link_2 }}"{% endif %} class="button{% if block.settings.button_style_secondary_2 %} button--secondary{% else %} button--primary{% endif %}">
                      {{- block.settings.button_label_2 | escape -}}
                    </a>
                  {%- endif -%}
                </div>
            {%- endcase -%}
          {%- endfor -%}
        {%- endif -%}
      </div>
    </div>
    
  </div>
</div>

<div class="banner__mobile">
  <div 
    id="Banner-{{ section.id }}" 
    class="banner banner--content-align-mobile-{{ section.settings.mobile_content_alignment }} banner--{{ mobile_height }}{% if settings.animations_reveal_on_scroll %}{% if section.settings.show_text_below and section.settings.image_link == blank %} banner--mobile-bottom{% endif %}{% if section.settings.show_text_box == false %} banner--desktop-transparent{% endif %} scroll-trigger animate--fade-in{% endif %}"
  >
    {%- if mobile_image != blank -%}
      <div class="banner__media media{% if section.settings.image_behavior != 'none' %} animate--{{ section.settings.image_behavior }}{% endif %}{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--fade-in{% endif %}">
        {%- liquid
          assign image_height_mobile = mobile_image.width | divided_by: mobile_image.aspect_ratio
        -%}
        {{
          mobile_image
          | image_url: width: 1100
          | image_tag:
            width: mobile_image.width,
            height: image_height_mobile,
            class: '',
            sizes: mobile_sizes,
            widths: mobile_widths,
            fetchpriority: fetch_priority
        }}
      </div>
    {%- else -%}
      <div class="banner__media media placeholder{% if section.settings.image_behavior != 'none' %} animate--{{ section.settings.image_behavior }}{% endif %}{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--fade-in{% endif %}">
        {{ 'hero-apparel-1' | placeholder_svg_tag: 'placeholder-svg' }}
      </div>
    {%- endif -%}

    {%- if section.settings.image_link != blank -%}
      <a href="{{ section.settings.image_link }}" class="banner__content banner__content--{{ section.settings.desktop_content_position }} page-width{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--slide-in{% endif %}">
    {%- else -%}
      <div class="banner__content banner__content--{{ section.settings.desktop_content_position }} page-width{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--slide-in{% endif %}">
    {%- endif -%}
      <div class="banner__box content-container content-container--full-width-mobile color-{{ section.settings.color_scheme }} gradient">
        {%- if section.settings.image_link == blank -%}
          {%- for block in section.blocks -%}
            {%- case block.type -%}
              {%- when 'heading' -%}
                <h2 class="banner__heading inline-richtext {{ block.settings.heading_size }}" {{ block.shopify_attributes }}>
                  {{ block.settings.heading }}
                </h2>
              {%- when 'text' -%}
                <div class="banner__text rte {{ block.settings.text_style }}" {{ block.shopify_attributes }}>
                  <p>{{ block.settings.text }}</p>
                </div>
              {%- when 'buttons' -%}
                <div class="banner__buttons{% if block.settings.button_label_1 != blank and block.settings.button_label_2 != blank %} banner__buttons--multiple{% endif %}" {{ block.shopify_attributes }}>
                  {%- if block.settings.button_label_1 != blank -%}
                    <a {% if block.settings.button_link_1 == blank %}role="link" aria-disabled="true"{% else %}href="{{ block.settings.button_link_1 }}"{% endif %} class="button{% if block.settings.button_style_secondary_1 %} button--secondary{% else %} button--primary{% endif %}">
                      {{- block.settings.button_label_1 | escape -}}
                    </a>
                  {%- endif -%}
                  {%- if block.settings.button_label_2 != blank -%}
                    <a {% if block.settings.button_link_2 == blank %}role="link" aria-disabled="true"{% else %}href="{{ block.settings.button_link_2 }}"{% endif %} class="button{% if block.settings.button_style_secondary_2 %} button--secondary{% else %} button--primary{% endif %}">
                      {{- block.settings.button_label_2 | escape -}}
                    </a>
                  {%- endif -%}
                </div>
            {%- endcase -%}
          {%- endfor -%}
        {%- endif -%}
      </div>
    {%- if section.settings.image_link != blank -%}
      </a>
    {%- else -%}
      </div>
    {%- endif -%}
        
  </div>
</div>

<style>
  @media screen and (max-width: 749px) {
  
      .banner__desktop {
          display: none !important;
      }
      .banner__mobile {
          display: block !important;
      }
  }
  @media screen and (min-width: 750px) {
  
      .banner__mobile {
          display: none !important;
      }
      .banner__desktop {
          display: block !important;
      }
  }
  .banner__link {
      display: block;
      z-index: 3; 
  }
</style>
    
{% schema %}
  {
    "name": "Image Banner Custom",
    "tag": "section",
    "class": "section",
    "disabled_on": {
      "groups": ["header", "footer"]
    },
    "settings": [
      {
        "type": "image_picker",
        "id": "image",
        "label": "Desktop image"
      },
      {
        "type": "image_picker",
        "id": "image_2",
        "label": "Mobile image"
      },
      {
        "type": "range",
        "id": "image_overlay_opacity",
        "min": 0,
        "max": 100,
        "step": 10,
        "unit": "%",
        "label": "t:sections.image-banner.settings.image_overlay_opacity.label",
        "default": 0
      },
      {
        "type": "color_scheme",
        "id": "color_scheme",
        "label": "t:sections.all.colors.label",
        "default": "scheme-1"
      },
      {
        "type": "url",
        "id": "image_link",
        "label": "Link URL",
        "info": "Add a link to make the images clickable. Cannot be used with banner content."
      },
      {
        "type": "header",
        "content": "t:sections.all.animation.content"
      },
      {
        "type": "select",
        "id": "image_behavior",
        "options": [
          {
            "value": "none",
            "label": "t:sections.all.animation.image_behavior.options__1.label"
          },
          {
            "value": "ambient",
            "label": "t:sections.all.animation.image_behavior.options__2.label"
          },
          {
            "value": "fixed",
            "label": "t:sections.all.animation.image_behavior.options__3.label"
          },
          {
            "value": "zoom-in",
            "label": "t:sections.all.animation.image_behavior.options__4.label"
          }
        ],
        "default": "none",
        "label": "t:sections.all.animation.image_behavior.label"
      },
      {
        "type": "header",
        "content": "t:sections.collage.settings.desktop_layout.label"
      },
      {
        "type": "select",
        "id": "desktop_image_height",
        "options": [
          {
            "value": "small",
            "label": "t:sections.image-banner.settings.image_height.options__2.label"
          },
          {
            "value": "medium",
            "label": "t:sections.image-banner.settings.image_height.options__3.label"
          },
          {
            "value": "large",
            "label": "t:sections.image-banner.settings.image_height.options__4.label"
          }
        ],
        "default": "medium",
        "label": "Desktop image height",
        "info": "t:sections.image-banner.settings.image_height.info"
      },
      {
        "type": "select",
        "id": "desktop_content_position",
        "options": [
          {
            "value": "top-left",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__1.label"
          },
          {
            "value": "top-center",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__2.label"
          },
          {
            "value": "top-right",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__3.label"
          },
          {
            "value": "middle-left",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__4.label"
          },
          {
            "value": "middle-center",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__5.label"
          },
          {
            "value": "middle-right",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__6.label"
          },
          {
            "value": "bottom-left",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__7.label"
          },
          {
            "value": "bottom-center",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__8.label"
          },
          {
            "value": "bottom-right",
            "label": "t:sections.image-banner.settings.desktop_content_position.options__9.label"
          }
        ],
        "default": "middle-center",
        "label": "t:sections.image-banner.settings.desktop_content_position.label"
      },
      {
        "type": "checkbox",
        "id": "show_text_box",
        "default": true,
        "label": "t:sections.image-banner.settings.show_text_box.label"
      },
      {
        "type": "select",
        "id": "desktop_content_alignment",
        "options": [
          {
            "value": "left",
            "label": "t:sections.image-banner.settings.desktop_content_alignment.options__1.label"
          },
          {
            "value": "center",
            "label": "t:sections.image-banner.settings.desktop_content_alignment.options__2.label"
          },
          {
            "value": "right",
            "label": "t:sections.image-banner.settings.desktop_content_alignment.options__3.label"
          }
        ],
        "default": "center",
        "label": "t:sections.image-banner.settings.desktop_content_alignment.label"
      },
      {
        "type": "header",
        "content": "t:sections.image-banner.settings.mobile.content"
      },
      {
        "type": "select",
        "id": "mobile_image_height",
        "options": [
          {
            "value": "small",
            "label": "t:sections.image-banner.settings.image_height.options__2.label"
          },
          {
            "value": "medium",
            "label": "t:sections.image-banner.settings.image_height.options__3.label"
          },
          {
            "value": "large",
            "label": "t:sections.image-banner.settings.image_height.options__4.label"
          }
        ],
        "default": "medium",
        "label": "Mobile image height",
        "info": "For best results, use an image with a 1:1 aspect ratio."
      },
      {
        "type": "select",
        "id": "mobile_content_alignment",
        "options": [
          {
            "value": "left",
            "label": "t:sections.image-banner.settings.mobile_content_alignment.options__1.label"
          },
          {
            "value": "center",
            "label": "t:sections.image-banner.settings.mobile_content_alignment.options__2.label"
          },
          {
            "value": "right",
            "label": "t:sections.image-banner.settings.mobile_content_alignment.options__3.label"
          }
        ],
        "default": "center",
        "label": "t:sections.image-banner.settings.mobile_content_alignment.label"
      },
      {
        "type": "checkbox",
        "id": "show_text_below",
        "default": true,
        "label": "t:sections.image-banner.settings.show_text_below.label"
      }
    ],
    "blocks": [
      {
        "type": "heading",
        "name": "t:sections.image-banner.blocks.heading.name",
        "limit": 1,
        "settings": [
          {
            "type": "inline_richtext",
            "id": "heading",
            "default": "t:sections.image-banner.blocks.heading.settings.heading.default",
            "label": "t:sections.image-banner.blocks.heading.settings.heading.label"
          },
          {
            "type": "select",
            "id": "heading_size",
            "options": [
              {
                "value": "h2",
                "label": "t:sections.all.heading_size.options__1.label"
              },
              {
                "value": "h1",
                "label": "t:sections.all.heading_size.options__2.label"
              },
              {
                "value": "h0",
                "label": "t:sections.all.heading_size.options__3.label"
              },
              {
                "value": "hxl",
                "label": "t:sections.all.heading_size.options__4.label"
              },
              {
                "value": "hxxl",
                "label": "t:sections.all.heading_size.options__5.label"
              }
            ],
            "default": "h1",
            "label": "t:sections.all.heading_size.label"
          }
        ]
      },
      {
        "type": "text",
        "name": "t:sections.image-banner.blocks.text.name",
        "limit": 1,
        "settings": [
          {
            "type": "inline_richtext",
            "id": "text",
            "default": "t:sections.image-banner.blocks.text.settings.text.default",
            "label": "t:sections.image-banner.blocks.text.settings.text.label"
          },
          {
            "type": "select",
            "id": "text_style",
            "options": [
              {
                "value": "body",
                "label": "t:sections.image-banner.blocks.text.settings.text_style.options__1.label"
              },
              {
                "value": "subtitle",
                "label": "t:sections.image-banner.blocks.text.settings.text_style.options__2.label"
              },
              {
                "value": "caption-with-letter-spacing",
                "label": "t:sections.image-banner.blocks.text.settings.text_style.options__3.label"
              }
            ],
            "default": "body",
            "label": "t:sections.image-banner.blocks.text.settings.text_style.label"
          }
        ]
      },
      {
        "type": "buttons",
        "name": "t:sections.image-banner.blocks.buttons.name",
        "limit": 1,
        "settings": [
          {
            "type": "text",
            "id": "button_label_1",
            "default": "t:sections.image-banner.blocks.buttons.settings.button_label_1.default",
            "label": "t:sections.image-banner.blocks.buttons.settings.button_label_1.label",
            "info": "t:sections.image-banner.blocks.buttons.settings.button_label_1.info"
          },
          {
            "type": "url",
            "id": "button_link_1",
            "label": "t:sections.image-banner.blocks.buttons.settings.button_link_1.label"
          },
          {
            "type": "checkbox",
            "id": "button_style_secondary_1",
            "default": false,
            "label": "t:sections.image-banner.blocks.buttons.settings.button_style_secondary_1.label"
          },
          {
            "type": "text",
            "id": "button_label_2",
            "default": "t:sections.image-banner.blocks.buttons.settings.button_label_2.default",
            "label": "t:sections.image-banner.blocks.buttons.settings.button_label_2.label",
            "info": "t:sections.image-banner.blocks.buttons.settings.button_label_2.info"
          },
          {
            "type": "url",
            "id": "button_link_2",
            "label": "t:sections.image-banner.blocks.buttons.settings.button_link_2.label"
          },
          {
            "type": "checkbox",
            "id": "button_style_secondary_2",
            "default": false,
            "label": "t:sections.image-banner.blocks.buttons.settings.button_style_secondary_2.label"
          }
        ]
      }
    ],
    "presets": [
      {
        "name": "CDS Image Banner",
        "blocks": [
          {
            "type": "heading"
          },
          {
            "type": "text"
          },
          {
            "type": "buttons"
          }
        ]
      }
    ]
  }
{% endschema %}

Step 7 : Shoppable Video Slider

Complete Electronics Homepage Template (Import Ready)

Instead of manually installing multiple sections, adjusting layouts, and fixing spacing issues — import the complete homepage template and get the exact structure, design flow, and styling instantly.

Reviews (0)

Reviews

There are no reviews yet

Add a review
Electronics/Gadget Store Home Page Design Electronics/Gadget Store Home Page Design
Rating*
0/5
* Rating is required
Your review
* Review is required
Name
* Name is required
Add photos or video to your review