No notes defined.

<p>Add a class of <code>card--flex-overlap</code> to have a card's figure and content size themselves intrinsically with flexbox, <strong>when using a highlighted title</strong> style. The title is overlapped on the figure (when the figure sits above). This is particularly useful for cards in single columns (like search results), and grids of 3, which look awkwardly large otherwise at a tablet-ish width, when they fall to a single column.</p>

<hr />

<div class="card  card--flex-overlap  card--maroon">
    <figure class="card__figure">
        <img src="https://picsum.photos/720/360?random=1" alt="" />
    </figure>

    <div class="card__content">
        <div class="title">
            <h3 class="h4"><a href="" class="">Graduates give Staffs Uni star role in popular app</a></h3>
        </div>
        <p>Staffordshire University is going global with a programme packed full of free events to start the new decade.</p>
    </div>
</div>

<div class="card  card--flex-overlap  card--pink">
    <figure class="card__figure">
        <img src="https://picsum.photos/720/360?random=2" alt="" />
    </figure>

    <div class="card__content">
        <a href="" class="link--stretched">
            <div class="title">
                <h3 class="h4">Enjoying the View? How computer games can help evaluate landscapes</h3>
            </div>
        </a>
        <p>2020 marks the International Year of the Nurse and Midwife, and Staffordshire University is joining colleagues across the globe to shine a spotlight on the sector. Celebrations kick off with a talk this week by Visiting Professor Ann-Marie Cannaby, Chief Nurse at the Royal Wolverhampton Hospital, at the University’s Centre of Excellence in Healthcare Education, Stafford.Two hundred years may have passed since the birth of Florence Nightingale, but patient care and safety remain the most important influencing factors within the fields of nursing and midwifery. Professor Cannaby will use her keynote presentation to explore curriculum developments.</p>
    </div>
</div>

<div class="card  card--flex-overlap  card--red">

    <div class="card__content">
        <a href="" class="link--stretched">
            <div class="title">
                <h3 class="h4">Enjoying the View? How computer games can help evaluate landscapes</h3>
            </div>
        </a>
        <p>Example without a figure image</p>
        <p>The founders of an immersive storytelling app have returned to their university stomping ground to film their latest episode.</p>
    </div>
</div>

<hr />

<div class="grid  grid-2-cols  grid-4-cols@desktop">

    <div>
        <div class="card  card--flex-overlap  card--maroon">
            <figure class="card__figure  card__figure--video">
                <img src="https://picsum.photos/480/240?random=3" alt="" />
            </figure>

            <div class="card__content">
                <a href="#" class="link--stretched">
                    <div class="title">
                        <h3 class="h5">Research into poverty in Stoke-on-Trent gets new funding boost</h3>
                    </div>
                </a>
                <p><span class="tag">video</span></p>
                <p>Adding a class of <code>card__figure--video</code> to a figure will give it a play icon overlay.</p>
            </div>
        </div>
    </div>

    <div>
        <div class="card  card--flex-overlap  card--slate">
            <figure class="card__figure">
                <img src="https://picsum.photos/480/240?random=4" alt="" />
            </figure>

            <div class="card__content">
                <a href="#" class="link--stretched">
                    <div class="title">
                        <h3 class="h5">Graduates give Staffs Uni star role in popular app</h3>
                    </div>
                </a>
                <p><span class="tag">blog</span></p>
                <p>
                    <time class="strong">11 February 2024</time>
                </p>
                <p>University's pioneering work with community researchers will help inform new model of community research.</p>
            </div>
        </div>
    </div>

    <div>
        <div class="card  card--flex-overlap  card--red">
            <figure class="card__figure">
                <img src="https://picsum.photos/480/240?random=5" alt="" />
            </figure>

            <div class="card__content">
                <a href="#" class="link--stretched">
                    <div class="title">
                        <h3 class="h5">“It's Beautiful to be Old” Professor tells Vatican</h3>
                    </div>
                </a>
                <p><span class="tag">blog</span></p>
                <p>
                    <time class="strong">10 August 2024</time>
                </p>
                <p>University's pioneering work with community researchers will help inform new model of community research.</p>
            </div>
        </div>
    </div>

    <div>
        <div class="card  card--flex-overlap  card--pink">
            <figure class="card__figure">
                <img src="https://picsum.photos/480/240?random=6" alt="" />
            </figure>

            <div class="card__content">
                <a href="#" class="link--stretched">
                    <div class="title">
                        <h3 class="h5">Research into poverty in Stoke-on-Trent gets new funding boost</h3>
                    </div>
                </a>
                <p><span class="tag">blog</span></p>
                <p>
                    <time class="strong">9 April 2024</time>
                </p>
                <p>University's pioneering work with community researchers will help inform new model of community research.</p>
            </div>
        </div>
    </div>
