原文:css3实践之图片轮播(Transform,Transition和Animation)

  楼主喜欢追求视觉上的享受,虽常以牺牲性能无法兼容为代价却也乐此不疲。本文就通过一个个的demo演示来简单了解下css3下的Transform,Transition和Animation。

  本文需要实现效果:(请用chrome打开

  1. 图片轮播
  2. 图片自动轮播

Transform

  根据我的理解,transform和width、height、background一样,都是dom的属性,不同的是它是css3旗下的,比较屌,能够对原来的dom元素进行移动、缩放、转动、拉长或拉伸,跟canvas上的某些api神似,这么说来transform好像能干些js才能干的事。

  transform分2D变换和3D变换,w3school中有很好的介绍和例子,具体请猛戳:CSS3 2D 转换  CSS3 3D 转换

  为了方便查找,我把w3school上的截图在这里保存一份:

Transition

  transition的解释是过渡,我的理解是css之间的变换,但是这个变换很屌很平滑,类似动画。举个栗子,一开始某个dom的类是classA,通过某种操作(比如被点击了)后变成了classB,如果没有transition,类之间的变换是很快的,机械般瞬间完成,但是有了transition,这便会是一个很缓和平滑的过程。

  我们通过demo来讲解transition的使用方式。

  写好如下的html文件:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
</style>
<img src='http://hanzichi.github.io/img/img0.png' />

  打开来是非常简单的一张图,加上css:

img {-webkit-transition: all 1s ease-in-out 0s;
}img:hover {-webkit-transform: rotate(360deg)scale(0.5, 0.5);opacity: 0;
}

  效果请猛戳:transition变换 (ps:所有demo都没有做兼容 请用chrome打开

  是否很简单?demo中,你只需设定好图片(img标签)原先的属性和hover后的属性,中间的变换过程全由transition搞定!而transition加在某个元素下(demo的transition加在img标签下),仿佛设置了一个监听器,一旦该元素的属性值即将要发生变化,就会自动检查transition中的设定的属性,一旦发现相匹配,则进行平滑的过渡。

  transition有4个属性,语法:transition: property duration timing-function delay  从前到后4个属性依次可理解成“过渡动画变换的属性”、“过渡花费时间”、“过渡过程的速度变化”和“过渡开始前的等待时间”(默认值:all 0 ease 0 前两个是必须的 后两个可省略)。

  如果不是所有属性都要进行平滑过渡,或者各属性过渡的时间、速度等设置各有需求,可以把要过渡的属性用逗号隔开,demo可写成:

img {-webkit-transition: -webkit-transform 1s ease-in-out 0s,opacity 1s ease-in-out 1s;
}img:hover {-webkit-transform: rotate(360deg)scale(0.5, 0.5);opacity: 0;
}

  如果非得把transition的四个属性分开来写,可以这样:

img {-webkit-transition-property: -webkit-transform, opacity;-webkit-transition-duration: 1s;-webkit-transition-timing-function: ease-in-out;-webkit-transition-delay: 0s;
}

  我把后三个属性放在一起只写了一个值(因为值一样),你也可以像property一样分开来写用逗号隔开。

  这里再介绍下timing-function的取值。六大取值:(还是盗图w3cschool)

  小结:一般transition应用在dom的class变换中,可先行写好机械的变换,然后添加过渡效果。

Animation

  Animation的解释是动画,加强版的transition。

  如果说transition能实现某些js效果,animation就更像是js了。类似于写一个canvas特效,特效总共比如说多少时间,我们能规定在什么时候该出现什么样的场景,而各个场景间的转换则完全由css3本身负责,而keyframes好比定义了一个js方法。

  主要应用在某个元素需要进行连续的n次css变换。一个简单的demo如下:animation动画

  我们在@keyframes 中创建动画时,请把它捆绑到某个选择器,否则不会产生动画效果。

  通过规定至少以下两项 CSS3 动画属性,即可将动画绑定到选择器:

  1. 规定动画的名称
  2. 规定动画的时长

demo代码:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">img {/*-webkit-animation: myfirst 5s;*/}@-webkit-keyframes myfirst{0% {-webkit-transform: rotate(0deg)scale(1, 1);opacity: 1;}50% {-webkit-transform: rotate(360deg)scale(0.5, 0.5);opacity: 0.5;}100% {-webkit-transform: rotate(0deg)scale(1, 1)translate(300px, 200px);opacity: 1;}}img {-webkit-animation: myfirst 5s linear 0s 1 alternate;/*停在结束位置*/-webkit-animation-fill-mode: forwards;}
</style>
<img src='http://hanzichi.github.io/img/img0.png' />

View Code

更多请猛戳 CSS3 动画

具体应用:图片轮播

  类似应用可先写好无过渡的代码,然后再在class转换之间添加transition。

  该demo(图片自动轮播)和transition有关的核心代码就几行,而js只是简单的对元素的class进行赋值,动画过程全由css3完成!

img {position: absolute;-webkit-transition: all 2s ease-out;
}.disappear {opacity: 0;
}.show {opacity: 1;
}

  当img的class从show转换成disappear或者从disappear转换成show时(img标签下的class变换),就会执行transition设置的过渡动画。

  另一个demo的实现也大同小异,有兴趣的可以参考源码:源码请猛戳

总结

  总的来说,transform只是为dom增添一些属性,而如果搭配transition或者animation则能完成一些动画效果,我觉得实际应用较多的应该还是transition,可配合伪类或者click等事件。

  楼主对以上的理解不深,如有出入,还请指出。

  如需了解更多,可以参考这篇 CSS3 Transitions, Transforms和Animation使用简介与应用展示

css3实践之图片轮播(Transform,Transition和Animation)相关推荐

  1. FlexSlider图片轮播切换jQuery插件

    下载地址 flexSlider是一款强大的图片轮播插件.参数说明animation: "slide",            // String: ["fade" ...

  2. Angular2组件与指令的小实践——实现一个图片轮播组件

    如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图. 而除了直接看的见的躯体之外,一个完整的" ...

  3. css33d图片轮播_通过html+css3实现图片轮播切换

    摘要:图片轮播切换是网站banner图常用的功能,很多网站的这个功能都是通过js来实现的,自从css3新增动画功能后,图片轮播切换不需要js也可以实现了. 图片轮播切换是网站banner图常用的功能, ...

  4. 网页制作使用CSS样式制作轮播教程,静态网页设计与开发 1.案例——CSS3制作图片轮播图 (4)使用纯CSS3代码实现简单的图片轮播——分步骤实现.docx...

    使用纯CSS3代码实现简单的图片轮播 设计思路: 以5张图片为例: 1.基本布局: 通过设置每张图片的尺寸和父容器的尺寸,从而将5张图片横向并排放入一个div容器(#photos)内.所有图片设置统一 ...

  5. html图片轮播思路,css3如何实现轮播图?css3实现轮播图片的方法

    我们在网页上经常会看到有一块位置会有很多的图片来回切换,这就是轮播图,轮播图的出现,让重要的信息可以在一个位置显现,那么,轮播图是如何实现的呢?轮播图的实现用js或者css都可以,本篇文章就来给大家介 ...

  6. 纯css自动全屏轮播图html代码,纯CSS3代码实现简单的图片轮播

    以4张图片为例: 1.基本布局: 将4张图片左浮动横向并排放入一个div容器内,图片设置统一尺寸,div宽度设置4个图片的总尺寸,然后放入相框容器div, 相框设置1个图片的大小并设置溢出隐藏,以保证 ...

  7. 天猫首页迷思之-jquery实现左侧广告牌图片轮播

    本次要实现的是天猫首页每个楼层左侧的图片轮播效果.见图: 功能点有:点击右箭头向右滑动:点击左箭头向左滑动:什么都不点自动滑动. 1.实现样式.简单分析一下大概的html结构.一个大的div里面包含两 ...

  8. 十五分钟用JavaScript基础写一个图片轮播效果

    十五分钟用JavaScript基础写一个图片轮播效果 前言 这次也是一个适合JavaScript初学者的小练手,用JavaScript的基本知识去写一个轮播图,其实轮播图有很多方法去实现,像用一些框架 ...

  9. Vue——图片轮播组件

    Notices: 这是我一个项目中的一个子组件,要展示的数据.图片地址等的都在父组件data中.所以后面的讲述都是基于从父组件获取的参数进行处理.(如需将这个SlideShow写成一个单独的主组件,将 ...

最新文章

  1. 安装Ecshop首页出现报错:Only variables should be passed by referen
  2. python画三维几何图-Python下opencv使用笔记(二)(简单几何图像绘制)
  3. 第二次冲刺团队进展报告七
  4. PyQt5 技术篇-在clipboard.dataChanged.connect()里如何写入剪切板示例演示,pyqt5监听剪切板变动并写入剪切板内容
  5. 漫话:如何给女朋友解释什么是HTTP
  6. 从0开始的Python学习009参数
  7. Linux shell multifile content replace with sed
  8. python可迭代对象,迭代器,生成器
  9. Ubuntu环境下的VirtualBox,连接Redhat虚拟机的步骤
  10. .Net Core中对FluentEmail.Smtp进行封装使用
  11. 软件项目版本号命名规则
  12. [HDOJ2512]一卡通大冒险(DP)
  13. jep3.5 java 动态公式
  14. 4款开源中文分词系统。
  15. 如何软件自动生成延时函数
  16. android use-feature和market策略
  17. DYNAMIC DETECTION
  18. 单位圆的面积为π,因此可以通过求单位圆面积的近似值来求π的近似值
  19. 计算机在职研究生是学历教育吗,计算机在职研究生有学籍吗
  20. [NLP自然语言处理]谷歌BERT模型深度解析

热门文章

  1. RedHat 5.4 RHCE VSFTPD学习笔记
  2. MAC 下的简单 SHELL 入门
  3. C# 读取指定目录中的所有文件,并按规则生成SQL语句!
  4. js技巧之与或运算符 || 妙用
  5. C#基础知识学习(2)string类中的方法
  6. 2015-12-15 关于数量个
  7. 每日一句(2014-9-22)
  8. Asp.net MVC 4 异步方法
  9. ERROR Invalid options in vue.config.js: “baseUrl“ is not allowed
  10. mac系统更新后code .命令打不开vs code