@zeix/ui-element
Version:
UIElement - a HTML-first library for reactive Web Components
111 lines (96 loc) • 2 kB
CSS
module-carousel {
display: flex;
position: relative;
overflow: hidden;
margin-block-end: var(--space-l);
border-radius: var(--space-s);
.slides {
display: flex;
align-items: center;
width: 100%;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
overscroll-behavior-x: none;
}
[role="tabpanel"] {
width: 100%;
height: 100%;
text-align: center;
scroll-snap-align: start;
flex: 0 0 100%;
& h3 {
display: block;
}
& a[href].anchor {
justify-content: center;
padding: 0;
}
.slide-content {
width: 80%;
margin: 0 auto 0;
padding-bottom: var(--space-xl);
text-align: left;
}
}
> nav {
> button {
position: absolute;
top: 2%;
height: 96%;
border: 0;
border-radius: var(--space-xs);
background: transparent;
padding: var(--space-m);
font-size: var(--font-size-xl);
color: var(--color-text);
opacity: var(--opacity-dimmed);
transition: opacity var(--transition-short) var(--easing-inout);
cursor: pointer;
&:hover,
&:active,
&:focus {
opacity: var(--opacity-solid);
background-color: rgba(0, 0, 0, 0.05);
}
&:active {
background-color: rgba(0, 0, 0, 0.1);
}
&.prev {
left: 1%;
}
&.next {
right: 1%;
}
}
[role="tablist"] {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
display: flex;
justify-content: center;
padding-block: var(--space-s);
[role="tab"] {
width: var(--space-l);
height: var(--space-l);
border: 0;
padding: 0;
font-size: var(--font-size-l);
line-height: var(--line-height-xs);
border-radius: 50%;
color: var(--color-text);
background-color: transparent;
opacity: var(--opacity-translucent);
transition: opacity var(--transition-short) var(--easing-inout);
cursor: pointer;
&:hover {
opacity: var(--opacity-dimmed);
}
&[aria-selected="true"] {
opacity: var(--opacity-solid);
}
}
}
}
}