生活中我们所见到的大部分图形(正方形、长方形、圆形、椭圆、三角形、多边形...)都是可以用css3来实现,以及一些复杂点的图形——其实都是由基本图形组合而成的。

由于明天就是情人节了,所以今天我们就用css3画一个心形然后再利用css3实现心跳的动画:

首先分析一下,心跳都可以用哪些基本图形组成

方案一:两个圆 + 正方形

下面我们开始用代码来实现这个图形

先创建一个 div 给它添加一个 class 为 heart

<div class="heart"></div>

heart的样式是宽和高都为200px的正方形

.heart{
width: 200px;
height: 200px;
background: #f00;
position: relative;
}

我们再利用伪元素 before 和 after 来画出另外两个圆,另外两个圆的直径和我们正方形的宽度是一样的

.heart:before, .heart:after{
content: "";
position: absolute;
width: 200px;
height: 200px;
background: #f00;
border-radius: 100px;
}

再对  before 和 after 的位置做微调整,before  伪元素相对于正方形左移一个半径的距离,after 伪元素相对于正方形上移一个半径的距离

.heart:before{
left: -100px;
}
.heart:after{
left:;
top: -100px;
}

我们再利用 filter 给心形添加一个阴影,不了解filter的可以点击这里

现在离成功只差一步了,利用css3的旋转让心形摆正,我们重新完善 heart 样式

.heart{
width: 200px;
height: 200px;
background: #f00;
position: relative;
filter:drop-shadow(0px 0px 20px rgb(255,20,20));
transform: rotate(45deg);
}

现在我们可以看一下到目前我们的成果是什么样的:

由于旋转后心形的外观发生了一点变化,如下图,我们再次对 heart 的宽和高样式进行调整

.heart{
width: 198px;
height: 198px;
background: #f00;
position: relative;
filter:drop-shadow(0px 0px 20px rgb(255,20,20));
transform: rotate(45deg);
}

调整后的效果:

现在我们就给心形加上心跳的动画,分析心跳的状态,它是由放大和缩小两者交替循环播放的~

使用css3的 keyframes 再配合css3的缩放 scale 就可以实现心跳的效果,这里需要注意的一点是如果你 heart 样式有旋转 rotate 的代码,在keyframes动画中也需要添加上

代码如下:

@keyframes heartbeat{
0%{transform: rotate(45deg) scale(0.8,0.8); opacity:;}
25%{transform: rotate(45deg) scale(1,1); opacity: 0.8;}
100%{transform: rotate(45deg) scale(0.8,0.8); opacity:;}
}

终于大功告成了! 看一下我们最终的效果:

下面简单介绍一下另一种方法

方案二:两个长方形(比例是2:3 | 3:2)

其实这两种方案都差不多,思路已提供有兴趣的可以自己动手写一下~

明天就是情人节了,预祝大家情人节快乐!

Your browser does not support the audio element.

心跳 CSS的更多相关文章

  1. css心跳动画

    1.图片无限放大缩小,类似心跳 css如下 @keyframes scaleDraw { /*定义关键帧.scaleDrew关键帧名称*/ 0%{ transform: scale(1); /*开始为 ...

  2. 心跳(纯代码制作心形,animation动画)

    思路:利用两个长方形(比例是2:3 | 3:2)可以合成心形,然后利用动画,缩放大小实现心跳(纯代码),效果如下: <body> <div></div> </ ...

  3. Matplotlib数据可视化(3):文本与轴

      在一幅图表中,文本.坐标轴和图像的是信息传递的核心,对着三者的设置是作图这最为关心的内容,在上一篇博客中虽然列举了一些设置方法,但没有进行深入介绍,本文以围绕如何对文本和坐标轴进行设置展开(对图像 ...

  4. css linear-gradient;心跳animation

    css线性背景 background:linear-gradient(20deg,#ccffff,#ffcccc); transform transform:scale(1.5); transform ...

  5. 【动画消消乐】HTML+CSS 自定义加载动画:怦然心跳 066

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  6. FCC---Make a CSS Heartbeat using an Infinite Animation Count----超级好看的心跳,粉色的

    Here's one more continuous animation example with the animation-iteration-count property that uses t ...

  7. web socket 心跳包的实现方案

    web socket 心跳包的实现方案05/30/2010 现在网络环境错综复杂,socket心跳包是获得健康强壮的连接的有效解决方案,今天,我们就在web socket中实现心跳包方案,是的,尽管我 ...

  8. Oracle 集群心跳及其參数misscount/disktimeout/reboottime

    在Oracle RAC中,能够从多个层次,多个不同的机制来检測RAC的健康状况,即能够通过心跳机制以及一定的投票算法来隔离故障.假设检測到某节点失败,则存在故障的节点将会被逐出集群以避免故障节点破坏数 ...

  9. Signalr 实现心跳包

    项目分析: 一个实时的IM坐席系统,客户端和坐席使用IM通信,客户端使用android和ios的app,坐席使用web. web端可以保留自己的登录状态,但为防止意外情况的发生(如浏览器异常关闭,断网 ...

随机推荐

  1. 海量数据GPS定位数据库表设计

    在开发工业系统的数据采集功能相关的系统时,由于数据都是定时上传的,如每20秒上传一次的时间序列数据,这些数据在经过处理和计算后,变成了与时间轴有关的历史数据(与股票数据相似,如下图的车辆行驶过程中的油 ...

  2. vue学习之路 - 3.基本操作(中)

    基本操作(中) 本章节主要介绍:vue的条件渲染.列表渲染,计算属性和侦听器 条件渲染和列表渲染 条件渲染主要使用到了 v-if 指令,列表渲染主要使用了 v-for 指令. 下面介绍 v-if .  ...

  3. 【线性基 集合hash】uoj#138. 【UER #3】开学前的涂鸦

    还需要加强分析题目特殊性质,设计对应特殊算法,少想多写大力dfs剪枝不要管MLETLE直接上的能力 红包是一个有艺术细胞的男孩子. 红包由于NOI惨挂心情不好,暑假作业又多,于是他开始在作业本上涂鸦. ...

  4. LeetCode955删列造序 ||

    问题:删列造序 || 给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等. 选取一个删除索引序列,对于 A 中的每个字符串,删除对应每个索引处的字符. 比如,有 A = [" ...

  5. 短信验证码js

    var isSmsSend = false; function clickButtona(obj){ var obj = $(obj); var mobile=$("input[name=m ...

  6. 1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8

    a,b,c,d,e,f,g=1,2,3,4,5,8,9 m = a > b and c < d or c > e n = b > a or g < f x = m and ...

  7. utf8和utf8mb4区别

    原文链接 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编 ...

  8. Linux文件类型 扩展名的作用

    链接类型文件 查找显示管道文件 普通文件类型 file 查看文件的类型 data文件类型 创建块字和符设备 mknod 1,.tar .tar.gz .tgz .zip tar.bz 表示压缩文件,创 ...

  9. JSP自定义tld方法标签

    卧槽 我们可以通过tld文件,自定义一个方法标签,以便在页面中使用,目录通常放在WEB-INF下面的tlds文件夹: 引入方式示例,直接在jsp上引入tld标签文件: <%@ taglib pr ...

  10. MSSQL将多行单列变一行一列并用指定分隔符分隔,模拟Mysql中的group_concat

    -- 将多行记录(只能一个列)用指定分隔符分隔 IF(OBJECT_ID('sp_RowsChangeClosBySplit',N'P') IS NOT NULL) DROP PROC sp_Rows ...