CSS3 制作网页动画

客官°小女子只卖身不卖艺 2023-10-18 14:53 212阅读 0赞

文档:http://www.runoob.com/cssref/css3-pr-transform.html

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hseDIwMDgwODA4_size_16_color_FFFFFF_t_70

一、CSS3变形:

每个效果都可以称为变形(transform),它们可以分别操控元素发生平移、旋转、缩放、倾斜等变化;

语法:

  1. transform:[transform-function] *;

变形函数

translate():平移函数,基于X、Y坐标重新定位元素的位置

语法:

  1. translate(tx,ty);

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hseDIwMDgwODA4_size_16_color_FFFFFF_t_70 1

translateX(tx) 表示只设置X轴的位移;

translateX(ty) 表示只设置Y轴的位移;

效果:

20190225110108826.png 20190225110020603.png

源码:

  1. li a:hover{
  2. background: rgba(242, 88, 6, 0.87);
  3. border-radius: 6px; /*圆角*/
  4. /*2D位移==>设置a元素在鼠标移入时向右下角移动4px,8px*/
  5. transform: translate(4px,8px);
  6. -webkit-transform: translate(4px,8px);
  7. /*-webkit-transform: translateX(4px);*/
  8. /*-webkit-transform: translateY(-8px);*/
  9. }

scale():缩放函数,可以使任意元素对象尺寸发生变化

语法:

  1. scale(sx,sy);

scale()函数可以只接收一个值,也可以接收两个值,只有一个值时,第二个值默认和第一个值相等

scaleX(sx):表示只设置X轴的缩放

scaleY(sy):表示只设置Y轴的缩放

效果:

2019022511035478.png 20190225110405665.png

源代码:

  1. li a:hover{
  2. background: rgba(242, 88, 6, 0.87);
  3. border-radius: 6px; /*圆角*/
  4. /*2D缩放==>设置a元素在鼠标移入时放大1.5倍显示*/
  5. /*transform: scale(1.5);*/
  6. /*transform: scaleX(2);*/
  7. /*transform: scaleY(2)*/
  8. transform: scale(0.5);
  9. }

rotate():旋转函数,取值是一个度数值

语法:

  1. rotate(a);

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hseDIwMDgwODA4_size_16_color_FFFFFF_t_70 2

效果:

原来:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hseDIwMDgwODA4_size_16_color_FFFFFF_t_70 3

旋转效果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hseDIwMDgwODA4_size_16_color_FFFFFF_t_70 4
源代码:

  1. img:hover{
  2. /*定义动画的状态,鼠标移入旋转并放大图片1.5倍*/
  3. transform: rotate(270deg) scale(1.5);
  4. }

skew():倾斜函数,取值是一个度数值

语法:

  1. skew(ax, ay);

skewX(ax):表示只设置X轴的倾斜

skewY(ay):表示只设置Y轴的倾斜

效果:

20190225111009541.png 20190225111024693.png

源代码:

  1. li a:hover{
  2. background: rgba(242, 88, 6, 0.87);
  3. border-radius: 6px; /*圆角*/
  4. /*2D倾斜==>设置a元素在鼠标移入时向左下角倾斜*/
  5. transform: skew(40deg,-20deg);
  6. /*transform: skewX(40deg);*/
  7. /*transform: skewY(-20deg);*/
  8. }

小结:

  1. rotate( )函数只是旋转,而不会改变元素的形状
  2. skew( )函数是倾斜,元素不会旋转,会改变元素的形状

二、CSS3过渡

transition呈现的是一种过渡,是一种动画转换的过程,如渐现、渐弱、动画快慢等 CSS3 transition的过渡功能更像是一种“黄油”,通过一些CSS的简单动作触发样式平滑过渡

语法:

  1. transition:[transition-property过渡或动态模拟的CSS属性
  2. transition-duration完成过渡所需要的时间
  3. transition-timing-function指定过渡函数
  4. transition-delay过渡开始出现的延迟时间 ]

过渡属性( transition-property )

定义转换动画的CSS属性名称

IDENT:指定的CSS属性(width、height、background-color属性等)

all:指定所有元素支持transition-property属性的样式,一般为了方便都会使用all

过渡所需的时间( transition-duration )

定义转换动画的时间长度,即从设置旧属性到换新属性所花费的时间,单位为秒(s)

过渡动画函数( transition-timing-function )

指定浏览器的过渡速度,以及过渡期间的操作进展情况,通过给过渡添加一个函数来指定动画的快慢方式

ease:速度由快到慢(默认值)

linear:速度恒速(匀速运动)

ease-in:速度越来越快(渐显效果)

ease-out:速度越来越慢(渐隐效果)

ease-in-out:速度先加速再减速(渐显渐隐效果)

过渡延迟时间( transition-delay )

指定一个动画开始执行的时间,当改变元素属性值后多长时间去执行过渡效果

正值:元素过渡效果不会立即触发,当过了设置的时间值后才会被触发

