CSS动画实例:一颗躁动的心
在页面中放置一个类名为container的层作为盛放心心的容器,在该层中再定义一个名为heart的子层,HTML代码描述如下:
<div class="container">
<div class="heart"></div>
</div>
分别为container和heart定义CSS样式规则如下:
.container
{
margin: 0 auto;
width: 300px;
height:300px;
position: relative;
display:flex;
justify-content:center;
align-items:center;
background-image: radial-gradient(#FFC0CB, #FF8888);
border: 4px solid rgba(255, 0, 0, 0.9);
border-radius: 10%;
}
.heart
{
width: 100px;
height: 100px;
background-color: #FF6347;
position: relative;
animation:beat .6s infinite ease-in;
}
.heart:before, .heart:after
{
content:"";
position: absolute;
width: 100px;
height: 100px;
background-color: #FF6347;
border-radius: 50%;
}
.heart:before
{
left: 50px;
}
.heart:after
{
top: -50px;
}
在CSS样式的作用下,这2个层在浏览器中显示如图1所示,其中心心由三个部分构成:一个高度和宽度均为100px的正方形(由.heart样式规则决定)、正方形右边拼接的一个半圆(由.heart:before样式规则决定)和正方形上边拼接的一个半圆(由.heart:after样式规则决定)。

图1 一颗心心
若将上面的CSS属性设置中“left: 50px;”改成“left: -50px;”,“top: -50px;”改成“top: 50px;”,则显示如图2所示的心心。

图2 另一颗心心
若将图1的心心逆时针旋转45°,即在.heart样式定义中加上语句“transform:rotate(-45deg);”,则显示如图3所示的心心。

图3 正放的心心
现为图3所示的心心添加动画效果,编写的完整HTML文件如下。

<!DOCTYPE html>
<html>
<head>
<title>躁动的心</title>
<style>
.container
{
margin: 0 auto;
width: 300px;
height:300px;
position: relative;
display:flex;
justify-content:center;
align-items:center;
background-image: radial-gradient(#FFC0CB, #FF8888);
border: 4px solid rgba(255, 0, 0, 0.9);
border-radius: 10%;
}
.heart
{
width: 100px;
height: 100px;
background-color: #FF6347;
position: relative;
animation: beat 0.6s infinite;
}
.heart:before, .heart:after
{
content:"";
position: absolute;
width: 100px;
height: 100px;
background-color: #FF6347;
border-radius: 50%;
}
.heart:before
{
left: 50px;
}
.heart:after
{
top: -50px;
}
@keyframes beat
{
0% { transform:scale(1) rotate(-45deg); }
40% { transform:scale(1.1) rotate(-45deg); }
55% { transform:scale(1.3) rotate(-30deg); }
70% { transform:scale(1.1) rotate(-45deg); }
85% { transform:scale(1.3) rotate(-60deg); }
100% { transform:scale(1) rotate(-45deg); }
}
</style>
</head>
<body>
<div class="container">
<div class="heart"></div>
</div>
</body>
</html>
在浏览器中打开包含这段HTML代码的html文件,可以呈现出如图4所示的动画效果。

图4 一颗躁动的心
图4中动画效果在放大过程中旋转角度还有所变化,因此心心显得躁动不安。若保持旋转角度-45deg不变,只让心心放大缩小,改写关键帧定义为:
@keyframes beat
{
0% { transform:scale(1) rotate(-45deg);}
50% { transform:scale(1.8) rotate(-45deg); }
100% { transform:scale(1) rotate(-45deg) ; }
}
则呈现的动画效果如图5所示。

图5 心心放大后缩小
有了前面的基础,下面我们在容器中放4颗心心(在container层中定义4个子层),每颗心心的大小和背景色均不同(事先通过定义变量—scale和—color的方式确定)。
编写HTML文件内容如下。

<!DOCTYPE html>
<html>
<head>
<title>躁动的心</title>
<style>
.container
{
margin: 0 auto;
width: 300px;
height:300px;
position: relative;
overflow: hidden;
display:flex;
justify-content:center;
align-items:center;
background-image: radial-gradient(circle, #000, transparent);
border: 4px solid rgba(255, 0, 0, 0.9);
border-radius: 10%;
}
.heart:nth-child(1n+0)
{
width: 100px;
height: 100px;
opacity: 0.5;
position: absolute;
background: var(--color);
transform:scale(var(--scale)) rotate(-45deg);
}
.heart:nth-child(1n+0):before, .heart:nth-child(1n+0):after
{
content:"";
position: absolute;
width: 100px;
height: 100px;
border-radius: 50%;
background: var(--color);
}
.heart:nth-child(1n+0):before
{
left: 50px;
}
.heart:nth-child(1n+0):after
{
top: -50px;
}
</style>
</head>
<body>
<div class="container">
<div class="heart" style="--scale: 1.8;--color:#6f3"></div>
<div class="heart" style="--scale: 1.4;--color:#93f"></div>
<div class="heart" style="--scale: 1;--color:#f0f"></div>
<div class="heart" style="--scale: 0.6;--color:#ff6"></div>
</div>
</body>
</html>
在浏览器中打开包含这段HTML代码的html文件,可以显示如图6所示的图案。

图6 心中有心
为这4颗心设置放大动画效果,编写动画关键帧定义并加入CSS样式规则定义如下:
.heart:nth-child(1)
{
animation: beat 5s infinite -3s linear;
}
.heart:nth-child(2)
{
animation: beat 5s infinite -2s linear;
}
.heart:nth-child(3)
{
animation: beat 5s infinite -1s linear;
}
.heart:nth-child(4)
{
animation: beat 5s infinite linear;
}
@keyframes beat
{
0% { transform:scale(0.6) rotate(-45deg);}
20% { transform:scale(1) rotate(-45deg); }
40% { transform:scale(1.4) rotate(-45deg) ; }
60% { transform:scale(1.8) rotate(-45deg);}
80% { transform:scale(2.4) rotate(-45deg); }
81% { transform:scale(0.2) rotate(-45deg); }
100% { transform:scale(0.6) rotate(-45deg) ; }
}
此时,在浏览器中呈现出如图7所示的效果。

图7 逐个放大的心心
CSS动画实例:一颗躁动的心的更多相关文章
- CSS动画实例
上一篇讲过css动画transform transition的语法,这一节展示自己做的几个小例子加深印象 1. 线条动画效果 代码:最外层div包含2个小的div : a和b. a有左右边框(高度 ...
- CSS动画实例:太极图在旋转
利用CSS可以构造出图形,然后可以对构造的图形添加动画效果.下面我们通过旋转的太极图.放大的五角星.跳“双人舞”的弯月等实例来体会纯CSS实现动画的方法. 1.旋转的太极图 设页面中有<div ...
- CSS动画实例:移动的眼珠子
适当地利用CSS的box-shadow可以构造图形,然后可以对构造的图形添加动画效果.下面我们通过移动的眼珠子.圆珠一二三.一分为四.四小圆旋转扩散等实例来体会box-shadow属性在动画制作中的使 ...
- CSS动画实例:小圆球的海洋
CSS背景属性用于定义HTML元素的背景,在CSS提供的背景属性中, background-image:指定要使用的一个或多个背景图像: background-color:指定要使用的背景颜色: ba ...
- CSS动画实例:行星和卫星
设页面中有<div class=" planet "></div>,用来绘制一个行星和卫星图形.这个图形包括三部分:行星.卫星和卫星旋转的轨道.定义. pl ...
- CSS动画实例:旋转的圆角正方形
在页面中放置一个类名为container的层作为效果呈现容器,在该层中再定义十个名为shape的层层嵌套的子层,HTML代码描述如下: <div class="container&qu ...
- CSS动画实例:跳跃的字符
1.翻转的字符 在页面中放置一个类名为container的层作为容器,在该层中放置5个字符区域,HTML代码描述如下: <div class="container"> ...
- CSS动画实例:Loading加载动画效果(三)
3.小圆型Loading 这类Loading动画的基本思想是:在呈现容器中定义1个或多个子层,再对每个子层进行样式定义,使得其均显示为一个实心圆形,最后编写关键帧动画控制,使得各个实心圆或者大小发生改 ...
- CSS动画实例:升空的气球
1.制作一个气球 设页面中有<div class="balloon"></div>,为. balloon设置样式规则如下: .balloon { heigh ...
随机推荐
- [开源硬件DIY] 自制一款精致炫酷的蓝牙土壤温湿度传感器,用于做盆栽呵护类产品(API开放,开发者可自行DIY微信小程序\安卓IOS应用)
目录 前言: 1. 成品展示 2. 原理图解析 3. pcb设计 4. 嵌入式对外提供接口 4.1 蓝牙广播 4.2 蓝牙服务和属性 4.3 数据包格式 4.4 数据通信模型 重要 . 前言: 本期给 ...
- C++语法小记---类模板
类模板 类模板和函数模板类似,主要用于定义容器类 类模板可以偏特化,也可以全特化,使用的优先级和函数模板相同 类模板不能隐式推倒,只能显式调用 工程建议: 模板的声明和实现都在头文件中 成员函数的实现 ...
- ElementUI 级联选择框 设置最后一级可选及相关问题解决
在使用 elementUI 的 el-cascader 级联选择框进行省市联动效果时,有这么一个需求:该级联选择框一共有三级结构分别为国家-省份-城市,国家和省份为必选项,城市为可选项.具体实现如下: ...
- nginx 日志功能详解
nginx 日志功能 在 nginx 中有两种日志: access_log:访问日志,通过访问日志可以获取用户的IP.请求处理的时间.浏览器信息等 error_log:错误日志,记录了访问出错的信息, ...
- 阿里云如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?
阿里云如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 见如上链接中视频
- 数据库(二):初识sql语句
进击のpython ***** 数据库--初识sql语句 前面提到了说,数据库管理系统就像我们曾经做过的输入命令返回结果的socket通信差不多 那既然提到了命令,在MySQL中,有一些基本的语句,就 ...
- MacOS下Nginx安装
1. 先安装homebrew 2. 安装Nginx,终端下执行: $ brew install nginx 安装过程中会自己安装依赖: 3. 启动nginx服务 $ nginx 成功后,使用浏览器打开 ...
- MacOS IDEA下SVN配置与使用
第一部分,准备工作 到IDEA的配置下设置SVN命令,一般来说,IDEA已经设置好了,如果没有自己找到存放SVN命令的目录,将SVN配置进去,命令应该存放在/Library/Developer/Com ...
- 找工作的你不容错过的45个PHP面试题附答案(上篇)
Q1: == 和 === 之间有什么区别? 如果是两个不同的类型,运算符 == 则在两个不同的类型之间进行强制转换 === 操作符执行 ’ 类型安全比较’ 这意味着只有当两个操作数具有相同的类型和相同 ...
- Django学习路13_创建用户登录,判断数据库中账号名密码是否正确
在 models.py 中设置数据库表的信息 from django.db import models # Create your models here. class User(models.Mod ...