Custom Elements - Tabs 01

Documentation

REQUIREMENTS

  • Business Plan with your Squarespace version 7.0;

  • Squarespace template that allows stacked Index pages;

How to

To implement your custom element inside your Squarespace account please follow the instructions below or/and watch the video:

  1. Copy the CSS code from the bottom of the article and paste to your Design tab -> Custom CSS tab

  2. Copy the JavaScript code from the bottom of the article and paste to your Settings -> Advanced -> Code Injection -> Footer tab

  3. Create a post type with text and image for your tabs. Image recommended sizing at least 600x800px (vertical ratio)

  4. Add a new section inside an Index Page, where you want the element located. Make sure to title the section with slug “tabs-type-1“ or “tabs-type-1-x“.
    HTML code to use when building the section:

<div class="tabs-title"></div>

Video Passcode: SQM-ELEMENTS

This video will go over how to update your fonts** to match the ones from the Custom element (check screenshots below) and the other way around.

**Font-families set in the CSS Code might differ from the ones mentioned in the video tutorial. The practice of changing the fonts stays the same.

Fonts Styles:

Heading 2

 

Body

CSS Code:

/* Tabs Type 1 */
@font-face {
  font-family: Questrial;
  src: url("https://static1.squarespace.com/static/5c1b99c7a9e02801f6c9b9d0/t/5cade8cfe5e5f02b0ddd34b8/1554901200175/Questrial-Regular.ttf");
}
@font-face {
  font-family: nunito-sans;
  src: url("https://static1.squarespace.com/static/5e5cc5496ecd6e20d2894138/t/642e87d44790e500c508a6b1/1680771029363/NunitoSans-Light.ttf");
}
@font-face {
  font-family: libre-caslon-display;
  src: url("https://static1.squarespace.com/static/642fc2cb0ff3d476932cd662/t/642fd70e40a7231d4fe182f4/1680856846167/libre-caslon-display.regular.otf");
}
[id^="tabs-type-1"] {
  background: #f6efe5;

  h3 {
    font-family: Questrial;
    font-size: 10px;
    line-height: 200%;
    letter-spacing: 0.4em;
    text-transform: uppercase;
    color: #35322e;
  }
  .tabs-title h2 {
    font-family: libre-caslon-display;
    font-weight: 300;
    font-size: 38px;
    line-height: 100%;
    letter-spacing: -0.01em;
    color: #35322e;
    cursor: pointer;
    margin-bottom: 28px;
    display: table;
  }
  .sqs-block-summary-v2 .summary-excerpt p {
    font-family: nunito-sans;
    font-size: 15px;
    line-height: 200%;
    letter-spacing: 0;
    color: #35322e;
  }
  .tabs-title h2 span {
    border-bottom: 1px solid transparent;
  }
  .Index-page-content {
    padding-top: 105px;
    padding-bottom: 80px;
  }
  .sqs-block-summary-v2 .summary-block-setting-design-list .summary-item {
    position: relative;
    transition: all 0.5s;
    display: none;
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
  }
  .sqs-block-summary-v2
    .summary-block-setting-design-list
    .yui3-widget
    .summary-item:first-child,
  .sqs-block-summary-v2
    .summary-block-setting-design-list
    .summary-item.sm-active {
    display: block;
  }
  .sqs-block-summary-v2 .summary-excerpt {
    max-width: 320px;
    padding-left: 40px;
    margin-top: 105px;
  }
  .tabs-title h2.sm-active span {
    border-bottom: 1px solid #35322e;
  }
  .sqs-block-summary-v2 .summary-title {
    display: none;
  }
  .summary-thumbnail-outer-container {
    pointer-events: none;
  }
  .summary-thumbnail img {
    max-width: 100%;
    width: 100% !important;
    height: auto !important;
    top: 0 !important;
    left: 0 !important;
  }
  .sqs-block-code {
    margin-top: 45px;
  }
  @media (max-width: 1199px) {
    .tabs-title h2 {
      font-size: 32px;
    }
    .sqs-block-code {
      margin-top: 0;
    }
    .sqs-block-summary-v2 .summary-excerpt {
      max-width: 300px;
      margin-top: 65px;
    }
  }
  @media (max-width: 991px) {
    .Index-page-content {
      padding-top: 60px;
      padding-bottom: 40px;
    }
    .tabs-title h2 {
      font-size: 24px;
    }
    .sqs-block-summary-v2 .summary-excerpt {
      margin-top: 45px;
      padding-left: 0;
    }
  }
  @media (max-width: 767px) {
    .tabs-title h2 {
      font-size: 20px;
    }
  }
  @media (max-width: 640px) {
    .Index-page-content {
      padding-top: 30px;
      padding-bottom: 10px;
    }
    .sqs-block-summary-v2 .summary-excerpt {
      max-width: 100%;
      padding-left: 0;
      margin: 0;
    }
    .tabs-title h2 {
      margin-bottom: 15px;
    }
    .sqs-block-summary-v2
      .summary-block-setting-design-list
      .summary-thumbnail-container {
      padding: 0 0 20px;
    }
    .sqs-block-summary-v2
      .summary-block-setting-design-list
      .summary-thumbnail-outer-container,
    .sqs-gallery-design-list
      .sqs-gallery-design-list-slide
      .sqs-gallery-meta-container {
      width: 100% !important;
    }
  }
}

JavaScript Code:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(document).ready(function() {
  tabs_type_1();
});

function tabs_type_1() {
  let tabsSelector1 = '[id^="tabs-type-1"]';
  let tabsType1 = $(tabsSelector1);
  if ( tabsType1.length ) {
    tabsType1.each( function() {
      let count = 0;
      let $this = $(this);
      $this.find('.summary-item:first-child').addClass('sm-active');
      let $tabsTitle = $this.find('.tabs-title');
      $this.find('.summary-item .summary-title-link').each( function() {
        count++;
        let active = '';
        if ( count == 1 ) {
          active = 'class="sm-active"';
        }
        $tabsTitle.append( '<h2 '+active+' data-id="'+ count +'">' + $(this).html() + '</h2>' );
      });
    });

    tabsType1.on('click', '.tabs-title h2', function () {
      if ( !$(this).hasClass('active') ) {
        let dataID = $(this).attr('data-id');
        $(this).parents(tabsSelector1).find('.sm-active').removeClass('sm-active');

        $(this).addClass('sm-active');
        $(this).parents(tabsSelector1).find('.summary-item:nth-child('+dataID+')').addClass('sm-active');
      }
    });

    // fix for custom URL
    tabsType1.find('.summary-item').each(function() {
      let $this = $(this);
      let href = $this.find('.summary-title-link').attr('href');
      $this.find('.summary-read-more-link').attr('href', href);
    });
  }
}
</script>