<div class="three-icon-teaser">
<div class="three-icon-teaser__inner">
<div class="three-icon-teaser__headline">
<h2 class="headline headline--display-2">Das bieten wir
</h2>
</div>
<div class="three-icon-teaser__carousel">
<div class="three-icon-teaser__carousel-stage">
<div class="three-icon-teaser__carousel-inner">
<div class="three-icon-teaser__items">
<div class="three-icon-teaser__item">
<div class="three-icon-teaser__item-image"><img class="image" alt="Alt Text sieht anders aus" src="/images/dummy/dummy-icon-teaser-01.svg" />
</div>
<div class="three-icon-teaser__item-content">
<div class="three-icon-teaser__item-headline">
<h3 class="headline headline--display-3">Flexible Arbeitsmodelle
</h3>
</div>
<p class="three-icon-teaser__item-text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr.</p>
</div>
</div>
<div class="three-icon-teaser__item">
<div class="three-icon-teaser__item-image"><img class="image" alt="Alt Text sieht anders aus" src="/images/dummy/dummy-icon-teaser-02.svg" />
</div>
<div class="three-icon-teaser__item-content">
<div class="three-icon-teaser__item-headline">
<h3 class="headline headline--display-3">Familienfreundliche Angebote
</h3>
</div>
<p class="three-icon-teaser__item-text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr.</p>
</div>
</div>
<div class="three-icon-teaser__item">
<div class="three-icon-teaser__item-image"><img class="image" alt="Alt Text sieht anders aus" src="/images/dummy/dummy-icon-teaser-03.svg" />
</div>
<div class="three-icon-teaser__item-content">
<div class="three-icon-teaser__item-headline">
<h3 class="headline headline--display-3">Firmen Fitness
</h3>
</div>
<p class="three-icon-teaser__item-text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr.</p>
</div>
</div>
</div>
</div>
</div>
<div class="three-icon-teaser-button-wrap">
<a class="button button--blue button--outline" id="button-65b2" href="#">Button
</a>
</div>
</div>
</div>
</div>
-
//- Prepare attr object
attr = attr || {};
attr.class = classList(attr.class);
//- Render Three Icon Teaser
.three-icon-teaser&attributes(attr)
.three-icon-teaser__inner
if headline
.three-icon-teaser__headline
!= include('@headline--display-2', {text: headline, level: 2})
if items
.three-icon-teaser__carousel
.three-icon-teaser__carousel-stage
.three-icon-teaser__carousel-inner
.three-icon-teaser__items
each item in items
.three-icon-teaser__item&attributes(teaserAttrs)
if item.image
.three-icon-teaser__item-image
!= include('@image', {image: item.image, copyright: item.copyright})
.three-icon-teaser__item-content
if item.headline
.three-icon-teaser__item-headline
!= include('@headline--display-3', {text: item.headline, level: 3})
if item.text
p.three-icon-teaser__item-text #{item.text}
if button
.three-icon-teaser-button-wrap
!= include('@button--blue-outline', button)
{
"headline": "Das bieten wir",
"items": [
{
"image": "/images/dummy/dummy-icon-teaser-01.svg",
"headline": "Flexible Arbeitsmodelle",
"text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr."
},
{
"image": "/images/dummy/dummy-icon-teaser-02.svg",
"headline": "Familienfreundliche Angebote",
"text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr."
},
{
"image": "/images/dummy/dummy-icon-teaser-03.svg",
"headline": "Firmen Fitness",
"text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr."
}
],
"button": {
"text": "Button"
}
}
import h from 'hyperscript';
import { lory } from 'lory.js';
import icon from '../../../javascripts/utils/icon';
const createImagesLoadedPromise = $images =>
Promise.all(
$images.map($image => (
new Promise(
(resolve) => {
if ($image.complete && $image.naturalWidth) {
resolve();
return;
}
$image.addEventListener('load', resolve);
$image.addEventListener('error', resolve);
}
)
))
);
const initCarousel = ($el) => {
function carouselListener(mediaQuery) {
const $inner = $el.querySelector('.three-icon-teaser__carousel-inner');
const $stage = $el.querySelector('.three-icon-teaser__carousel-stage');
let carousel = '';
if (mediaQuery.matches) {
const $images = $inner.querySelectorAll('img');
const imagesLoadedPromise = createImagesLoadedPromise($images);
document.querySelectorAll('.three-icon-teaser__carousel-controls').forEach(($controls) => {
$controls.remove();
});
const $carouselControls = h('.three-icon-teaser__carousel-controls');
const $prevControl = h('.three-icon-teaser__carousel-control.three-icon-teaser__carousel-control--prev.three-icon-teaser__carousel-control--disabled',
h(
'button.three-icon-teaser__carousel-control-button',
{ attrs: { 'aria-label': 'Vorherige Prüfsiegel anzeigen' } },
icon({ icon: 'arrow-thin-left' }),
),
);
const $nextControl = h('.three-icon-teaser__carousel-control.three-icon-teaser__carousel-control--next',
h(
'button.three-icon-teaser__carousel-control-button',
{ attrs: { 'aria-label': 'Weitere Prüfsiegel anzeigen' } },
icon({ icon: 'arrow-thin-right' }),
),
);
$carouselControls.appendChild($prevControl);
$carouselControls.appendChild($nextControl);
$inner.appendChild($carouselControls);
carousel = lory($stage, {
slidesToScroll: 1,
autoplayTime: 5000,
classNameFrame: 'three-icon-teaser__carousel-inner',
classNameSlideContainer: 'three-icon-teaser__items',
classNamePrevCtrl: 'three-icon-teaser__carousel-control--prev',
classNameNextCtrl: 'three-icon-teaser__carousel-control--next',
classNameDisabledPrevCtrl: 'three-icon-teaser__carousel-control--disabled',
classNameDisabledNextCtrl: 'three-icon-teaser__carousel-control--disabled',
});
imagesLoadedPromise.then(
() => {
carousel.setup();
}
);
} else if (carousel) {
carousel.destroy();
$inner.querySelectorAll('.three-icon-teaser__carousel-control').remove();
}
}
window.addEventListener('resize', carouselListener);
// Create media query for Carousel switch
const carouselMediaQuery = window.matchMedia('(max-width: 885px)');
// Add listener for changes in viewport
carouselMediaQuery.addListener(carouselListener);
// First run
carouselListener(carouselMediaQuery);
};
document.querySelectorAll('.three-icon-teaser__carousel').forEach(initCarousel);
.three-icon-teaser {
padding-bottom: 5rem;
padding-top: 4rem;
@include mq($from: l) {
padding-bottom: 6rem;
padding-top: 5rem;
}
}
.three-icon-teaser__inner {
@include make-container();
@include mq($until: l) {
padding-right: 0;
}
}
.three-icon-teaser__carousel-stage {
@include mq($until: l) {
overflow: hidden;
}
}
.three-icon-teaser__carousel-inner {
@include mq($until: l) {
overflow-x: visible;
}
}
.three-icon-teaser__headline {
margin-bottom: 3rem;
text-align: center;
@include mq($from: l) {
margin-bottom: 4rem;
}
}
.three-icon-teaser-button-wrap,
.three-icon-teaser__carousel-controls,
.three-icon-teaser__item-image {
align-items: center;
display: flex;
}
.three-icon-teaser-button-wrap,
.three-icon-teaser__carousel-controls {
justify-content: center;
}
.three-icon-teaser-button-wrap {
margin-top: 4.5rem;
.button {
min-width: 24rem;
}
@include mq($from: l) {
margin-top: 5.5rem;
}
}
.three-icon-teaser__carousel-controls {
margin: 3rem 0 0;
@include mq($from: l) {
display: none;
}
}
.three-icon-teaser__carousel-control-button {
align-items: center;
background-color: $color-blue-light;
border-radius: 100%;
color: #fff;
display: inline-flex;
height: 4rem;
justify-content: center;
width: 4rem;
}
.three-icon-teaser__carousel-control {
margin: 0 0.5rem;
transition: opacity $default-transition-duration;
&--disabled {
opacity: 0.25;
}
}
.three-icon-teaser__items {
display: flex;
@include mq($from: l) {
justify-content: center;
margin-left: -4rem;
margin-right: -4rem;
transform: translateX(0) !important;
}
}
.three-icon-teaser__item {
flex: 1 0 75%;
max-width: 75%;
padding-left: 3rem;
padding-right: 3rem;
width: 100%;
@include mq($from: m) {
flex: 1 0 80%;
max-width: 45%;
}
@include mq($from: l) {
max-width: 25.5rem;
padding-left: 4rem;
padding-right: 4rem;
}
}
.three-icon-teaser__item-image {
align-items: flex-end;
margin-bottom: 2.5rem;
min-height: 13rem;
text-align: center;
img {
max-height: 13rem;
max-width: 13rem;
width: auto;
@include mq($from: l) {
max-height: 15rem;
max-width: 15rem;
}
}
.image__copyright {
right: calc(50% - 2.4rem);
transform: translateX(-50%);
}
.tooltip__popup {
min-width: 18rem;
}
@include mq($from: l) {
justify-content: center;
min-height: 14rem;
}
}
.three-icon-teaser__item-content {
:last-child {
margin-bottom: 0;
}
}
.three-icon-teaser__item-headline {
margin-bottom: 1.5rem;
}
.three-icon-teaser__item-text {
font-size: 1.5rem;
line-height: 2.2rem;
}
.overview-page__container {
.three-icon-teaser__inner {
padding-left: 0;
padding-right: 0;
}
.three-icon-teaser__carousel {
@include mq($until: m) {
margin-right: -1rem;
}
}
}
There are no notes for this item.