[css]我要用css画幅画(五)

接着之前的[css]我要用css画幅画(四), 这次我给小明和静静增加了对话,用了简单的动画效果。

github:https://github.com/bee0060/Css-Paint , 完整代码在pages/sun-house-4.html和相关的css中可以找到

demo: http://bee0060.github.io/Css-Paint/pages/sun-house-5.html

完整html如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Css Paint</title>
 6     <link rel="stylesheet" type="text/css" href="../css/sun.css" />
 7     <link rel="stylesheet" type="text/css" href="../css/house.css" />
 8     <link rel="stylesheet" type="text/css" href="../css/human.css" />
 9     <link rel="stylesheet" type="text/css" href="../css/cloud.css" />
10
11     <link rel="stylesheet" type="text/css" href="../css/human-animate.css" />
12 </head>
13 <body>
14     <div class="sun">
15         <div class="sun-body"></div>
16         <div class="sun-shine-light sun-shine-light1"></div>
17         <div class="sun-shine-light sun-shine-light2"></div>
18         <div class="sun-shine-light sun-shine-light3"></div>
19         <div class="sun-shine-light sun-shine-light4"></div>
20         <div class="sun-shine-light sun-shine-light5"></div>
21     </div>
22
23     <div class="house-width house">
24         <div class="house-width house-roof house-roof-left"></div>
25         <div class="house-width house-roof house-roof-right"></div>
26         <div class="house-width house-wall">
27             <div class="house-wall-door">
28                 <div class="house-wall-door-handle"></div>
29             </div>
30         </div>
31     </div>
32
33     <div class="human human-pos-1">
34         <p class="lines human-speak">大家好,我叫小明。</p>
35         <p class="lines human-speak human-speak-delay-3">我是一个程序员,最喜欢宅在家里LOL。</p>
36         <p class="lines human-speak human-speak-delay-12">静静,我们交个朋友好吗?我的电话是13800123456。</p>
37         <div class="human-head-normal"></div>
38         <div class="human-body-normal"></div>
39         <div class="human-arms-normal"></div>
40         <div class="human-legs-normal"></div>
41     </div>
42
43     <div class="human human-pos-2">
44         <p class="lines human-speak human-speak-delay-6">大家好,我叫静静</p>
45         <p class="lines human-speak human-speak-delay-9">和大家看到的一样,我热爱舞蹈。</p>
46         <p class="lines human-speak human-speak-delay-15">不要,程序员什么的最讨厌了!</p>
47         <div class="human-head-normal"></div>
48         <div class="human-body-normal"></div>
49         <div class="human-arms-normal"></div>
50         <div class="human-legs-1"></div>
51     </div>
52
53     <div class="cloud cloud-pos cloud-pos-1">
54         <div class="cloud-pos cloud-border cloud-bg cloud-top"></div>
55         <div class="cloud-pos cloud-border cloud-bg cloud-left"></div>
56         <div class="cloud-pos cloud-border cloud-bg cloud-right"></div>
57         <div class="cloud-pos cloud-border cloud-bg cloud-bottom"></div>
58     </div>
59     <div class="cloud cloud-pos cloud-pos-2">
60         <div class="cloud-pos cloud-border cloud-bg cloud-top"></div>
61         <div class="cloud-pos cloud-border cloud-bg cloud-left"></div>
62         <div class="cloud-pos cloud-border cloud-bg cloud-right"></div>
63         <div class="cloud-pos cloud-border cloud-bg cloud-bottom"></div>
64     </div>
65 </body>
66 </html>

我将所需的动画css放在独立的文件中:

 1 .human-speak {
 2     color: #fff;
 3     float: left;
 4     -webkit-animation-duration: 3s;
 5       -webkit-animation-name: humanLineAppear;
 6 }
 7
 8 .human-speak-delay-3 {
 9     -webkit-animation-delay: 3s
10 }
11
12 .human-speak-delay-6 {
13     -webkit-animation-delay: 6s
14 }
15
16 .human-speak-delay-9 {
17     -webkit-animation-delay: 9s
18 }
19
20 .human-speak-delay-12 {
21     -webkit-animation-delay: 12s
22 }
23
24 .human-speak-delay-15 {
25     -webkit-animation-delay: 15s
26 }
27
28 @-webkit-keyframes humanLineAppear{
29     from{
30         top: -50px;
31         color: #fff;
32     }
33     20%{
34         top: -40px;
35         color: #000;
36         z-index:10;
37     }
38     80%{
39         top: -40px;
40         color: #000;
41         z-index:10;
42     }
43     to{
44         top: -50px;
45         color: #fff;
46         z-index:1;
47     }
48 }

