An experiment to create a completely responsive vertical slider with thumbnails using only CSS, and retaining the aspect ratio of the images.
-
-
Save califat/fb68a9598f1e33d900ee5495072c616d to your computer and use it in GitHub Desktop.
Responsive CSS vertical slider with thumbnails
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div class="container"> | |
<ul class="slides"> | |
<li id="slide1"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw1.jpg" alt="" /></li> | |
<li id="slide2"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw2.jpg" alt="" /></li> | |
<li id="slide3"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw3.jpg" alt="" /></li> | |
<li id="slide4"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw4.jpg" alt="" /></li> | |
<li id="slide5"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw5.jpg" alt="" /></li> | |
</ul> | |
<ul class="thumbnails"> | |
<li> | |
<a href="#slide1"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw1.jpg" /></a> | |
</li> | |
<li> | |
<a href="#slide2"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw2.jpg" /></a> | |
</li> | |
<li> | |
<a href="#slide3"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw3.jpg" /></a> | |
</li> | |
<li> | |
<a href="#slide4"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw4.jpg" /></a> | |
</li> | |
<li> | |
<a href="#slide5"><img src="https://cdn.rawgit.com/huijing/filerepo/gh-pages/lw5.jpg" /></a> | |
</li> | |
</ul> | |
</div> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
html { | |
box-sizing: border-box; | |
height: 100%; | |
} | |
*, | |
*::before, | |
*::after { | |
box-sizing: inherit; | |
margin: 0; | |
padding: 0; | |
} | |
.container { | |
display: flex; | |
justify-content: center; | |
} | |
.thumbnails { | |
display: flex; | |
flex-direction: column; | |
line-height: 0; | |
li { | |
flex: auto; | |
} | |
a { | |
display: block; | |
} | |
img { | |
width: 30vmin; | |
height: 20vmin; | |
object-fit: cover; | |
object-position: top; | |
} | |
} | |
.slides { | |
overflow: hidden; | |
} | |
.slides, | |
.slides li { | |
width: 75vmin; | |
height: 100vmin; | |
} | |
.slides img { | |
height: 100vmin; | |
object-fit: cover; | |
object-position: top; | |
} | |
.slides li { | |
position: absolute; | |
z-index: 1; | |
} | |
@keyframes slide { | |
0% { | |
transform: translateY(-100%); | |
} | |
100% { | |
transform: translateY(0%); | |
} | |
} | |
.slides li:target { | |
z-index: 3; | |
-webkit-animation: slide 1s 1; | |
} | |
@keyframes hidden { | |
0% { | |
z-index: 2; | |
} | |
100% { | |
z-index: 2; | |
} | |
} | |
.slides li:not(:target) { | |
-webkit-animation: hidden 1s 1; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment