<div class="hero--event-detail text-content">
<h1 class="hero--event-detail__headline">Event Title Lorem Ipsum Dolor Sit</h1>
<div class="hero--event-detail__media">
<img src="../../img/Article_Hero.jpg" alt="">
</div>
</div>
<div class="hero--event-detail text-content">
<h1 class="hero--event-detail__headline">{{ headline }}</h1>
<div class="hero--event-detail__media">
<img src="{{ image.src }}" alt="{{ image.alt }}">
</div>
</div>
{
"breadcrumbs": {
"links": [
{
"url": "https://www.iastate.edu/",
"name": "Home"
},
{
"url": "https://www.iastate.edu/",
"name": "Parent Page"
},
{
"url": "https://www.iastate.edu/",
"name": "Kitchen Sink"
}
]
},
"title": "Kitchen Sink",
"image": {
"src": "../../img/Article_Hero.jpg",
"alt": ""
},
"subnav": {
"items": [
{
"url": "https://www.iastate.edu/",
"title": "Parent Page",
"current": false,
"children": []
},
{
"url": "https://www.iastate.edu/",
"title": "Sibling Page Title Lorem Ipsum",
"current": false,
"children": []
},
{
"url": "https://www.iastate.edu/",
"title": "Sibling Page Title Lorem Ipsum",
"current": false,
"children": []
},
{
"url": "https://www.iastate.edu/",
"title": "Sibling Page Title Lorem Ipsum",
"current": false,
"children": []
},
{
"url": "https://www.iastate.edu/",
"title": "Kitchen Sink",
"current": true,
"children": [
{
"url": "https://www.iastate.edu/",
"title": "Child Page Title Lorem",
"current": false,
"children": []
},
{
"url": "https://www.iastate.edu/",
"title": "Child Page Title Lorem",
"current": false,
"children": []
}
]
},
{
"url": "https://www.iastate.edu/",
"title": "Sibling Page Title Lorem Ipsum",
"current": false,
"children": []
}
]
},
"subnav_horizontal": {
"items": [
{
"url": "https://www.iastate.edu/",
"title": "Level 2 Page Lorem Ipsum"
},
{
"url": "https://www.iastate.edu/",
"title": "Level 2 Page Lorem"
},
{
"url": "https://www.iastate.edu/",
"title": "Level 2 Page Lorem Ipsum Dolor Sit Amet"
},
{
"url": "https://www.iastate.edu/",
"title": "Level 2 Page Lorem"
},
{
"url": "https://www.iastate.edu/",
"title": "Level 2 Page Lorem Ipsum Dolor"
}
]
},
"headline": "Event Title Lorem Ipsum Dolor Sit"
}
.hero {
margin-bottom: rem(126);
position: relative;
@include media-breakpoint-up(lg) {
padding-top: rem(40);
}
@include media-breakpoint-up(xl) {
margin-bottom: 0;
}
&.hero--top-level-lp {
@include media-breakpoint-up(lg) {
padding-top: rem(25);
margin-bottom: rem(65);
margin-right: rem(-110);
}
}
&.hero--no-media,
&.hero--top-level-lp--no-media {
@include media-breakpoint-up(xl) {
margin-bottom: rem(40);
}
}
}
.hero__title {
margin: 0;
font-size: rem(36);
font-weight: 600;
@include media-breakpoint-up(sm) {
font-size: rem(50);
font-weight: 400;
}
@include media-breakpoint-up(md) {
font-size: rem(70);
line-height: (93 / 70);
}
@include media-breakpoint-up(lg) {
margin: rem(25) 0 rem(10) 0;
}
}
.hero__text-wrap {
margin-bottom: rem(10);
@include media-breakpoint-up(xl) {
margin-left: rem(-108);
}
.hero--top-level-lp & {
margin-top: rem(24);
margin-bottom: rem(20);
@include media-breakpoint-up(lg) {
margin-bottom: rem(10);
}
}
}
.hero__media {
@extend %responsive-img;
margin: 0 rem(-11) rem(30) rem(-36);
@include media-breakpoint-up(md) {
margin-left: rem(-70);
margin-right: rem(130);
}
@include media-breakpoint-up(xl) {
margin-left: rem(-190);
margin-right: rem(-110);
}
.hero--top-level-lp & {
margin-right: rem(-36);
@include media-breakpoint-up(md) {
margin-right: rem(-70);
}
@include media-breakpoint-up(xl) {
margin-right: 0;
}
}
&:before {
padding-top: 37.4%;
}
}
.hero__subnav-wrap {
z-index: 2;
max-width: rem(342);
position: absolute;
@include media-breakpoint-up(xl) {
top: 0;
right: rem(-70);
left: initial;
max-width: rem(278);
}
@include media-breakpoint-up(xl) {
right: rem(-298);
}
// top level lp horizontal version
.hero--top-level-lp & {
@include media-breakpoint-up(lg) {
top: initial;
right: initial;
left: 0;
position: relative;
margin-top: rem(-53);
margin-bottom: rem(58);
max-width: none;
}
@include media-breakpoint-up(xl) {
right: initial;
margin-right: rem(-109);
}
}
.hero--top-level-lp--no-media & {
margin-top: rem(30);
}
}
.hero--news-article,
.hero--event-detail {
position: relative;
background-color: $white;
padding-top: rem(50);
@include media-breakpoint-up(md) {
margin-inline: rem(-35);
}
@include media-breakpoint-up(lg) {
padding-top: rem(70);
}
@include media-breakpoint-up(xl) {
margin-inline: rem(-158) rem(-251);
}
@include media-breakpoint-up(xxl) {
margin-inline: rem(-110) rem(-207);
}
}
.hero--news-article__headline,
.hero--event-detail__headline {
color: $iastate-red;
.hero--news-article--cyclone-story &,
.hero--event-detail--cyclone-story & {
width: 75%;
}
}
.hero--news-article__subhead {
font-family: $typeface-sans-serif;
font-weight: 700;
color: $iastate-maroon;
font-size: rem(21);
line-height: (30 / 21);
margin: 0;
position: relative;
&:after {
content: "";
position: absolute;
bottom: rem(-25);
width: rem(50);
border-bottom: rem(2) solid $iastate-gold;
left: 0;
}
.hero--news-article--cyclone-story &,
.hero--event-detail--cyclone-story & {
width: 75%;
}
}
.hero--news-article__cyclone-stories-logo {
position: absolute;
right: 0;
top: rem(60);
@include media-breakpoint-up(lg) {
top: rem(120);
}
}
.hero--news-article__date {
//letter-spacing: rem(1);
//text-transform: uppercase;
color: $grey4;
margin-top: rem(20);
}
.hero--news-article__attribution {
margin-top: rem(20);
}
.hero--news-article__date + .hero--news-article__attribution {
margin-top: rem(10);
}
.hero--news-article__media,
.hero--event-detail__media {
margin-top: rem(40);
@extend %responsive-img;
&:before {
padding-top: 56.27%;
}
}
This is a custom component (no class prefix in place as it does not conflict with bootstrap)
default
for the main site (which places the subnav
in the top right on desktop), and the --top-level-lp
variant for for top-level landing pages (contains a modified version of the subnav
below the main image)hero__media
element will be inline img
and is sized using the css object-fit
property (a polyfill is included for older browsers)image
field is optionalbreadcrumb
and subnav
index.scss
file as @import "../components/hero/hero";
<main>
element: <div class="off-canvas">
<div class="max-bound">
{% include "@site-header" with header %}
<main id="main-content">