发表于: 2019-07-23 23:18:35

1 1005


今天完成的事:

完成了轮播图的制作。

由于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);}

}


明天计划的事:

完成一到两个页面

遇到的问题:

暂无

收获 :

对轮播图的实现原理有了深入了解


返回列表 返回列表
评论

    分享到