利用css3实现一个半月形的西瓜,利用queue实现吃西瓜的动画。练习例子

css3:

1、圆角

border-radius:100%;

border-top-left-radius:5px;

2、变形

  • 2D旋转:transform: rotate(25deg);(正角度为顺时针,负角度为逆时针)。
  • 3D旋转:transform: rotateX(25deg);-----效果为div的高度变小,90deg时高度为0。
  • 3D旋转:transform: rotateY(25deg);-----效果为div的宽度变小(左右border同时内缩),90deg时宽度为0。
  • 缩放:transform:scale(1,0.5);或transform:scaleX(1);或transform:scaleY(0.5);
  • 移动:transform:translate(20px,-10px);或transform:translateX(20px);或transform:translateY(-10px);
  • 倾斜:transform:skew(10deg,20deg);或transform:skewX(10deg);或transform:skewY(20deg);

3、动画

animation使用方法:

3.1、利用@keyframes定义动画效果:

@keyframes  animateName{
0% {(多个)css规则;}------必备,表示动画开始时的效果
30% {;}------非必备,表示经过了整个动画时间(一个周期)的3/10后的效果
100% {;}------必备(当只有0%和100%是可以用from和to代替),表示动画结束时的效果
}

3.2、在某节点上使用动画,同时定义动画的下列属性,如

div{animation:animateName 2s linear 1s 3;}

其中:

动画的速度曲线animation-timing-function(默认值为ease,常用的为linear)

如果要无限次执行动画,则定义

  • animation-iteration-count为"infinite"。
  • animation-direction的默认值为

"normal"表示正常播放动画,

"alternate"则表示轮流反向播放动画,即动画会在奇数次数(1、3、5 等等)正常播放,而在偶数次数(2、4、6 等等)向后播放。

  • animation-play-state可控制动画暂停paused或(继续)执行:running。
  • animation-fill-mode:表示动画在播放之前和之后,是否可见,默认值为

"none"表示动画播放结束后会回到初始状态,

"forwards"表示动画结束后保持在keyframes中最后一帧100%时的状态,

"backwards"表示在animation-delay的一段时间内,在动画播放之前,应用第一帧的状态,

"both"表示同时应用"forwards"和"backwards"。

练习实例:一个div在前一秒内,top由0到50px,后一秒内,选择一圈且下降到100px,同时慢慢变透明。

@keyframes down{
0% {opacity:;top:;}
50% {opacity:;top:50px;transform:rotate(0);}
100% {opacity:;top:100px;transform:rotate(360deg);}
}
@-webkit-keyframes down{
0% {opacity:;top:;}
50% {opacity:;top:50px;-webkit-transform:rotate(0);}
100% {opacity:;top:100px;-webkit-transform:rotate(360deg);}
}
@-moz-keyframes down{
0% {opacity:;top:;}
50% {opacity:;top:50px;-moz-transform:rotate(0);}
100% {opacity:;top:100px;-moz-transform:rotate(360deg);}
}
@-o-keyframes down{
0% {opacity:;top:;}
50% {opacity:;top:50px;-o-transform:rotate(0);}
100% {opacity:;top:100px;-o-transform:rotate(360deg)}
}
#object1{
animation:down 2s linear forwards;
-webkit-animation:down 2s linear forwards ;
-moz-animation:down 2s linear forwards;
-o-animation:down 2s linear forwards;
}

按上面写法,会在object1加载后就立马开始动画。

练习实例1:

object1

这个例子中为了实现默认不开始动画,单击 “开始” 按钮后再开始播放动画,播放结束后单击 "开始" 重新播放动画,

想法是:默认css设置动画不播放:

#object1{
animation:down 2s linear paused forwards;
-webkit-animation:down 2s linear paused forwards ;
-moz-animation:down 2s linear paused forwards;
-o-animation:down 2s linear paused forwards;
}

在“开始” 按钮里的事件开始播放动画:

$('#inputTest').click(function(){
$('#objectTest').css('webkitAnimationPlayState','running'); //省略了animationPlayState、mozAnimationPlayState、oAnimationPlayState
setTimeout(function(){ $('#objectTest').css({top:0,opacity:1});},2000);
})

练习实例2:

objectTest

结果:通过查看html节点,虽然动画播放结束后objectTest的style里已经有了top:0;opacity:1;但是objectTest依然处于动画结束时的状态,调试发现,如果去除它的animation属性,它的状态就会复原了。所以改用添加和删除animation属性所在的类来达到控制动画播放的效果,另外可以用animation有动画结束的对应事件取代setTimeout。

练习实例1的代码其实就是下面这样:

.downAnimation{
animation:down 2s linear forwards;
-webkit-animation:down 2s linear forwards ;
-moz-animation:down 2s linear forwards;
-o-animation:down 2s linear forwards;
}
$('#input1').click(function(){
$('#object1').addClass( 'downAnimation');
})
document.getElementById('object1').addEventListener("webkitAnimationEnd", function (e) {
$('#object1').removeClass('downAnimation');
});
......(省略了为animationEnd、mozAnimationEnd、oAnimationEnd添加事件)

animation事件:

共有三个事件:

  • animationStart:动画开始时触发(如果有设置延迟animation-delay,是在延迟时间之后触发);
  • animationEnd:动画结束时触发;
  • animationIteration:如果有设置animation-iteration-count大于1,则在第一次以后的每一次重复播放时触发。

还可以通过事件函数的参数的elapsedTime属性获得动画开始到此时经过的时间(单位为s,不包括animation-delay时间)。

在js中控制这些属性:

