container@containerscroll-state- scroll-snap
Lorem ipsum
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.
Lorem ipsum
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque. Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.
Lorem ipsum
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.
Lorem ipsum
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.
Lorem ipsum
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.
<section>
<article>
<div>
<img src="image.jpg" alt height="" width="">
<h3>Lorem ipsum</h3>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.</p>
...
</div>
</article>
<article>
<div>
<img src="image.jpg" alt height="" width="">
<h3>Lorem ipsum</h3>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.</p>
...
</div>
</article>
<article>
<div>
<img src="image.jpg" alt height="" width="">
<h3>Lorem ipsum</h3>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.</p>
...
</div>
</article>
<article>
<div>
<img src="image.jpg" alt height="" width="">
<h3>Lorem ipsum</h3>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.</p>
...
</div>
</article>
<article>
<div>
<img src="image.jpg" alt height="" width="">
<h3>Lorem ipsum</h3>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quae, neque.</p>
...
</div>
</article>
</section>
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference){
:root{--transition:.25s}
}
section {
overflow: auto hidden;
scroll-snap-type: x mandatory;
scroll-snap-stop: always;
max-width:80vw;
display: grid;
grid-template-columns:repeat(5, minmax(360px,1fr));
gap:10lh;
padding-inline: 5lh;
padding-block: 1lh;
article {
container-type: scroll-state;
scroll-snap-align: center;
display: grid;
gap: 1ch;
background-color: white;
border-radius: 1lh;
p {
line-clamp: 3;
font-size: 1.25rem;
font-weight: 200;
line-height: 1.5;
}
img{
display:block;
object-fit:cover;
width:10rem;
aspect-ratio: 1;
border-radius:1e3px
}
>div{
padding:1lh;
transition: calc(var(--transition)*2);
border:2px solid transparent;
border-radius: inherit;
box-shadow: 0px 0px 1px rgba(3, 7, 18, 0.02),
0px 0px 3px rgba(3, 7, 18, 0.02),
0px 0px 6px rgba(3, 7, 18, 0.02),
0px 0px 11px rgba(3, 7, 18, 0.02),
0px 0px 17px rgba(3, 7, 18, 0.02),
0px 0px 24px rgba(3, 7, 18, 0.02);
@container scroll-state(snapped: x) {
border-color:#3ea7ea;
box-shadow: 0px 0px 1px rgba(3, 7, 18, 0.02),
0px 0px 5px rgba(3, 7, 18, 0.02),
0px 0px 11px rgba(3, 7, 18, 0.02),
0px 0px 20px rgba(3, 7, 18, 0.02),
0px 0px 31px rgba(3, 7, 18, 0.02),
0px 0px 44px rgba(3, 7, 18, 0.02);
}
}
div > * {
scale:1;
place-self:center;
transition: calc(var(--transition)*2);
@container not scroll-state(snapped: x) {
opacity: .25;
scale:.95
}
}
}
}