@leofavre/flip-card-component
Version:
A flip card web component.
62 lines (53 loc) • 1.32 kB
JavaScript
import { html } from '@leofavre/elmnt';
export default () => html`
<style>
:host {
height: auto ;
margin: 0 ;
padding: 0 ;
background: transparent ;
}
.flip-card--wrapper {
position: relative;
display: block;
width: 100%;
height: 0;
padding-bottom: calc(1 / (var(--flip-card-proportion, 1/1)) * 100%);
perspective: var(--flip-card-perspective, 1200px);
}
.flip-card--surface {
position: absolute;
width: 100%;
height: 100%;
transform-style: preserve-3d;
transition: transform var(--flip-card-speed, 0.32s) ease-in-out;
}
:host([revealed]) .flip-card--surface {
transform: rotateY(180deg);
}
.flip-card--side {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
overflow: hidden;
border-radius: var(--flip-card-border-radius, 0px);
border: var(--flip-card-border, none);
}
.flip-card--side-back {
display: flex;
width: 100%;
height: 100%;
background: var(--flip-card-background, grey);
}
.flip-card--side-front {
transform: rotateY(-180deg);
}
</style>
<div class="flip-card--wrapper">
<div class="flip-card--surface">
<div class="flip-card--side flip-card--side-front"><slot></slot></div>
<div class="flip-card--side flip-card--side-back"></div>
</div>
</div>
`;