No notes defined.

<div class="slab  slab--has-skyline-mask">
    <div class="slab__inner">
        <div class="wrap">

            <header class="tickertape">
                <h2 class="tickertape__highlight">
                    Slab: Skyline Mask
                </h2>
            </header>

            <div class="tic">
                <div class="tic__title">
                    <h3 class="text-color-tertiary">TIC: Title, Image, Content!</h3>
                    <p class="strong">Garry Winogrand | American, 1928-1984</p>
                </div>

                <figure class="tic__figure">
                    <img class="tic__img" src="https://designs.hs.to/ssw/img/card/2.jpg" alt="" />
                </figure>

                <div class="tic__content">
                    <p>Lipsum has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
                    <p>Lipsum has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
                    <p><strong>Note that</strong> the content area is contained but <strong>not floated</strong>, so if longer than the image, it will <strong>wrap around the image like this</strong> (resize to smaller screen to see more accentuated), but still be subject to the standard <strong>maximum
                            line-length</strong>.</p>
                    <a href="#" class="button  button--xs  button--tertiary">All SSW artwork</a>
                </div>
            </div>
        </div>
    </div>
</div>

<div class="slab  slab--bg-img  slab--has-skyline-mask">
    <div class="slab__bg">
        <img class="slab__bgImg  slab__bgImg--tint" src="https://designs.hs.to/ssw/img/banner/3.jpg" />
    </div>
    <div class="slab__inner">
        <div class="wrap">
            <div class="tickertape  tickertape--bg-secondary">
                <h2 class="tickertape__highlight">Slab: Skyline Mask with background image</h2>
            </div>

            <p class="intro">This is feasibly possible as an option, as even, is an image without a tint with the skyline mask. Whether this is a bit over the top though? Who can say.</p>

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

                    <div class="card ">
                        <div class="card__flag">
                            May 6, 2023
                        </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>
                        </div>
                    </div>
                </div>
                <div>

                    <div class="card ">
                        <div class="card__flag">
                            October 18, 2021
                        </div>

                        <div class="card__flex">

                            <div class="card__content">
                                <h3 class="h5 card__title">
                                    <a href="" class="pointyLink  link--stretched-before">
                                        Ranked Number 1 in the Nation Since 2012
                                    </a>
                                </h3>

                            </div>
                        </div>
                    </div>
                </div>
                <div>

                    <div class="card ">
                        <div class="card__flag">
                            December 1, 2024
                        </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>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
<div class="slab  slab--has-skyline-mask">
	<div class="slab__inner">
		<div class="wrap">
			{% include '@tickertape' with { text: 'Slab: Skyline Mask' } %}
			{% include '@tic' %}
		</div>
	</div>
</div>


<div class="slab  slab--bg-img  slab--has-skyline-mask">
	<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="slab__inner">
		<div class="wrap">
			<div class="tickertape  tickertape--bg-secondary">
				<h2 class="tickertape__highlight">{{ _self.title ? _self.title : 'Slab' }} with background image</h2>
			</div>

			<p class="intro">This is feasibly possible as an option, as even, is an image without a tint with the skyline mask. Whether this is a bit over the top though? Who can say.</p>

			<div class="grid  grid--spaced  grid-3-cols">
				{% for i in 1..3 %}
				<div>
					{% include '@card' with {
						link: '#'
					} %}
				</div>
				{% endfor %}
		</div>
	</div>
</div>
  • Content:
    @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;
    		}
    	}
    }
    
  • URL: /components/raw/slab/_slabs.scss
  • Filesystem Path: web/themes/custom/um-ssw/components/slab/_slabs.scss
  • Size: 5.7 KB