今天完成的事:
完成了轮播图的制作。
由于css无法做到js一样的精准操控,所有某些效果是无法实现的,比如轮播图和指示符一起变。
但基本的轮播效果是可以实现的。
首先创建一个容器作为轮播图的容器,同时由于要实现滑动切换,所以内部需要有一个装载所有待切换内容的子容器
由于子容器中的内容是左右切换的,需要将内容左右排列开
<div id="demo" class=" slide" >
<!-- 指示符 -->
<ul class="indicator">
<li ></li>
<li ></li>
<li ></li>
<li ></li>
</ul>
<!-- 轮播图片 -->
<div class="slideshow">
<img src="../picture/0d9944f1.png">
<img src="../picture/9c2b8d09.png">
<img src="../picture/d4511b09.png">
<img src="../picture/14378235.png">
</div>
<!-- 左右切换按钮 -->
<a class="slide-left" href="#demo" >
<span class=""></span>
</a>
<a class="slide-right" href="#demo" >
<span class=""></span>
</a>
</div>
轮播图内每一页内容的宽高应该相同,且等于主容器slide宽高
slideshow的宽高必然有一个大于外部主容器,overflow属性应该设置为hidden。
.slide {
position: relative;
overflow: hidden;
// 轮播图片
.slideshow {
position: relative;
width: 400vw;
left: 0;
animation: circulation 8s linear infinite;
font-size: 0;
img {
width: 100vw;
float: left;
}
}
在浏览器中打开页面,就可以看到不带轮播效果的静态页面了,除了第一张图片,其他图片都不可见
轮播效果说到底就是一个动画效果,而通过css3的新属性 animation 就可以自定义一个动画来达到轮播图效果。
animation: name duration timing-function delay iteration-count direction
name: 动画名
duration: 动画持续时间 设置为0则不执行
timing-function:动画速度曲线
delay:动画延迟开始时间 设置为0则不延迟
iteration-count:动画循环次数 设置为infinite则无限次循环
direction:是否应该轮流反向播放动画 normal 否 alternate 是
要实现轮播,本质上是使内部承载内容的子容器 slideshow 进行位移,从而使不同位置的内容一次展示在用户眼前
// 创建loop动画规则
// 轮播4张,总耗时8s,单张应为2s(25%)
// 单张切换动画耗时500ms,停留1500ms
@keyframes circulation {
0% {transform: translate(0, 0);}
15% {transform: translate(0, 0);}///* 停留1500ms */
25% {transform: translate(-25%, 0);} ///* 切换500ms 位移-25% */
35% {transform: translate(-25%, 0);}
50% {transform: translate(-50%, 0);}
65% {transform: translate(-50%, 0);}
85% {transform: translate(-75%, 0);}
95% {transform: translate(-75%, 0);}
100% {transform: translate(0, 0);}
}
明天计划的事:
完成一到两个页面
遇到的问题:
暂无
收获 :
对轮播图的实现原理有了深入了解
评论