Skip to main content

Force 4 Columns on Amplify Teasers with Mobile Responsiveness

In Action here: https://ssschlibrary.specialdistrict.org/
 

paragraph summaries have not been altered, and may be cut off. If needed to adjust, adding a max-width of 260px will likely do the trick. 
 

Add to Preferences > Advanced > Site-wide custom HTML before </head>

<style>
/* === Responsive Grid Layout for Teasers === */

/* Base: 4 columns on desktop */
.amplify-teasers.standard .standard-teasers-container.three_column {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 2rem !important;
  width: 100%;
  box-sizing: border-box;
}

/* Tablet: 2 columns */
@media (max-width: 1024px) {
  .amplify-teasers.standard .standard-teasers-container.three_column {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}

/* Mobile: 1 column */
@media (max-width: 640px) {
  .amplify-teasers.standard .standard-teasers-container.three_column {
    grid-template-columns: 1fr !important;
    padding: 0 1rem;
  }
}

/* Each teaser fills the grid cell */
.amplify-teasers.standard .standard-teasers-container.three_column > article {
  width: 100% !important;
  display: flex !important;
  flex-direction: column !important;
  height: auto !important;
}

/* Inner containers stretch */
.standard-teaser-container {
  width: 100% !important;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.standard-teaser-image-container,
.standard-teaser-content-container {
  width: 100% !important;
}

/* Max specificity for teaser title fix */
.amplify-teasers.standard .standard-container .standard-teasers-container .standard-teaser-container .standard-teaser-content-container a.standard-teaser-link > p.heading {
  all: unset;
  display: block !important;
  font-size: 1.1rem !important;
  font-weight: bold !important;
  line-height: 1.3 !important;
  white-space: normal !important;
  overflow-wrap: break-word !important;
  word-break: break-word !important;
  margin-bottom: 0.5rem !important;
  color: inherit !important;
max-width: 260px
}
</style>
<script>
  document.addEventListener("DOMContentLoaded", function () {
    const headings = document.querySelectorAll(
      ".amplify-teasers.standard .standard-container .standard-teasers-container .standard-teaser-container .standard-teaser-content-container a.standard-teaser-link > p.heading"
    );
    headings.forEach((el) => {
      el.style.whiteSpace = "normal";
      el.style.overflow = "visible";
      el.style.textOverflow = "unset";
      el.style.display = "block";
      el.style.webkitLineClamp = "unset";
      el.style.webkitBoxOrient = "unset";
    });
  });
</script>