负值:元素过渡效果会从该时间点开始显示,之前的动作被截断

0:默认值,元素过渡效果立即执行

伪类触发 :hover :active :focus :checked

transition实现过渡动画的使用步骤:

  1. 在默认样式中声明元素的初始状态样式
  2. 声明过渡元素最终状态样式,如悬浮状态
  3. 在默认样式中通过添加过渡函数,添加一些不同的样式

效果:

2019022511454581.gif

源代码:

  1. <style type="text/css">
  2. div {
  3. background-color: red;
  4. width: 200px;
  5. height: 200px;
  6. border-radius: 100px;
  7. /*指定动画过渡的CSS属性 过渡时间 过渡动画 延迟时间*/
  8. transition:background-color 1s ease-in-out 1s;
  9. }
  10. div:hover{
  11. background:yellowgreen;
  12. }
  13. </style>

效果

20190225114524470.gif

源代码:

  1. <style type="text/css">
  2. ul li {
  3. float: left; /*左浮动*/
  4. margin: 30px; /* 外边距*/
  5. list-style: none; /*去掉小黑点*/
  6. }
  7. #box img{
  8. transition:all 0.9s ease-in-out 0s;
  9. -webkit-transition:all 0.9s ease-in-out 0s;
  10. }
  11. #box img:hover{ /*鼠标移上放大2倍,旋转360度*/
  12. transform: scale(2) rotate(360deg);
  13. -webkit-transform: scale(2) rotate(360deg);
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <h2>顺时针旋转360度放大1.2倍</h2>
  19. <ul id="box">
  20. <li><a href="#"><img src="images/rss.png" /></a></li>
  21. <li><a href="#"><img src="images/delicious.png" /></a></li>
  22. <li><a href="#"><img src="images/facebook.png" /></a></li>
  23. <li><a href="#"><img src="images/twitter.png"/></a></li>
  24. <li><a href="#"><img src="images/yahoo.png" /></a></li>
  25. </ul>
  26. </body>

三、CSS3动画

animation动画简介 animation实现动画主要由两个部分组成

  1. 通过类似Flash动画的关键帧来声明一个动画
  2. 在animation属性中调用关键帧声明的动画实现一个更为复杂的动画效果

语法:

  1. animation:animation-name动画名称
  2. animationduration 动画时间
  3. animation-timing-function动画函数
  4. animation-delay 动画延迟时间
  5. animation-iteration-count 播放次数
  6. animation-direction 动画方向
  7. animation-play-state 播放的状态
  8. animation-fill-mode;动画开始之前和结束之后发生的操作

动画的播放次数(animation-iteration-count)
值通常为整数,默认值为1
特殊值infinite,表示动画无限次播放

动画的播放方向(animation-direction)
normal,动画每次都是循环向前播放
alternate,动画播放为偶数次则向前播放

动画的播放状态(animation-play-state)
running将暂停的动画重新播放
paused将正在播放的元素动画停下来

动画发生的操作(animation-fill-mode)
forwards表示动画在结束后继续应用最后关键帧的位置
backwards表示会在向元素应用动画样式时迅速应用动画的初始帧
both表示元素动画同时具有forwards和backwards的效果

设置关键帧:

语法:

  1. @keyframes IDENT {
  2. from {/*CSS样式写在这里*/}
  3. percentage {/*CSS样式写在这里*/}
  4. to {/*CSS样式写在这里*/}
  5. }

如:

  1. @keyframes my{
  2. 0% {width:0;}
  3. 33% {width:23px;}
  4. 66% {width:46px;}
  5. 100% {width:69px;}
  6. }

效果:

20190225114304522.gif

源代码:

  1. div{
  2. width:100px;
  3. height: 100px;
  4. background:coral;
  5. /*调用动画*/
  6. /*my:关键帧动画名称*/
  7. animation: my 1.5s linear infinite;
  8. -webkit-animation: my 1.5s linear infinite;
  9. }
  10. /*创建动画关键帧*/
  11. @keyframes my{
  12. 0%{
  13. width: 0px;
  14. transform: translateX(100px);
  15. }
  16. 35%{
  17. width: 25px;
  18. transform: translateX(150px);
  19. }
  20. 70%{
  21. width: 55px;
  22. transform: translateX(200px);
  23. }
  24. 100%{
  25. width: 100px;
  26. transform: translateX(250px);
  27. }
  28. }
  29. @-webkit-keyframes name{
  30. 0%{
  31. width: 0px;
  32. transform: translateX(100px);
  33. }
  34. 35%{
  35. width: 25px;
  36. transform: translateX(200px);
  37. }
  38. 70%{
  39. width: 55px;
  40. transform: translateX(400px);
  41. }
  42. 100%{
  43. width: 100px;
  44. transform: translateX(600px);
  45. }
  46. }

发表评论

表情:
评论列表 (有 0 条评论,212人围观)

还没有评论,来说两句吧...

相关阅读