human-animate.css

这里用到的陌生的css属性或关键字包括:

1. -webkit-animation-duration

2.-webkit-animation-delay

3. -webkit-animation-name

[email protected]

照例先上MDN文档地址: https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Animations/Using_CSS_animations

动画系(animation属性及其子属性)的css在chrome中都需要加上浏览器前缀(-webkit-), 本以为前卫的chrome中不需要加前缀了,小小的遗憾了一把。下面的说明都把前缀省略。

以上1-3都是css属性,可以添加在css选择器中,或以内联属性的方式直接添加在标签的style属性中。

而第4个keyframes不同,下面再说。

1.animation-duration: 指定整个动画执行所需的时间, 接受time格式的值,即必须是数字+单位的格式, 单位可以是s(秒)或ms(毫秒),默认值为0s。

2.animation-delay: 指动画延迟执行的时间,即对象加载完毕到开始执行动画之间的时间,接受的时间格式也是时间,默认值为0s。

3.animation-name: 用于指定使用的动画规则名称。 默认值为none。

[email protected]:这是一个关键字, 中文翻译是“关键帧”。 开头的“@”符号是必须的,加上浏览器前缀时应该写成: @-webkit-keyframes yourKeyframesName, 其中yourKeyframesName是你的关键帧名称。

        该关键字用于声明动画规则,也可以看作一个特殊的选择器。 有点类似js中用于声明函数的function关键字。 语法类似如下:(示例中增加了-wekit-前缀)

 1 @-webkit-keyframes humanLineAppear{
 2     from{
 3         top: -50px;
 4         color: #fff;
 5     }
 6     20%{
 7         top: -40px;
 8         color: #000;
 9         z-index:10;
10     }
11     80%{
12         top: -40px;
13         color: #000;
14         z-index:10;
15     }
16     to{
17         top: -50px;
18         color: #fff;
19         z-index:1;
20     }
21 }

关键帧的语法如上,关键帧内部以类似选择器的方式书写css属性,但是“选择器” 名字不再是id、className, 而是帧的描述, 或叫时间节点的描述,接受from,to或百分比数值。

其中from等同于0%, to等同于100%,

0%表示动画开始时刻, 100%表示结束时刻。 如果动画执行时间(animation-duration属性的值)是10s,那么50%表示第5秒这个时刻。

里面的每个百分比数值,都代表动画执行过程中的一个时间节点,我们暂称为: “帧”, 而帧的CSS属性集合,暂称为“帧选择器”。

帧选择器用于设置动画运行中某时间节点的css样式。

不同帧之间如果设置了相同的css属性名和不同的属性值,

浏览器会按照帧的时间顺序,针对这个CSS属性,找到属性值不同的最相邻的帧的组合(可能有多个帧的组合),以示例中的代码为例, 对于top属性会找到如下组合:

1. from(0%) --> 20%  :  top从-50px 变为-40px

2. 80% -->  to(100%) :  top从-40px 变为-50px

上面的帧组合都有开始和结束帧,且其中都包含至少一个CSS属性的改变,我们暂时称其为: “帧区间”。

浏览器在动画执行时, CSS属性会在帧区间内匀速的变化,即从开始帧指定的属性值匀速增加或减少至结束帧指定的属性值。

--------------------------------------------------------------------------------  我是突兀的分割线  --------------------------------------------------------------------------------

要让一个动画生效, 以下3个条件必须满足:

1. animation-name需要指向一个有效的用@keyframes声明的关键帧 , 表示动画有一个有效的动画规则。

2. animation-duration大于0s, 表示动画会有大于0秒的执行时间。

3. animation-iteration-count大于0, 表示动画至少会执行1次。(该属性默认值是1,所以一般不用设置就可以)

好了,现在你应该也可以写一个属于自己的简单动画了。

今天就到这里, 谢谢观看。 如有错误,欢迎指正。

时间: 2024-11-04 18:34:37

[css]我要用css画幅画(五)的相关文章

[css]我要用css画幅画(四)

接着之前的[css]我要用css画幅画(三), 今天,我画了两朵云,并给小明介绍了个朋友:静静. github:https://github.com/bee0060/Css-Paint , 完整代码在pages/sun-house-4.html和相关的css中可以找到 demo: http://bee0060.github.io/Css-Paint/pages/sun-house-4.html 完整html如下: 1 <!DOCTYPE html> 2 <html lang="

