Global Elements
2
Footer Header Services Strip Services Tabs
Components
36
Card Carousel Cards Grid Content Overlap Content Strip Cta Bar Featured Article Featured Blocks Featured Expert Featured Pods Featured Tabs Form Block Full Screen Carousel Full Width Content Heading Strip Hero Hero Featured Links List Location Tabs Logo Carousel Map Block People Grid Quote Block Reviews Carousel Reviews Tabs Service Tiles Services Strip Services Tabs Staggered Content Sticky Accordion Sticky List Sub Navigation Team Carousel Team Filters Team Strip Tile Carousel Tile Grid

Tile Grid

Benefits and training

We offer a comprehensive benefits package which includes: 

Generous annual holiday
01
Private medical insurance
02
Employee awards
03
Pension
04
Life Assurance
05
Free breakfasts
06
Profit share scheme
07
Discretionary bonus scheme
08
Active social committee with monthly events
09
Long service awards
10
Mortgage advice service
11
Financial advice
12
Recruitment bounty
13
Cycle to work scheme
14
MetLife’s Wellbeing Hub
15
Access to free online learning portals
16
Field
Field Type
Field Name
Instructions
Block Data
tab
Heading Type
select
heading_type
Heading Text
text
heading_text
Copy
wysiwyg
copy
Buttons
repeater
buttons_list
-- Button
link
button
Tiles
repeater
tiles
-- Text
text
text
Employee Benefits
true_false
employee_benefits
Toggle this option to display the employee benefits saved under "Global Options"
Block Meta
tab
ID
text
block_id
Block Classes
text
block_classes
Block Theme
select
block_theme
Background Colors
select
background_colors
Padding Top
select
padding_top
Padding Bottom
select
padding_bottom
Margin Top
select
margin_top
Margin Bottom
select
margin_bottom

				
@import "../../resources/scss/util/colours";
@import "../../resources/scss/util/variables";
@import "../../resources/scss/util/mixins";

.block-tile-grid {
	background-color: $veryLightBlue;
	padding-top: rem-calc(80);
	padding-bottom: rem-calc(80);
	overflow: hidden;

	.heading {
		@include fluid-type(28, 34);
	}

	&__buttons {
		margin-top: rem-calc(10);
	}

	&__tiles {
		margin-top: rem-calc(30);
	}

	&__tile {
		background-color: $navy;
		color: $white;
		padding: rem-calc(24);
		font-size: rem-calc(24);
		height: 100%;
		min-height: rem-calc(170);
		display: flex;
		align-items: center;
		position: relative;
	}

	&__number {
		position: absolute;
		right: rem-calc(10);
		bottom: rem-calc(10);
		font-family: $font-family-heading;
		font-size: rem-calc(64);
		line-height: normal;
		pointer-events: none;
		opacity: 0.1;
	}

	.swiper {
		overflow: visible;
	}

	.swiper-wrapper {
		@include bp($lg) {
			margin-left: rem-calc(-15);
			margin-right: rem-calc(-15);
			transform: none !important;
			flex-wrap: wrap !important;
			box-sizing: border-box !important;
			width: auto !important;
		}
	}

	.swiper-slide {
		margin-bottom: rem-calc(30);

		@include bp($lg) {
			width: calc(25% - 24px) !important;
			margin: rem-calc(0 12 24) !important;
		}

		&:nth-of-type(odd) {
			.block-tile-grid__tile {
				background-color: $blue;
			}
		}
	}

	.swiper-slide {
		height: auto;
	}

	.e-carousel__navigation {
		margin-left: 0;
		margin-top: rem-calc(50);
	}
}
class TileGrid {
	/**
	 * Create and initialise objects of this class
	 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor
	 * @param {object} block
	 */
	constructor() {
		this.blocks = document.querySelectorAll('.block-tile-grid');
		this.init();
	}

	/**
	 * Example function to run class logic
	 * Can access `this.block`
	 */
	init() {
		this.blocks.forEach((block) => {
			const blockCarousel = block.querySelector(".swiper");
			const navNext = block.querySelector(".e-carousel__next");
			const navPrev = block.querySelector(".e-carousel__prev");

			const swiper = new Swiper(blockCarousel, {
				slidesPerView: 1.5,
				spaceBetween: 24,
				navigation: {
					nextEl: navNext,
					prevEl: navPrev,
				},
				breakpoints: {
					768: {
						slidesPerView: 2.5,
					},
					992: {
						slidesPerView: 4,
					},
					// 992: {
					// 	slidesPerView: 5,
					// }
				}
			});
		});

	}
}

new TileGrid();
Page Title
Page Type
Page URL

Animation / States

  • As the user scrolls to this component the copy and each tile will be lazyloaded fade in one by one
  • On hover, if the item has a featured image assigned to it, it will fade in within the background

External Libraries

  • ScrollTrigger (GSAP)

Notes (Design / Dev / SEO)

None