</div>

<hr />

<div class="grid  grid-3-cols">

    <div>
        <div class="card  card--flex-overlap  card--red">
            <figure class="card__figure">
                <img src="https://picsum.photos/480/480?random=7" alt="" />
            </figure>

            <div class="card__content">
                <a href="#" class="link--stretched">
                    <div class="title">
                        <h3 class="h5">Accommodation</h3>
                    </div>
                </a>
                <p>Where you live is a big part of your student experience and where you’ll make friends for life.</p>
            </div>
        </div>
    </div>

    <div>
        <div class="card  card--flex-overlap  card--maroon">
            <figure class="card__figure">
                <img src="https://picsum.photos/480/480?random=8" alt="" />
            </figure>

            <div class="card__content">
                <a href="#" class="link--stretched">
                    <div class="title">
                        <h3 class="h5">Staffordshire Campus</h3>
                    </div>
                </a>
                <p>There’ll be times when you need some support - and we’re here for you. There are many student support services - from welfare to money matters.</p>
            </div>
        </div>
    </div>

    <div>
        <a class="card  card--flex-overlap  card--red" href="">
            <figure class="card__figure">
                <img src="https://picsum.photos/480/240?random=9" alt="" />
            </figure>

            <div class="card__content">
                <div class="title">
                    <h3 class="h5">Stoke-on-Trent Open Day Programme</h3>
                </div>
                <p><span class="tag">publication</span></p>
                <p>Download our open day PDF (2.8Mb)</p>
                <b class="button">Download</b>
            </div>
        </a>
    </div>
</div>
<p>Add a class of <code>card--flex-overlap</code> to have a card's figure and content size themselves intrinsically with flexbox, <strong>when using a highlighted title</strong> style. The title is overlapped on the figure (when the figure sits above). This is particularly useful for cards in single columns (like search results), and grids of 3, which look awkwardly large otherwise at a tablet-ish width, when they fall to a single column.</p>

<hr/>

<div class="card  card--flex-overlap  card--maroon">
  <figure class="card__figure">
    <img src="https://picsum.photos/720/360?random=1" alt=""/>
  </figure>

  <div class="card__content">
    <div class="title">
      <h3 class="h4"><a href="" class="">{{ placeholderHeadline }}</a></h3>
    </div>
    <p>{{ placeholderPara2 }}</p>
  </div>
</div>

<div class="card  card--flex-overlap  card--pink">
  <figure class="card__figure">
    <img src="https://picsum.photos/720/360?random=2" alt=""/>
  </figure>

  <div class="card__content">
    <a href="" class="link--stretched">
      <div class="title">
        <h3 class="h4">{{ placeholderHeadline2 }}</h3>
      </div>
    </a>
    <p>{{ placeholderPara3 }}</p>
  </div>
</div>

<div class="card  card--flex-overlap  card--red">

  <div class="card__content">
    <a href="" class="link--stretched">
      <div class="title">
        <h3 class="h4">{{ placeholderHeadline2 }}</h3>
      </div>
    </a>
    <p>Example without a figure image</p>
    <p>{{ placeholderPara1 }}</p>
  </div>
</div>

<hr/>


