No notes defined.
<div class="slab slab--bg-img slab--has-ripples slab--has-overlay-right">
<div class="slab__bg slab__bg--has-overlay-right">
<img class="slab__bgImg" src="https://designs.hs.to/ssw/img/banner/3.jpg" />
</div>
<div class="wrap">
<div class="slab__inner">
<div class="slab__overlay">
<header class="tickertape">
<h2 class="tickertape__highlight">
Slab: w/ Overlay Right (with image overlay)
</h2>
</header>
<div class="card ">
<div class="card__flag">
October 1, 2024
</div>
<div class="card__flex">
<div class="card__content">
<h3 class="h5 card__title">
<a href="" class="pointyLink link--stretched-before">
Community Conversation: The Role of Cultural Competence in Mental Health Care
</a>
</h3>
<div class="card__description">
<p>What's the program really like? Where is your field placement? What do social work students do for fun? Join an MSW student as well as other prospective MSW students for a live webchat about the School of Social Work.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="slab slab--bg-img slab--has-ripples slab--has-overlay-right">
<div class="slab__bg">
<img class="slab__bgImg slab__bgImg--tint" src="https://designs.hs.to/ssw/img/banner/1.jpg" />
</div>
<div class="wrap">
<div class="slab__inner">
<div class="slab__overlay">
<header class="tickertape tickertape--bg-secondary">
<h2 class="tickertape__highlight">
Slab: w/ Overlay Right (with image tint)
</h2>
</header>
<div class="card ">
<div class="card__flag">
October 9, 2022
</div>
<div class="card__flex">
<div class="card__content">
<h3 class="h5 card__title">
<a href="" class="pointyLink link--stretched-before">
A Collective of Researchers, Teachers and Practitioners
</a>
</h3>
<div class="card__description">
<p>What's the program really like? Where is your field placement? What do social work students do for fun? Join an MSW student as well as other prospective MSW students for a live webchat about the School of Social Work.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="slab slab--bg-img slab--has-ripples slab--has-overlay-right">
<div class="slab__bg slab__bg--has-overlay-right">
<img class="slab__bgImg" src="https://designs.hs.to/ssw/img/banner/{{ random(7) }}.jpg"/>
</div>
<div class="wrap">
<div class="slab__inner">
<div class="slab__overlay">
{% include '@tickertape' with {
text: (_self.title ? _self.title : 'Slab') ~ ' (with image overlay)'
} %}
{% include '@card' with {
link: '#',
description: '<p>What\'s the program really like? Where is your field placement? What do social work students do for fun? Join an MSW student as well as other prospective MSW students for a live webchat about the School of Social Work.</p>'
} %}
</div>
</div>
</div>
</div>
<div class="slab slab--bg-img slab--has-ripples slab--has-overlay-right">
<div class="slab__bg">
<img class="slab__bgImg slab__bgImg--tint" src="https://designs.hs.to/ssw/img/banner/{{ random(7) }}.jpg"/>
</div>
<div class="wrap">
<div class="slab__inner">
<div class="slab__overlay">
{% include '@tickertape' with {
text: (_self.title ? _self.title : 'Slab') ~ ' (with image tint)',
background: 'secondary'
} %}
{% include '@card' with {
link: '#',
description: '<p>What\'s the program really like? Where is your field placement? What do social work students do for fun? Join an MSW student as well as other prospective MSW students for a live webchat about the School of Social Work.</p>'
} %}
</div>
</div>
</div>
</div>
@use "sass:math";
.slab {
$wave-height: 3vw;
$wave-y-padding: calc(math.div($wave-height, 1) + #{$spacing-xl});
$slab-padding: $spacing-3xl;
position: relative;
--bg-top: white;
--bg-bottom: white;
margin-bottom: $wave-height;
@include clearfix;
&:where(.slab + .slab:not(:where(.slab--has-ripple-top, .slab--has-ripples, [class*='slab--bg-gradient']))) {
margin-top: -$spacing-xl;
}
&:where(.slab + :where(.slab--has-ripple-top, .slab--has-ripples)) {
margin-top: -#{math.div($wave-height, 2)};
}
&:where(.slab--has-ripple-bottom, .slab--has-ripples) + :where(.slab--has-rainbow-ripple) {
margin-top: -$wave-height*1.75;
}
&:where([class*='slab--bg-img'] + :where([class*='slab--bg-img'])) {
margin-top: -#{math.div($wave-height, 1)};
}
&:where(.slab--has-ripple-bottom, .slab--has-ripples) + :where(.slab--has-ripple-top, .slab--has-ripples) {
margin-top: -$wave-height*2;
}
// Elements
&__title {
margin-top: 0;
margin-bottom: $spacing-xl;
}
&__inner {
position: relative;
padding: $spacing-3xl 0 0;
z-index: 1;
&--padded {
padding: calc($spacing-3xl + 3vmin) 0 3vmin;
}
}
&__bg {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 0;
background: rgba(mix($blue--bold, $navy--dark, 25%), 1);
&--black {
background: black;
}
}
&__bgImg {
width: 100%;
height: 100%;
object-fit: cover;
&--tint {
opacity: 0.15;
mix-blend-mode: luminosity;
}
}
// Layouts
@at-root {
[class*='slab--has-overlay'] {
.slab__inner {
display: flex;
align-items: center;
width: 100%;
}
.slab__overlay {
width: 100%;
--text-color: white;
--link-hover-color: white;
}
[class*='slab__bg--has-overlay'] {
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(100deg,
rgba(black, 0.65) 20%,
rgba(black, 0.5) math.div($wrap-width, 2),
rgba(black, 0)
);
@media (min-width: math.div($wrap-width, 1.5)) {
background: linear-gradient(100deg,
rgba(black, 0.65) 20%,
rgba(black, 0.5) 60%,
rgba(black, 0)
)
}
}
}
}
}
&--has-overlay-left {
// add this to the root to align the content (inner)
.slab__overlay {
max-width: math.div($wrap-width, 2);
margin-right: 10%;
justify-self: flex-start;
}
}
&__bg--has-overlay-left {
// also add this for an image overlay (if not using a tint)
}
&--has-overlay-right {
// add this to the root to align the content (inner)
.slab__inner {
justify-content: flex-end;
}
.slab__overlay {
max-width: math.div($wrap-width, 2);
justify-self: flex-end;
@media (min-width: 30rem) {
margin-left: 20%;
}
}
[class*='slab__bg--has-overlay'] {
&::before {
background: linear-gradient(-100deg,
rgba(black, 0.65) 20%,
rgba(black, 0.5) math.div($wrap-width, 2),
rgba(black, 0)
);
@media (min-width: math.div($wrap-width, 1.5)) {
background: linear-gradient(-100deg,
rgba(black, 0.65) 20%,
rgba(black, 0.5) 60%,
rgba(black, 0)
)
}
}
}
}
&__bg--has-overlay-right {
// also add this for an image overlay (if not using a tint)
}
// Backgrounds
@at-root {
[class*='slab--bg-gradient'],
&--has-skyline-mask {
background: linear-gradient(to bottom, var(--bg-top), var(--bg-bottom, var(--bg-top)) min(15rem, 100%));
color: var(--color);
}
}
&--bg-gradient-grey,
&--has-skyline-mask {
--bg-top: #{$grey--lightest};
--bg-bottom: white;
}
&--bg-grey {
background: $grey--lightest;
}
&--bg-offwhite {
background: $offwhite;
}
&--bg-img {
--color: white;
--text-color: white;
--link-hover-color: white;
.slab__inner {
color: var(--color);
min-height: 50vmin;
}
}
// Ripples
&--has-ripple-top {
@include mask-ripple-top();
.slab__inner {
padding: $wave-y-padding 0 $slab-padding;
}
}
&--has-ripple-bottom {
@include mask-ripple-bottom();
.slab__inner {
padding: $slab-padding 0 $wave-y-padding;
}
}
&--has-ripples {
@include mask-ripples();
.slab__inner {
padding: $wave-y-padding 0;
}
}
&--has-rainbow-ripple {
&::before {
content: '';
position: absolute;
top: math.div($wave-height, 6);
display: block;
aspect-ratio: 170 / 7;
width: 100%;
background: center center / 100% no-repeat url('#{$assets-directory}/img/ripple-rainbow-thick.svg');
z-index: 1;
@media (min-width: 45rem) {
background: center center / 100% no-repeat url('#{$assets-directory}/img/ripple-rainbow.svg');
}
}
.slab__inner {
padding: calc(math.div($wave-height, 0.75) + #{$spacing-xl}) 0 $slab-padding;
}
}
&--has-skyline-ripple {
&::before {
content: '';
position: absolute;
top: math.div($wave-height, 6);
display: block;
aspect-ratio: 170 / 29;
width: 100%;
background: center center / 100% no-repeat url('#{$assets-directory}/img/ripple-skyline.svg');
z-index: 1;
@media (min-width: 45rem) {
background: center center / 100% no-repeat url('#{$assets-directory}/img/ripple-skyline.svg');
}
}
.slab__inner {
padding: calc(math.div($wave-height, 0.5) + #{$spacing-xl}) 0 $slab-padding;
}
}
&--has-skyline-mask {
mask-image: url('#{$assets-directory}/img/mask-skyline.svg'), linear-gradient(black, black);
mask-position: top, bottom;
mask-size: 105% $wave-height*2.5, 100% calc(100% - $wave-height*2.5 + 2px); // 2px is nasty but overlaps rounding errors resulting in a gap in mask images
mask-repeat: no-repeat;
.slab__inner {
padding: calc(math.div($wave-height, 0.5) + #{$spacing-xl}) 0 $slab-padding;
}
}
}