Fixing Wonky Product Thumbnails in Your Shopify Horizon Theme: A Community CSS Solution

Hey everyone! Your friendly Shopify expert here, diving into another gem from the community forums. You know, one of the best things about the Shopify ecosystem is how we all help each other out. Recently, I stumbled upon a thread that perfectly illustrates this spirit, tackling a pesky visual glitch in the popular Horizon theme. If you've been scratching your head over product page thumbnails looking a bit... off, you're definitely not alone. Let's talk about enssle's dilemma and how tim_tairli swooped in with a brilliant fix.

The Mystery of the Mismatched Thumbnails

Our fellow store owner, enssle, was wrestling with their product page thumbnails in the Horizon theme. Despite meticulously preparing images, checking settings, and even trying some CSS tweaks, the thumbnails just weren't behaving. They weren't covering the designated space, and their proportions were all wrong, making the product page look less than polished. enssle specifically wanted to display thumbnails next to the main product carousel, and this visual hiccup was a real roadblock.

Screenshot of Horizon Theme thumbnail problem

When Global Styles Get a Little Too Enthusiastic

This is where the community magic happens. When enssle shared a preview link to their store, tim_tairli quickly jumped in to diagnose the issue. And boy, was it a classic case of CSS specificity gone wild!

What tim_tairli uncovered was pretty insightful. It turns out that some global button styling, likely added either directly in your Theme Settings' Custom CSS or perhaps by a developer in layouts/theme.liquid, was a little too enthusiastic in its application. Take a look at the code tim_tairli shared:

/* GLOBAL BUTTON STYLING — HORIZON THEME */ 
/* Shared button base */
.button,
button.button,
a.button,
.shopify-payment-button__button,
.product-form__submit {
  font-family: var(--font-body-family);
  font-size: 15px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.1em;
  min-height: 40px;
  padding: 0 28px;             /* <-- offending line */
  border-radius: 0px;
  text-transform: none;
} 
/* Primary buttons */
.button--primary,
button.button--primary,
a.button--primary,
.product-form__submit {
  min-height: 52px;
  padding: 0 32px;
  font-size: 15px;
} /* Secondary buttons */
.button--secondary,
button.button--secondary,
a.button--secondary {
  min-height: 48px;
  padding: 0 28px;
  font-size: 14px;
} 
/* Mobile button sizing */
@media screen and (max-width: 749px) {
  .button,
button.button,
  a.button,
  .shopify-payment-button__button,
.product-form__submit {
    min-height: 46px;
    padding: 0 24px;
    font-size: 14px;
  }
  .button--primary,
button.button--primary,
  a.button--primary,
  .product-form__submit {
    min-height: 50px;
    padding: 0 26px;
  }
  .button--secondary,
button.button--secondary,
  a.button--secondary {
    min-height: 44px;
    padding: 0 22px;
  }
}

See that padding: 0 28px; line under the /* Shared button base */ comment? That's the culprit! The problem was that these general selectors, like .button, button.button, and a.button, were applying styles to elements that weren't just buttons in the traditional sense. Specifically, the product page carousel thumbnails in the Horizon theme are actually rendered as

Share:

Use cases

Explore use cases

Agencies, store owners, enterprise — find the migration path that fits.

Explore use cases