[css]我要用css画幅画

几年前开始就一直想用css画幅画. 今天才真正开始, 从简单的开始. 作为一个工作压力那么大的程序员,我首先要画一个太阳. html如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Css Paint</title> 6 <link rel="stylesheet

[css]我要用css画幅画(七) - 哆啦A梦

接着之前的[css]我要用css画幅画(六),今天画的有所不同,画的是哆啦A梦,我们小时候对他的称呼其实是小叮当机器猫. (PS:这次我要做的事情,很多人已经做过,这并不是什么创新,我只是在学习并记录下学习的过程) 这次就不多说CSS属性的基础概念了. 说说我画的过程吧, 好,进入正题. 因为和之前的瞎画不同,这次是画现有的东西.我认为临摹是比较简单的. 我先上网找了下要临摹的对象,找了个最中规中矩的图片,如下: 这对我来说不是一个简单的任务, 而我处理不简单的任务的解决方案,就是把他拆分再拆分

[css]我要用css画幅画(九) - Apple Logo

接着之前的[css]我要用css画幅画(八) - Hello Kitty,这次画的是苹果公司的logo 这次打算将分析和实现步骤尽量详细的说一说. 其实之前的也打算详细讲分析和设计过程,不过之前的图比较复杂,如果讲那么细,真是怕要讲到猴年马月. 这次的图足够简单,就拿这个图来说明. 都是一些简单的基本方法,通过举一反三,可以实现大部分效果. Github Demo:http://bee0060.github.io/Css-Paint/pages/logo/apple.html Code Pen

[css]我要用css画幅画(二)

接着之前的[css]我要用css画幅画(一) , 今天,我又画一个房子,很简单,屋顶.墙壁.门. 现在开始,做得效果都只兼容chrome,所以下面的css3的属性可能只有-webkit-前缀. 我只是为了兴趣画画, 何必理会兼容性呢,是吧? html如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title

CSS 文本字体颜色(CSS color)

CSS 颜色样式篇 目录 (音乐放松椅) 认识CSS 颜色(color) 网页颜色基础 两种方法设置对象颜色样式 文字颜色控制color 网页背景颜色color 边框颜色color 网页color RGB设置 网页color 颜色表 css 颜色样式color总结 一.认识CSS 颜色(CSS color) - TOP(音乐放松椅) 这里要介绍的是网页设置颜色包含有哪些:网页颜色规定规范.1.常用颜色地方包含:字体颜色.超链接颜色.网页背景颜色.边框颜色2.颜色规范与颜色规定:网页使用RGB模式

[css]【转载】CSS样式分离之再分离

原文链接:http://www.zhangxinxu.com/wordpress/2010/07/css%E6%A0%B7%E5%BC%8F%E5%88%86%E7%A6%BB%E4%B9%8B%E5%86%8D%E5%88%86%E7%A6%BB/ 一.关于CSS样式分离 zxx://一些名词表意含有自己的理解成分,或许与您的理解有偏差,希望不要拘泥于措辞.无论是CSS的分离还是js的分离,其主要作用之一就是精简与重用. CSS本身就代表着精简与重用.例如我们可以设置一个如下的样式: .exa

CSS进阶之纯CSS幻灯片

CSS进阶之纯CSS幻灯片 昨天写的博文有人点了赞,让我激动不已,晚饭赏自己一个鸡腿,.如果我的博文对您有帮助的话,就请您点个赞,您的鼓励是我前进的动力.如果发现文中有错误的地方,也烦请各位大牛指出.以下开始正文. 首先用HTML搭建出基本的框架,如下: <div id="container">     <div class="slide">     <!--将需要展示的图片放在一个ul里面-->         <ul&g

css选择器、css继承关系、css盒子模型

一.摘要 总结前端部分css选择器.css继承关系.css盒子模型等相关知识,并对容易出错的地方进行分析说明. 二.原因 在开发前端页面时如果对css选择器.继承关系,层叠,以及padding.margin区别和浮动问题理解不到位,会导致不知道什么时候该用哪种方法来处理问题.此文档是针对这些问题进行说明. 以下是对相关知识点的总结与分析: 三.选择器 1.基本选择器 (1)* 通配符选择器  代表所有元素 例子: *{ margin:0; padding:0;} (2)标签选择器 代表网页中的所