dev / assets /css /component /carousel.css
AstraOS's picture
Upload 51 files
64aaca8 verified
raw
history blame
6.2 kB
/*
<!----- V container ----->
<div class='has-carousel'>
<!--- H container --->
<div class='carousel'>
<div>---- <div>---- <div>---- <div>---- <div>----
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
---</div> | | ---</div> | | ---</div>
---</div> ---</div>
</div>
<div>
*/
.carousel {
position: relative;
width: 100%;
overflow: hidden;
}
.carousel__nav {
display: flex;
position: absolute;
right: 2rem;
bottom: 2rem;
justify-content: flex-end;
z-index: 1;
width: calc(100% - 4rem);
font-size: var(--small);
}
.carousel__nav > ul {
overflow-x: auto;
white-space: nowrap;
}
.carousel__viewport nav a {
display: flex;
z-index: 2;
font-size: var(--small);
}
.carousel__viewport {
display: flex;
height: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
scroll-behavior: smooth;
scroll-snap-type: x mandatory;
scrollbar-width: none;
}
ul.carousel__viewport {
border: none;
padding: 0;
}
.carousel__viewport > div,
.carousel__viewport > section,
ul.carousel__viewport > li,
.carousel__viewport__slide {
display: flex;
position: relative;
flex-direction: row;
flex-shrink: 0;
flex-wrap: wrap;
align-items: center;
width: 100%;
}
ul.carousel__viewport > li {
position: relative;
margin: 1ex;
border-radius: 1ex;
background-size: cover;
width: 16rem;
height: 12.8rem;
}
ul.carousel__viewport > li > a {
position: absolute;
top: -1px;
right: 0;
bottom: 0;
left: -1px;
border-radius: 0.82ex;
overflow: clip;
color: var(--fg);
font-size: var(--small);
font-weight: bold;
}
ul.carousel__viewport > li:hover,
ul.carousel__viewport > li:focus-within {
--tsf: scale(0.96);
opacity: 0.86;
}
ul.carousel__viewport > li > a > span {
display: inline-block;
position: relative;
border-radius: 0 0 1ex 0;
background-color: var(--bg);
padding: 0.7ex 2ex;
max-width: 12.8rem;
}
ul.carousel__viewport > li > a > span::before,
ul.carousel__viewport > li > a > span::after {
position: absolute;
border-top-left-radius: 1ex;
box-shadow: 0 -1ex 0 0 var(--bg);
background-color: transparent;
width: 1ex;
height: 2ex;
content: '';
}
ul.carousel__viewport > li > a > span::before {
bottom: -2ex;
left: 0;
}
ul.carousel__viewport > li > a > span::after {
top: 0;
right: -1ex;
}
.carousel__viewport__slide__cover {
flex: 1 1 40%;
padding: 1.5rem 0 5rem 1.5rem;
height: 100%;
max-height: 1024px;
}
.carousel__viewport__slide__content {
margin-bottom: auto;
padding: 0 2rem;
width: 100%;
max-height: calc(100% - 5rem);
overflow-y: auto;
}
.carousel__viewport__slide__content h1.section-title {
margin: 0 !important;
padding: var(--smallskip) 0 1ex;
font: italic var(--Large) var(--rm), serif;
}
.carousel__viewport__slide__content h2 {
font-size: var(--large);
}
.carousel__viewport__slide__content h3 {
font-size: var(--normalsize);
}
.carousel__viewport__slide__content p {
max-width: var(--canonic);
}
.carousel__viewport__slide__content .footnotes p {
max-width: unset;
}
.carousel__viewport__slide__cover + .carousel__viewport__slide__content {
flex: 1 1 60%;
margin-bottom: 5rem;
}
.carousel__viewport__slide__cover + .carousel__viewport__slide__content p {
width: unset;
}
.carousel__viewport__slide__cover img {
border-radius: 1ex;
width: 100%;
height: 100%;
object-fit: cover;
}
/* 2 item */
#list-tags > nav a,
.carousel__viewport__slide > nav a {
display: inline-flex;
padding: 1ex;
gap: 1ex;
}
.carousel__viewport__slide > nav a {
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--fg);
}
.pagination .lfill a::after,
#list-tags > nav a::after,
.carousel__viewport__slide:first-child > nav a::after {
/* -> */
--tsf: rotate(90deg);
font-family: base-ui;
content: '\e902';
}
.carousel__viewport .rfill {
display: inline-block !important;
}
#list-taxonomy > .carousel__viewport {
flex-direction: column;
height: calc(14.8rem + 2ex);
overflow-y: auto;
scroll-snap-type: y mandatory;
}
#list-taxonomy #list-series,
#list-taxonomy #list-categories {
padding: 1rem 0;
}
#list-series ul.carousel__viewport,
#list-categories ul.carousel__viewport,
#list-author ul.carousel__viewport {
scrollbar-width: thin;
}
#list-categories a:hover::after {
position: absolute;
right: 1ex;
bottom: 1ex;
border-radius: 0.7ex;
background: var(--bg);
padding: 0.7ex 0;
width: calc(3.2rem - 2ex);
text-align: center;
text-overflow: ellipsis;
white-space: nowrap;
content: attr(data-post-counter);
}
@media only screen and (max-width: 960px) {
aside.carousel {
width: unset;
}
}
@media only screen and (max-width: 640px) {
.carousel__nav {
right: 0;
bottom: 0;
background: var(--bg);
width: unset;
}
.carousel__viewport__slide > .carousel__nav {
position: sticky;
position: -webkit-sticky;
}
aside .carousel__viewport > div,
aside .carousel__viewport > section,
aside .carousel__viewport__slide {
display: block;
height: 100%;
overflow-y: auto;
}
.carousel__viewport__slide__cover {
padding: unset;
height: unset;
}
.carousel__viewport__slide__cover img {
border-radius: 0;
padding: 0 1rem;
height: unset;
}
.carousel__viewport__slide__content {
padding: 0 1rem 5rem;
max-height: unset;
}
.carousel__viewport__slide__cover + .carousel__viewport__slide__content {
margin-bottom: 1rem;
}
.carousel__nav > ul.rounded {
padding: 1ex 0;
width: calc(100vw - 2rem);
text-align: right;
}
}