
Collection circles
This snippet creates an Instagram-style story navigation menu for Shopify collections or products. It features circular thumbnails with gradient borders and integrated Swiper.js support for a smooth, touch-friendly horizontal carousel on mobile and desktop.
- Circular image thumbnails with gradient borders
- Swiper.js horizontal slider integration
- Responsive design with desktop/mobile scaling
- Custom CSS typography and Josefin Sans font support
- Flexbox-based alignment for clean category links
- Visual navigation for product categories on the homepage
- Mobile-friendly 'Story' style collection menu
- Highlighting featured brands or sub-collections
- Most Shopify themes
- Shopify Online Store 2.0
The code
1<div class='section-template--16651111629049__1663859377890f7915-settings'>2 <div class='circle-slider-wrapper-template--16651111629049__1663859377890f7915'>3 <div class='swiper circle-slider-template--16651111629049__1663859377890f7915 preview'>4 <div class='swiper-wrapper'>5 <div class='circle-item-template--16651111629049__1663859377890f7915 swiper-slide'>6 <a class='circle-icon-template--16651111629049__1663859377890f7915' href='/products/snow-peak-titanium-single-wall-cup'>7 <img alt='' src='//section.store/cdn/shop/products/mug.jpg?v=1663855357'/>8 </a>9 <p class='circle-text-template--16651111629049__1663859377890f7915'>10 Mugs11 </p>12 </div>13 <div class='circle-item-template--16651111629049__1663859377890f7915 swiper-slide'>14 <a class='circle-icon-template--16651111629049__1663859377890f7915' href='/products/5-panel-hat'>15 <img alt='' src='//section.store/cdn/shop/files/5-panel-hat_4ee20a27-8d5a-490e-a2fc-1f9c3beb7bf5.webp?v=1663859540'/>16 </a>17 <p class='circle-text-template--16651111629049__1663859377890f7915'>18 Hats19 </p>20 </div>21 <div class='circle-item-template--16651111629049__1663859377890f7915 swiper-slide'>22 <a class='circle-icon-template--16651111629049__1663859377890f7915' href='/products/camp-stool'>23 <img alt='' src='//section.store/cdn/shop/files/campstool-1.webp?v=1663859592'/>24 </a>25 <p class='circle-text-template--16651111629049__1663859377890f7915'>26 Stools27 </p>28 </div>29 <div class='circle-item-template--16651111629049__1663859377890f7915 swiper-slide'>30 <a class='circle-icon-template--16651111629049__1663859377890f7915' href='/products/canvas-lunch-bag'>31 <img alt='' src='//section.store/cdn/shop/files/Lunchbag_Khaki_Front_8ae0e1f4-407d-4ac0-89e6-961b306ef351.jpg?v=1663859624'/>32 </a>33 <p class='circle-text-template--16651111629049__1663859377890f7915'>34 Bags35 </p>36 </div>37 <div class='circle-item-template--16651111629049__1663859377890f7915 swiper-slide'>38 <a class='circle-icon-template--16651111629049__1663859377890f7915' href='/products/foraker-canvas-coat'>39 <img alt='' src='//section.store/cdn/shop/files/woolfill-jacket_6c39ae23-c0c8-4821-85f4-4b5d64333c62.webp?v=1663859701'/>40 </a>41 <p class='circle-text-template--16651111629049__1663859377890f7915'>42 Jackets43 </p>44 </div>45 <div class='circle-item-template--16651111629049__1663859377890f7915 swiper-slide'>46 <div class='circle-icon-template--16651111629049__1663859377890f7915'>47 <img alt='' src='//section.store/cdn/shop/products/1_637c75a8-33f9-4c38-aebf-5a3dc31162dc.png?v=1706026914'/>48 </div>49 <p class='circle-text-template--16651111629049__1663859377890f7915'>50 Throws51 </p>52 </div>53 <div class='circle-item-template--16651111629049__1663859377890f7915 swiper-slide'>54 <div class='circle-icon-template--16651111629049__1663859377890f7915'>55 <img alt='' src='//section.store/cdn/shop/products/2_c196c504-dfa8-41e9-b151-1094c4962009.png?v=1706026914'/>56 </div>57 <p class='circle-text-template--16651111629049__1663859377890f7915'>58 Rugs59 </p>60 </div>61 </div>62 </div>63 </div>64</div>65<style>66 .circle-icon-template--16651111629049__1663859377890f7915,67 .circle-icon-template--16651111629049__1663859377890f7915 img,68 .circle-icon-template--16651111629049__1663859377890f7915 svg {69 border-radius: 50%;70 }7172 .circle-icon-template--16651111629049__1663859377890f7915 img,73 .circle-icon-template--16651111629049__1663859377890f7915 svg {74 border-radius: 50%;75 }7677 </style><style>78 .circle-icon-template--16651111629049__1663859377890f7915 {79 background-image: linear-gradient(133deg, rgba(250, 220, 54, 1) 11%, rgba(254, 98, 146, 1) 49%, rgba(250, 220, 54, 1) 87%);80 border: 0px;81 padding: 2px;82 }83 </style><style>@font-face {84 font-family: 'Josefin Sans';85 font-weight: 400;86 font-style: normal;87 font-display: swap;88 src: url('//section.store/cdn/fonts/josefin_sans/josefinsans_n4.c8300d95fd4ce72542a6efba9c682da40d144fba.woff2?h1=c2VjdGlvbi5zdG9yZQ&h2=c2VjdGlvbi1zdG9yZS1hcHAuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=1081bc13bac779d73b77022741d8b8608aa5451af6a05907fc023625940c00f1') format('woff2'),89 url('//section.store/cdn/fonts/josefin_sans/josefinsans_n4.ed7230a86e75b34b997bd12a5e1b87fcaf7104d8.woff?h1=c2VjdGlvbi5zdG9yZQ&h2=c2VjdGlvbi1zdG9yZS1hcHAuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=3f19a3e11bab2423756ce410220df09957f15affd53a78fa0ec435e5660aa636') format('woff');90}919293 .section-template--16651111629049__1663859377890f7915 {94 border-top: solid #000000 0px;95 border-bottom: solid #000000 0px;96 margin-top: 0px;97 margin-bottom: 0px;98 overflow: hidden;99 }100101 .section-template--16651111629049__1663859377890f7915-settings {102 margin: 0 auto;103 padding-top: 27px;104 padding-bottom: 27px;105 padding-left: 1.5rem;106 padding-right: 1.5rem;107 }108109 .circle-slider-wrapper-template--16651111629049__1663859377890f7915 {110 margin: 0px auto;111 width: 100%;112 }113114 .circle-slider-template--16651111629049__1663859377890f7915 {115 margin: 0px auto;116 width: 100% !important;117 max-width: fit-content !important;118 overflow:visible;119 }120121 .circle-item-template--16651111629049__1663859377890f7915 {122 width: 100%;123 max-width: 66px;124 box-sizing: border-box;125 }126127 .circle-item-template--16651111629049__1663859377890f7915:last-child {128 margin-right: 0!important;129 }130131 .circle-icon-template--16651111629049__1663859377890f7915 {132 margin: 0px auto;133 display: block;134 width: 66px;135 height: 66px;136 border: 2px solid #000000;137 overflow: hidden;138 }139140 .circle-icon-template--16651111629049__1663859377890f7915 img,141 .circle-icon-template--16651111629049__1663859377890f7915 svg {142 display: block;143 width: 100%;144 height: 100%;145 object-fit: cover;146 border: 4px solid #ffffff;147 }148149 .circle-icon-template--16651111629049__1663859377890f7915 svg {150 background-color: #DADADA;151 }152153 .circle-text-template--16651111629049__1663859377890f7915 {154 margin: 0;155 margin-top: 6px;156 font-size: 10px;157 color: #121212;158 line-height: 130%;159 text-transform: unset;160 word-wrap: break-word;161 text-align: center;162 }163164 .circle-item-template--16651111629049__1663859377890f7915 {165 box-sizing: border-box !important;166 }167168 @media screen and (min-width: 1024px) {169170 .section-template--16651111629049__1663859377890f7915 {171 margin-top: 0px;172 margin-bottom: 0px;173 }174175 .section-template--16651111629049__1663859377890f7915-settings {176 padding: 0 5rem;177 padding-top: 36px;178 padding-bottom: 36px;179 padding-left: 0rem;180 padding-right: 0rem;181 }182183 .circle-item-template--16651111629049__1663859377890f7915 {184 max-width: 100px;185 }186187 .circle-icon-template--16651111629049__1663859377890f7915 {188 width: 100px;189 height: 100px;190 }191192 .circle-icon-template--16651111629049__1663859377890f7915 img,193 .circle-icon-template--16651111629049__1663859377890f7915 svg {194 border: 4px solid #ffffff;195 }196197 .circle-text-template--16651111629049__1663859377890f7915 {198 margin-top: 8px;199 font-size: 12px;200 }201202 .circle-slider-wrapper-template--16651111629049__1663859377890f7915 {203 max-width: 100%;204 }205206 }</style><style>207 .circle-slider-template--16651111629049__ss_instagram_menu_NWJX7Q.preview .swiper-wrapper {208 display: flex;209 align-items: top;210 justify-content: space-between;211 overflow: hidden;212 }213214 .circle-slider-template--16651111629049__ss_instagram_menu_NWJX7Q.preview .circle-item-template--16651111629049__ss_instagram_menu_NWJX7Q {215 width: 40%;216 }217218 .circle-slider-template--16651111629049__ss_instagram_menu_NWJX7Q.preview .circle-item-template--16651111629049__ss_instagram_menu_NWJX7Q:not(:first-child) {219 margin-left: 16px;220 }221222 @media(min-width: 1024px) {223 .circle-slider-template--16651111629049__ss_instagram_menu_NWJX7Q.preview .circle-item-template--16651111629049__ss_instagram_menu_NWJX7Q:not(:first-child) {224 margin-left: 16px;225 }226227 .circle-slider-template--16651111629049__ss_instagram_menu_NWJX7Q {228 overflow:hidden;229 }230231 .circle-slider-template--16651111629049__ss_instagram_menu_NWJX7Q.preview .circle-item-template--16651111629049__ss_instagram_menu_NWJX7Q {232 width: 15%;233 }234 }235</style><style>236 .circle-slider-template--16651111629049__1663859377890f7915.preview .swiper-wrapper {237 display: flex;238 align-items: top;239 justify-content: space-between;240 overflow: hidden;241 }242243 .circle-slider-template--16651111629049__1663859377890f7915.preview .circle-item-template--16651111629049__1663859377890f7915 {244 width: 40%;245 }246247 .circle-slider-template--16651111629049__1663859377890f7915.preview .circle-item-template--16651111629049__1663859377890f7915:not(:first-child) {248 margin-left: 16px;249 }250251 @media(min-width: 1024px) {252 .circle-slider-template--16651111629049__1663859377890f7915.preview .circle-item-template--16651111629049__1663859377890f7915:not(:first-child) {253 margin-left: 16px;254 }255256 .circle-slider-template--16651111629049__1663859377890f7915 {257 overflow:hidden;258 }259260 .circle-slider-template--16651111629049__1663859377890f7915.preview .circle-item-template--16651111629049__1663859377890f7915 {261 width: 15%;262 }263 }264</style>
How to install Collection circles on your Shopify theme
This snippet belongs in sections/main-collection-product-grid.liquid, above the product grid. Expect the whole job to take about 15–25 minutes.
- 1From your Shopify admin, open Online Store → Themes, click the … button on your live theme and choose Duplicate. Always work on a copy so you can roll back instantly.
- 2On the duplicated theme, click … → Edit code to open the theme code editor.
- 3Open sections/main-collection-product-grid.liquid in the file tree. If your theme uses different file names, search for the template that renders the area where you want the block to show up.
- 4Click Copy code on this page, then paste the snippet above the product grid.
- 5The snippet ships with its own scoped
<style>block, so you do not need to touchbase.cssortheme.css. If you prefer to keep CSS centralised, move the contents of the style tag into your theme stylesheet and delete the inline block. - 6Click Save, then hit Preview and check the block on desktop, tablet and mobile widths.
- 7When you are happy with the result, publish the duplicated theme from Online Store → Themes → Actions → Publish.
How to customise it
Every value below lives inside the snippet, so you can adapt Collection circles to your brand without touching the rest of the theme.
- Colours — the snippet uses
#000000,#ffffff,#DADADA,#121212. Replace those values inside the style block with your brand palette, keeping at least a 4.5:1 contrast ratio between text and background so the block stays accessible. - Gradient — swap the
linear-gradient(...)declaration for a flat background colour if you want a more minimal, theme-native look. - Typography — the block declares
font-family: 'Josefin Sans'. Delete that line to inherit your theme font instead, which usually looks better integrated. - Sizing — adjust the font-size values (10px, 12px) and the padding so the block carries the same visual weight as the elements around it.
- Corners —
border-radius: 50%controls the roundness. Set it to 0 for a sharper editorial look, or increase it for a softer, app-like feel. - Images — replace the placeholder image URLs with your own assets. Upload them under Content → Files in Shopify admin and use the generated CDN URL, or reference a theme asset with
{{ 'my-image.png' | asset_url }}. - Responsive behaviour — the
@mediaquery defines the mobile breakpoint. Adjust the pixel value if your theme uses a different breakpoint scale.
Common mistakes to avoid
These are the issues merchants run into most often when installing a snippet like this one.
- Editing the live theme directly. Duplicate it first — a single unbalanced Liquid tag can take a storefront down mid-campaign.
- Pasting the code into the wrong file. Dropped into
layout/theme.liquidinstead ofsections/main-collection-product-grid.liquid, this block will render on every page of the store, including ones where it makes no sense. - Renaming the CSS classes in the markup but not in the style block, or vice versa. The class names have to match exactly or the styling silently disappears.
- Publishing without testing on a real phone. Most Shopify traffic is mobile, and layout problems almost always surface there first.
Performance notes
What this block costs you in load time, and how to keep that cost at zero.
- The CSS is inline and scoped to this block, so it adds no extra network request. At a few kilobytes it has no measurable effect on your Lighthouse score.
- Add
loading="lazy"plus explicit width and height attributes to every image in the snippet. That prevents Cumulative Layout Shift, which is a Core Web Vitals ranking factor. - Run PageSpeed Insights before and after you add the block so you have a concrete number rather than a guess.
SEO & accessibility
How to add this block without damaging your on-page structure or your rich results.
- Nothing in this snippet should replace your page
<h1>. Keep product and page headings intact and use<h2>or<h3>for the block's own heading so the document outline stays clean. - Write a descriptive alt attribute for every image. Empty or generic alt text is one of the most common accessibility and SEO issues on Shopify stores.
- Any link you add here is an internal link. Point it at a real collection or page rather than
#, and use descriptive anchor text instead of “click here”. - If the block shows review or rating content, keep it consistent with the structured data your review app already outputs. Duplicating or contradicting rating markup can cost you the rich result entirely.
- The block does not create a new URL, so there is no canonical or indexing change to make. It improves on-page engagement signals rather than crawlability.
Collection circles — questions merchants ask
Will this snippet work with my theme?
It is built with standard Liquid, HTML and CSS, so it works with Dawn and virtually every Online Store 2.0 theme, as well as most vintage themes. The only thing that changes between themes is the file you paste it into — if yours has no sections/main-collection-product-grid.liquid, look for the equivalent template that renders the same area.
Do I need an app to use it?
No. This is theme code you own outright: no monthly fee, no third-party script tag, and no app that can break your storefront the next time it updates.
How long does it take to add “Collection circles” to a store?
Most merchants have it live in under fifteen minutes — duplicate the theme, paste the code, adjust the colours and copy, preview on mobile, publish.
The styling looks broken after pasting. How do I fix it?
Confirm you copied the whole snippet including the closing style tag, then check whether one of your theme's own CSS rules is overriding it. If a theme rule wins, increase the specificity of the snippet's selector rather than scattering !important through the file.
Will it slow my store down?
Not meaningfully. It is inline markup with scoped CSS and at most a few lines of vanilla JavaScript — no external libraries, no extra HTTP request. Optimising your product images will always have a far bigger impact on load time.
Can I use it on a client store or a commercial project?
Yes. Every snippet in the MCO Hub library is free to copy, modify and ship on any store, including client work. Attribution is appreciated but not required.
Related snippets
Keep exploring
Guides
Tools