<div class="grid  grid-2-cols  grid-4-cols@desktop">

  <div>
    <div class="card  card--flex-overlap  card--maroon">
      <figure class="card__figure  card__figure--video">
        <img src="https://picsum.photos/480/240?random=3" alt=""/>
      </figure>

      <div class="card__content">
        <a href="#" class="link--stretched">
          <div class="title">
            <h3 class="h5">Research into poverty in Stoke-on-Trent gets new funding boost</h3>
          </div>
        </a>
        <p><span class="tag">video</span></p>
        <p>Adding a class of <code>card__figure--video</code> to a figure will give it a play icon overlay.</p>
      </div>
    </div>
  </div>

  <div>
    <div class="card  card--flex-overlap  card--slate">
      <figure class="card__figure">
        <img src="https://picsum.photos/480/240?random=4" alt=""/>
      </figure>

      <div class="card__content">
        <a href="#" class="link--stretched">
          <div class="title">
            <h3 class="h5">Graduates give Staffs Uni star role in popular app</h3>
          </div>
        </a>
        <p><span class="tag">blog</span></p>
        <p>
          <time class="strong">11 February 2024</time>
        </p>
        <p>University's pioneering work with community researchers will help inform new model of community research.</p>
      </div>
    </div>
  </div>

  <div>
    <div class="card  card--flex-overlap  card--red">
      <figure class="card__figure">
        <img src="https://picsum.photos/480/240?random=5" alt=""/>
      </figure>

      <div class="card__content">
        <a href="#" class="link--stretched">
          <div class="title">
            <h3 class="h5">“It's Beautiful to be Old” Professor tells Vatican</h3>
          </div>
        </a>
        <p><span class="tag">blog</span></p>
        <p>
          <time class="strong">10 August 2024</time>
        </p>
        <p>University's pioneering work with community researchers will help inform new model of community research.</p>
      </div>
    </div>
  </div>

  <div>
    <div class="card  card--flex-overlap  card--pink">
      <figure class="card__figure">
        <img src="https://picsum.photos/480/240?random=6" alt=""/>
      </figure>

      <div class="card__content">
        <a href="#" class="link--stretched">
          <div class="title">
            <h3 class="h5">Research into poverty in Stoke-on-Trent gets new funding boost</h3>
          </div>
        </a>
        <p><span class="tag">blog</span></p>
        <p>
          <time class="strong">9 April 2024</time>
        </p>
        <p>University's pioneering work with community researchers will help inform new model of community research.</p>
      </div>
    </div>
  </div>
</div>

<hr/>

<div class="grid  grid-3-cols">

  <div>
    <div class="card  card--flex-overlap  card--red">
      <figure class="card__figure">
        <img src="https://picsum.photos/480/480?random=7" alt=""/>
      </figure>

      <div class="card__content">
        <a href="#" class="link--stretched">
          <div class="title">
            <h3 class="h5">Accommodation</h3>
          </div>
        </a>
        <p>Where you live is a big part of your student experience and where you’ll make friends for life.</p>
      </div>
    </div>
  </div>

  <div>
    <div class="card  card--flex-overlap  card--maroon">
      <figure class="card__figure">
        <img src="https://picsum.photos/480/480?random=8" alt=""/>
      </figure>

      <div class="card__content">
        <a href="#" class="link--stretched">
          <div class="title">
            <h3 class="h5">Staffordshire Campus</h3>
          </div>
        </a>
        <p>There’ll be times when you need some support - and we’re here for you. There are many student support services - from welfare to money matters.</p>
      </div>
    </div>
  </div>

  <div>
    <a class="card  card--flex-overlap  card--red" href="">
      <figure class="card__figure">
        <img src="https://picsum.photos/480/240?random=9" alt=""/>
      </figure>

      <div class="card__content">
        <div class="title">
          <h3 class="h5">Stoke-on-Trent Open Day Programme</h3>
        </div>
        <p><span class="tag">publication</span></p>
        <p>Download our open day PDF (2.8Mb)</p>
        <b class="button">Download</b>
      </div>
    </a>
  </div>