document.getElementById('id1').style.animationPlayState='paused'; 
document.getElementById('id').style.WebkitAnimationPlayState='paused';

在style中定义:

<div style='animation-play-state: paused;-webkit-animation-play-state: paused;'>

注意:

Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。

Chrome 和 Safari 需要前缀 -webkit-。

4、transition

作用是:当属性改变时,在一定时间内将属性有初始值(平滑的)改变到新的属性值,如:

transition:all 1s ease-in-out;

transition 属性是一个简写属性,用于设置四个过渡属性:

  • transition-property:可为某个特定的属性,如background、width等,也可为all,为none时,将瞬间变化到新属性值
  • transition-duration
  • transition-timing-function
  • transition-delay

具体什么css属性可以实现transition效果,在W3C官网中列出了所有可以实现transition效果的CSS属性值以及值的类型,大家可以点这里了解详情。这里需要提醒一点是,并不是什么属性改变都为触发transition动作效果,比如页面的自适应宽度,某div的width初始为50%,当浏览器改变宽度时,虽然width实际变化的,但是并不会触发transition的效果。

transition也有一个animationEnd事件。

练习实例:移上div时(或是别的事件),加阴影,字体变粗

#div1{
width:50px;height:50px;
text-align:center;
background:green;color:white;
-moz-transition: all 0.5s ease-in;
-webkit-transition: all 0.5s ease-in;
-o-transition: all 0.5s ease-in;
transition: all 0.5s ease-in;
}
#div1:hover{
font-weight:bold;
box-shadow:2px 2px 3px gray;
}

div1

transition中的属性变化也可以分开写:

transition: background 0.5s ease-in,color 0.3s linear;

复习css3的部分属性的更多相关文章

  1. CSS3外轮廓属性

    外轮廓outline在页面中呈现的效果和边框border呈现的效果极其相似,但和元素边框border完全不同,外轮廓线不占用网页布局空间,不一定是矩形,外轮廓是属于一种动态样式,只有元素获取到焦点或者 ...

  2. 学习笔记:CSS3的filter属性

    CSS3的filter属性 (版权归原作者所有) http://www.jianshu.com/p/ca7a2bdcc1e7/comments/4956985 filter: blur(5px); f ...

  3. CSS3利用text-shadow属性实现多种效果的文字样式展现

    一.效过图展示: 已经是比较久之前学习的文字效果了.但是还是很实用很有趣的.利用CSS3提供的text-shadow属性可以给页面上的文字添加阴影效果,因此可以替换掉之前使用过的一些繁琐的图片.到目前 ...

  4. css3.0新属性效果在ie下的解决方案(兼容性)

    css3.0增加的新属性,如投影.渐变.旋转.圆角等等!这些新标准属性在ie6.ie7.ie8浏览器版本里得不到很好的支持,相信ie以后的新版本也会支持这些新属性的.目前ie6.ie7.ie8浏览器不 ...

  5. CSS3展现精彩的动画效果 css3的动画属性

    热火朝天的css3无疑吸引了很多前端开发者的眼球,然而在css3中的动画属性则是新功能中的主打招牌,说到css3的动画属性不得不让人想起这三个属性:Transform﹑Transition﹑Anima ...

  6. CSS3中动画属性transform、transition 和 animation

    CSS3中和动画有关的属性有三个 transform.transition 和 animation.下面来一一说明:        transform   从字面来看transform的释义为改变,使 ...

  7. css3 的box-sizing属性理解

    * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } 有时候在某些项目中 ...

  8. css2和CSS3的background属性简写

    1.css2:background:background-color || url("") || no-repeat || scroll || 0 0;  css3:  backg ...

  9. CSS3的box-sizing属性

    盒模型的宽度,在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内 W3C标准中的盒模型宽度为内容宽度,不包括内边距paddin ...

随机推荐

  1. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  2. iOS 3D Touch功能 3 -备

    新的触摸体验——iOS9的3D Touch 一.引言 二.在模拟器上学习和测试3D Touch 附.SBShortcutMenuSimulator的安装和使用 三.3D Touch的主要应用 四.3D ...

  3. 理解ATL中的一些汇编代码(通过Thunk技术来调用类成员函数)

    我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以 ...

  4. 计算新浪Weibo消息长度

    此文为计算新浪Weibo的消息长度的方法. 就是 (发言请遵守社区公约,还可以输入119字). var getMessageLength = (function() { var byteLength ...

  5. 51nod-正整数分组问题(基础方程DP-01背包)

    正整数分组 将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的. 思路: 这题的实质其实也是0-1背包问 ...

  6. velocity自定义动画

         话说好久没有写博客了,零星的整理了一些东西,没有形成系统,所以也没有在这里记录.        废话不多说了,进入今天的正题.不知道大家是否记得之前写过的一篇文章<制作炫酷的专题页面& ...

  7. webpack之基础学习

    webpack工作原理: 通过一个入口文件,main.js开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个浏览器可识别的JavaScript文件. Webpack的核心原理 ...

  8. [深入React] 5.MVC

    react 是一种典型的MVC框架. 在jquery中,我们都是针对dom编程,由dom事件触发dom改变,MVC三层代码混在一起. 比如点击变颜色 $('#btn').click(function( ...

  9. (第三章)Java内存模型(下)

    一.happens-before happens-before是JMM最核心的概念.对于Java程序员来说,理解happens-before是理解JMM的关键. 1.1 JMM的设计 从JMM设计者的 ...

  10. 关于driver_register做了些什么

    现在进入driver_register()函数去看看.在driver_register() 中,调用了driver_find(drv->name, drv->bus)函数,这里是干啥呢?这 ...