详解CSS3绘制会跳动的爱心
来自 详解CSS3绘制会跳动的爱心
CSS3与HTML5为网页设计提供了更多的便捷,同时丰富的动画效果也为网页增添了许多鲜活色彩,现在,让我们一起走进CSS3,学习使用CSS3的新增属性绘制一些简单的图示。
今天要教大家制作的是一个会跳动的爱心。
没了DEMO怎么行,点我查看
从图中可以看见,红色线部分所组成的就是一个爱心。
经过分析,我们将爱心的组成方法拆分开来,如下图:
图片构成的方案已经确定,接着我们看看如何利用CSS3代码来实现这一的效果。
首先,我们只需要一个div来包裹这个爱心,通过简单的计算,一个美观的爱心宽高比约为1.2:1
我们创建一个宽200px,高165px的div层,并将其position设置为relative以控制子元素的定位。
.myheart {
width: 200px;
height: 165px;
position: relative;
}
接着我们会用到CSS中的两个伪类,:before和:after,利用before和after分别创建爱心两边的图形
.myheart:before, .myheart:after {
content: "";
position: absolute;
width: 100px;
height: 165px;
background: red;
border-radius: 50px 50px 0 0;
}
宽度为父元素的一半,高度相同,并且利用border-radius使其获得一个半圆形的边。
这样一个如图2的样子就创建好了。接下来我们需要做的是为before和after进行位置和角度的调整
那么,通过上图中的图4我们可以看见,要使两个图形拼成爱心的形状,需要使before的左下角的点与after右下角的点重合
首先我们来调整before的位置和角度
.myheart:before {
left: 100px;
top: 0;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-transform-origin: left bottom;
-moz-transform-origin: left bottom;
-o-transform-origin: left bottom;
transform-origin: left bottom;
}
利用transform中的rotate使其旋转-45deg,transform-orgin设置为left bottom使before基于左下角的点进行变形,让left等于100px后即使得before左下角的点移动至父容器水平方向的中间。
接着调整after的位置和角度:
.myheart:after {
left: 0;
top: 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transform-origin: right bottom;
-moz-transform-origin: right bottom;
-o-transform-origin: right bottom;
transform-origin: right bottom;
}
基于右下角的点进行旋转,这样就会使得before左下角与after右下角重合。
这样一个爱心就创建完成啦!可是它不会跳啊,别着急,接下来我们利用animation和transform的scale(缩放)为他创建一个跳动的动画
.myheart {
-webkit-animation: heartjump 1s infinite ease-out;
-moz-animation: heartjump 1s infinite ease-out;
-o-animation: heartjump 1s infinite ease-out;
animation: heartjump 1s infinite ease-out;
}
@-webkit-keyframes heartjump {
0%, 60%, 75%, 90%, 100% {
-webkit-transform: scale(1);
}
15% {
-webkit-transform: scale(0.6);
}
30% {
-webkit-transform: scale(1);
}
45% {
-webkit-transform: scale(0.7);
}
}
@-moz-keyframes heartjump {
0%, 60%, 75%, 90%, 100% {
-moz-transform: scale(1);
}
15% {
-moz-transform: scale(0.6);
}
30% {
-moz-transform: scale(1);
}
45% {
-moz-transform: scale(0.7);
}
}
@-o-keyframes heartjump {
0%, 60%, 75%, 90%, 100% {
-o-transform: scale(1);
}
15% {
-o-transform: scale(0.6);
}
30% {
-o-transform: scale(1);
}
45% {
-o-transform: scale(0.7);
}
}
@keyframes heartjump {
0%, 60%, 75%, 90%, 100% {
transform: scale(1);
}
15% {
transform: scale(0.6);
}
30% {
transform: scale(1);
}
45% {
transform: scale(0.7);
}
}
图文中若有措辞不当之处请予以谅解并提出,以便将更好的教学文章呈现给大家。
标签:CSS