一种纯HTML+CSS实现的轮播图,但由于没有JS不支持实现用户进行左右滑动。
DOM结构搭建
1 | <div class="slide-container middle"> |
1 | .slide-container { |
图片并排显示
可以看到正常文档流图片是向下排列的,如何让他们实现并排显示呢,可能会想到使用float,但是最简单的办法是使用flex布局。给slide-wrap
容器指定为Flex布局。
1 | .slide-wrap { |
为什么slide-wrap
要给予500%的宽度,因为该列有五张图片,一张图片刚好占满一个父容器。
实现点击轮播效果
不用JS如何实现轮播图切换效果呢?我们先实现轮播图的小点点。
1 | .navigation { |
1 | <!-- inner slide-wrap --> |
为什么使用label来实现指示器呢,这里就关键用到了它的for属性。
1 | <!-- inner slide-wrap --> |
1 | input[name="r"] { |
使用label和input:radio进行关联起来后,点击的label就相当于选择了某个单选按钮,默认第一个单选按钮为选中状态,切换到第二个时,我们将第一张图向容器左边挪百分之20%的宽度(因为一共有五张图,一张图就占20%的宽度),就可以看到切花成了第二张图,以此类推。看看代码的实现:
1 | #r1:checked ~ .s1 { |
点击指示器切换轮播图就完成啦。
自动轮播效果
1 | .s1 { |
CSS3的动画属性就不过多介绍了,但是自动轮播和点击是相冲突的,但是这是一种纯CSS轮播图的一种实现思路,不需JS的实现。挺好玩的。
源码已放置GitHub:https://github.com/hackycy/Html-Css-Carousel