</div>
  • Content:
    $card__internal-spacing: $spacing-sm;
    
    .card {
      // $theme-colours: see __vars/colours
    
      display: block;
      position: relative;
      --accent-color: #{$primary};
      margin-bottom: $spacing-xl;
    
      @include clearfix;
    
      a:not(.button) {
        text-decoration: none;
        border-bottom: none;
    
        &:hover {
          text-decoration: underline;
        }
      }
    
      p {
        margin-bottom: $card__internal-spacing;
      }
    
      &__content {
        padding: 0 calc(#{$card__internal-spacing} + 2.5%);
    
        > :first-child {
          margin-top: 0;
        }
    
        > :last-child {
          margin-bottom: 0;
        }
      }
    
      &__title {
        margin-top: 0;
        margin-bottom: $spacing-md;
    
        a {
          color: #{$primary};
          color: var(--accent-color);
        }
      }
    
      &__figure {
        &--video {
          position: relative;
          background-color: #CCC;
    
          &:hover {
            cursor: pointer;
          }
    
          &:after {
            content: '';
            position: absolute;
            width: $spacing-4xl;
            height: $spacing-4xl;
            max-width: 50%;
            max-height: 50%;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: url('#{$image-theme-directory-icon}/icon-play-circle-neutral-light.svg') no-repeat center center;
            background-size: contain;
            z-index: 1;
            pointer-events: none;
          }
    
          & img {
            color: #CCC;
          }
        }
      }
    
      &__clearing-flag {
        background-color: $red;
        color: #FFF;
        padding: 0.25rem 0.5rem;
        font-weight: 400;
      }
    
      // CG: A card across multiple days will clash with the one below if there is no image, so add a minimum height if necessary
      &--multiple-days {
        min-height: 210px;
      }
    
      //--  Child elements affected by accent colour
    
      .blockquote__title {
        color: var(--accent-color);
      }
    
      .meta--inline-dd,
      .meta--inline {
        dd:before {
          color: var(--accent-color);
        }
      }
    
      //--  ACCENT THEMES
      @each $name, $value in $card-accent-colors {
        &--#{$name} {
          --accent-color: #{$value};
    
          &.card--ksp .card--ksp__icon-container > .icon svg * {
            @if (choose-contrast-color($value) == white) {
              stroke: white!important;
              fill: white!important;
              color: white;
            }
            @else {
              stroke: black!important;
              fill: black!important;
              color: black;
            }
          }
        }
      } 
    
      @each $name, $value in $theme-colours {
        &--#{$name} {
          --accent-color: #{$value};
    
          svg {
              fill: #{$value};
          }
        }
      }
    
      &--bg-offwhite {
        background-color: $grey-50-pc;
    
        & .card__content {
          padding: $card__internal-spacing * 2;
        }
    
        & .card__figure {
          margin-bottom: 0;
        }
      }
    }
    
    a.card {
      text-decoration: none;
    
      .card__title {
        color: #{$primary};
        color: var(--accent-color);
      }
    
      &:hover {
        color: $text-color;
    
        .card__title {
          text-decoration: underline;
        }
      }
    }
    
    //--  VARIANTS
    
    .card--flex {
      display: flex;
      flex-wrap: wrap;
      align-items: flex-start;
      flex-direction: row-reverse;
    
      .card__figure {
        flex: 1 1 33%;
      }
    
      .card__content {
        flex: 99 1 17.5em;
      }
    }
    
    .card--flex-overlap {
      display: flex;
      flex-wrap: wrap;
      align-items: flex-start;
      flex-direction: row-reverse;
      padding-bottom: $spacing-sm;
    
      .card__figure {
        flex: 1 1 33%;
      }
    
      .card__content {
        flex: 99 1 17.5em;
      }
    
      .card__figure {
        margin-bottom: -#{$spacing-sm};
      }
    }
    
    // In Razor, attach background colours only if there are more than one
    .card--testimonial {
      padding-bottom: $card__internal-spacing;
    
      & .cite {
        margin-bottom: $spacing-2xs;
        color: var(--accent-color);
      }
    
      @each $name, $value in $testimonial-card-colors {
        &.card--bg-#{$name} {
          background-color: map_get($value, "background");
          color: map_get($value, "color");
          padding: $spacing-2xs $spacing-lg $spacing-lg $spacing-lg;
    
          @media (min-width: map_get($breakpoint-stages, 'mobile-wide')) {
            & .card__content {
              padding-left: 0;
              margin-left: -$spacing-4xl;
            }
          }
    
          & .blockquote__prose  {
            margin-top: 0;
          }
    
          & q {
            color: map_get($value, "color");
          }
    
          & strong, & .cite { 
            color: map_get($value, "contrast-color");
          }
    
          & .blockquote__figure img {
            border-bottom: 0;
          }
        }
      }
    
      .blockquote__figure img {
        border-bottom: $spacing-2xs solid var(--accent-color);
      }
    }
    
    .card--pullquote {
      padding-bottom: $card__internal-spacing;
      margin-left: 5%;
    
      &:before {
        content: '';
        display: block;
        float: left;
        width: 5%;
        margin-right: 1%;
        height: 0;
        padding-bottom: 5%;
        margin-left: -5%;
        background: url('#{$image-theme-directory-icon}/icon-quote-primary.svg') no-repeat center center;
        background-size: contain;
      }
    
      // These themes need to be updated 'manually' for now, as we're using an svg,
      // and I can't think of a clever way to update dynamically based on the accent var
      // something using inline SVG use/fill, or a mask?
      // Don't forget to add the SVG to the filesystem!
    
      @each $name, $value in $card-accent-colors {
        &.card--#{$name} {
          &:before {
            background: transparent url('#{$image-theme-directory-icon}/icon-quote-#{$name}.svg') no-repeat center center;
            background-size: contain;
          }
        }
      }
    }
    
    .card--contact {
      ul.list--inline {
        padding-left: 1.5em;
        li a {
          text-decoration: none!important;
        }
        .icon {
          font-size: 1.5rem;
        }
      }
      ul.list--icon-bullets {
        li a {
          text-decoration: none!important;
          border-bottom: 1px solid $grey--light
        }
      }
    }
    
    .card--course {
      border-left: $border-accent-width solid $primary;
      border-color: var(--accent-color);
    }
    
    .card--result {
      // this exists, but doesn't need anything specific (yet)
    }
    
    .card--profile {
      padding: $spacing-md;
    
      /* Needs:
        grey and teal
        grey and burgundy
        teal and neon
        burgundy and neon
      */
      @each $name, $value in $profile-card-themes {
        &.card--#{$name} {
          background: map_get($value, "background");
          border-bottom: $spacing-2xs solid map_get($value, "accent-color");
          margin-left: $spacing-2xl;
    
          @if (choose-contrast-color(map_get($value, "background")) == white) {
            color: white;
    
            & .button {
              color: white;
            }
          }
    
          & .button--outline {
            color: map_get($value, "accent-color");
            border-color: map_get($value, "accent-color");
    
            &:hover {
              color: black;
            }
          }
    
          & .title, & .strong {
            color: map_get($value, "accent-color");
          }
        }
      }
    
      &.card--flex {
        flex-direction: row;
      }
    
      & .card__figure {
        margin-left: auto;
        margin-right: auto;
        max-width: 15rem;
    
        /*@media (max-width: (map_get($breakpoint-stages, 'tablet-wide'))) {
          flex: 1 1 25%;
        }*/
      }
    
      & .title {
        margin-bottom: 0;
      }
    }
    
    .card--ksp {
      color: $neutral--primary;
      border-left: none;
    
      &__icon-container {
        display: table;
        border-radius: 50%;
        background-color: var(--accent-color);
      }
    
      & .icon {
        display: table-cell;
        vertical-align: middle;
        width: 2em;
        height: 2em;
        
        img, svg {
          width: 60%;
          height: 60%;
          vertical-align: unset;
        }
    
        svg {
          fill: var(--accent-color);
        }
      }
    
      & .card__title {
        color: inherit;
        margin-top: $card__internal-spacing * 2;
      }
    
      &.card--light {
    
        & .card__title, & p {
          color: white;
        }
    }
    }
    
    .card--event {
      margin-left: $spacing-4xl;
    
      .card__figure {
        margin-bottom: #{$spacing-xs};
      }
    
      .card__date {
        position: absolute;
        top: 0;
        left: -$spacing-4xl;
        width: $spacing-4xl;
        @include typescale('xs');
        padding: $spacing-sm 0;
        color: white;
        background: $primary;
        background: var(--accent-color);
        line-height: 1;
        text-align: center;
        box-sizing: border-box;
      }
    
      .link--stretched h2 {
        color: $teal;
      }
    
      a.link--stretched:hover h2 {
        color: $red;
      }
    
      .card__day {
        display: block;
        font-weight: 500;
        @include typescale('xl');
    
        @media (min-width: map_get($breakpoint-stages, 'mobile-wide')) {
          @include typescale('3xl');
        }
      }
    
      .card__date-separator {
        display: block;
        font-weight: 500;
        @include typescale('xl');
        padding: $spacing-xs 0;
      }
    
      @media (min-width: (map_get($breakpoint-stages, 'tablet-wide') + 5rem)) {
        margin-left: $spacing-5xl;
    
        .card__date {
          left: -$spacing-5xl;
          width: $spacing-5xl;
        }
    
        .card__day {
          @include typescale('5xl');
        }
      }
    }
    
    .card--with-logo {
      border: 0;
    
      & .card__content {
        max-width: 80%;
        background-color: $grey-50-pc;
        padding: $spacing-xl $spacing-xl $spacing-2xl $spacing-xl;
      }
    
      & a:hover,& a:hover .card__content p {
        text-decoration: none;
      }
    
      & img {
        float: right;
        margin-top: -$spacing-xl;
        max-height: 100px;
        box-shadow: 2px 2px 5px rgba(0,0,0,0.5);
        background: #FFF;
      }
    
    }
    
    .card__video.card__figure {
      @media (max-width: map_get($breakpoint-stages, 'mobile-wide')) {
        padding-bottom: 50%;
        position: relative;
        height: 0;
      }
      & iframe {
        width: 100%;
        height: 100%;
        @media (max-width: map_get($breakpoint-stages, 'mobile-wide')) {
          padding-bottom: 50%;
          position: absolute;
        }
      }
    }
    
    .card--virtual-tour {
        min-height: 20rem;
        position: relative;
        overflow: hidden;
        flex-direction:  row;
        background-color: $grey-50-pc;
        background-size: cover!important;
        background-position: center center;
        background-repeat: no-repeat;
        border-left: none;
        border: $spacing-4xs solid $teal;
    
        @media (max-width: map_get($breakpoint-stages, 'mobile-wide')) {
          background-image: none!important;
          background-color: $grey-50-pc!important;
        }
    
        .card__content {
          max-width: 25rem;
          z-index: 1;
          background: rgba(255,255,255,0.9);
          padding: $spacing-xl $spacing-xl $spacing-xs $spacing-xl;
    
          @media (min-width: map_get($breakpoint-stages, 'mobile-wide')) {
            margin-top: $spacing-2xl;
            margin-left: $spacing-2xl;
          }
    
          > .title {
            color: $teal;
          }
    
          > :last-child {
            margin-top: $spacing-md;
          }
        }
    }
    
    .grid-2-cols\@tablet {
      &  .card__video {
        &.card__figure {
          padding-bottom: 50%;
          position: relative;
          height: 0;
          & iframe {
            position: absolute;
          }
        }
      }
    }
  • URL: /components/raw/card/_cards.scss
  • Filesystem Path: src\components\card\_cards.scss
  • Size: 11.1 KB