发表于: 2018-05-28 21:52:29

2 684


今天完成的事情:完成任务15,并用css3写了个轮播图
明天计划的事情:学习js
遇到的问题:暂无
收获:

如何利用css3动画效果写一个轮播图

注:

此种写法是点击式的轮播,非自动循环的轮播图

 

需要用到的动画属性有transtiontransform两个

Html代码分四大块

轮播图主体、轮播图按钮、轮播图指示器

因为写的是按钮式的所以还需要一组单选按钮input

具体代码如下所示

    <div class="carousel-container">       

        <ul class="carousel my-carousel">

            <input class="carousel__activator" type="radio" id="A" name="activator" checked="checked" />

            <div class="carousel__controls">

                <label class="carousel__control carousel__control--backward" for="E"></label>

                <label class="carousel__control carousel__control--forward" for="B"></label>

            </div>

            <li class="carousel__slide">

                <h1>A</h1>

            </li>

            <div class="carousel__indicators">

                <label class="carousel__indicator" for="A"></label>

            </div>

        </ul>

    </div>

 

核心的思想是:

图片采用background的属性将其放在背景中,并赋予其background-sizecoverbackground-positioncenter

对所有的

<li class="carousel__slide">

                <h1>A</h1>

            </li>

设置成绝对定位,让其位置重叠在一起,然后加 opacity: 0;让其不可见

在采用labelinputradio的伪类checked,来更改元素的opacity的值为1

 

注意:为了防止元素溢出,一定要给相框<div class="carousel-container">加上一个overflowhidden

指示器部分采用label标签和input进行绑定,并设置相应的transition属性便可以形成一个淡入淡出的轮播图效果

 

二.做一个从右边往左移动的轮播图

这个主要是利用

TransformX这个属性

设定每个轮播的的transformx的值让所有的图片排成一列,就行浮动贴靠的一样,

然后,

最关键的部分是在轮播图的外面加一个容器,给容器设置一个相应的transformx的值

此时容器会像左边移动

我理解的是将容器将排成一行的图片整个向左拉动,拉动时屏幕上的图片也就跟着切换了,所以需要根据每个input来设置容器相应的移动距离

所以一定要将相框设置成overflowhidden

 

 

三.做一个可以缩放效果的轮播图

采用transform: scalexy;

Scale是缩放

scale并不支持百分比值和normal关键字,只能是数值。而且,还能是负数(zoom只能是正数)。

默认以元素中心位置来缩放

如果要改变缩放的样式

可以采用transform-origin来改变元素基点的位置

 

注意和zoom的区别:

1.zoom的缩放是相对于左上角的;而scale默认是居中缩放;

2.Zoom的缩放改变了元素占据的空间大小;而scale的缩放占据的原始尺寸不变,页面布局不会发生变化;

3.对文字的缩放规则不一致。zoom缩放依然受限于最小12像素中文大小限制;而scale就是纯粹的对图形进行比例控制,文字50%原来尺寸。




返回列表 返回列表
评论

    分享到