css animation heartbeat
时间: 2024-10-14 15:01:32 浏览: 58
CSS动画心跳效果(Heartbeat Animation),通常是指一种动态的效果,模拟心脏跳动的样子。通过CSS关键帧动画(@keyframes)结合元素的`animation`属性,可以创建出有规律、上下波动的线条,看起来就像心脏在屏幕上跳动。这种效果一般用于网页设计中的交互元素,增强用户体验。
下面是一个简单的CSS代码示例来创建这个效果:
```css
.heartbeat {
width: 4px;
height: 50px;
background-color: red;
position: relative;
animation: heartbeat 1s ease-in-out infinite;
}
@keyframes heartbeat {
0% { transform: translateY(0); }
50% { transform: translateY(-20px); }
100% { transform: translateY(0); }
}
```
在这个例子中,`.heartbeat`元素会在1秒内上移20px,然后返回原位,循环无限次,给人一种心脏跳动的感觉。
相关问题
css3 红心跳动动画
CSS3红心跳动动画是一种利用CSS3关键帧动画(@keyframes)创建出动态效果的技术。它通常通过定义一系列关键帧来控制元素位置、大小或颜色的变化,模拟心脏跳动的过程。以下是一个简单的HTML和CSS示例:
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<style>
@keyframes heartbeat {
0% { transform: scale(1); }
50% { transform: scale(1.1); }
100% { transform: scale(1); }
}
.heart-beat {
display: inline-block;
width: 60px;
height: 60px;
background-color: red;
border-radius: 50%;
animation: heartbeat 1s ease-in-out infinite;
}
</style>
</head>
<body>
<div class="heart-beat"></div>
</body>
</html>
```
在这个例子中,`.heart-beat` 元素会随着"heartbeat"动画循环缩小和放大,给人一种红色的心脏在跳动的感觉。你可以调整动画的关键帧百分比、持续时间以及动画效果来定制不同风格的心跳。
点击心特效 css 冒泡
### 使用 CSS 实现点击心形特效的冒泡动画
#### 定义关键帧动画
为了创建一个点击触发的心形特效并带有冒泡效果,可以利用 `@keyframes` 来定义两个独立的关键帧集:一个是用于生成心跳脉冲的效果;另一个则是模拟气泡上升的过程。
对于心跳部分:
```css
@keyframes heartBeat {
0% { transform: scale(1); }
50% { transform: scale(1.2); }
100% { transform: scale(1); }
}
```
而针对泡泡上浮的动作,则有如下设置[^1]:
```css
@keyframes bubbleUp {
from {
bottom: -20px;
opacity: 0;
}
to {
bottom: 80%;
opacity: 1;
}
}
```
#### 创建 HTML 结构
构建基本结构来容纳这些视觉元素。这里假设有一个按钮作为触发表单,并且每次点击都会新增若干个代表泡沫的小圆圈以及一颗心脏图标。
```html
<div class="container">
<button id="triggerHeart">Click Me!</button>
</div>
<!-- 动态添加 -->
<span class="bubble"></span>
<i class="heart-icon fa fa-heart"></i> <!-- 假设使用了Font Awesome字体库 -->
```
#### 应用样式与交互逻辑
接下来,在 `.container`, `.bubble`, 和`.heart-icon` 类中加入必要的CSS规则,确保当页面加载完成之后能够正常显示初始状态下的组件布局。同时也要考虑如何响应用户的操作行为——即每当用户按下指定按键时便随即制造出一系列随机位置分布的新鲜实例出来。
```css
.container {
position: relative;
}
.bubble {
position: absolute;
width: 10px;
height: 10px;
background-color: rgba(255, 99, 71, 0.6);
border-radius: 50%;
animation-name: bubbleUp;
animation-duration: 3s;
animation-fill-mode: forwards;
pointer-events: none; /* 防止干扰其他事件 */
}
.heart-icon {
font-size: 4em;
color: red;
cursor: pointer;
transition: all ease-out 0.3s;
&:hover,
&:active {
animation: heartBeat 0.8s infinite alternate-reverse both;
}
}
```
最后一步就是编写JavaScript脚本来处理实际发生的动作,比如监听特定DOM对象上的鼠标指针活动情况,一旦检测到有效输入信号就立即执行相应的函数体内容以达到预期目的。
```javascript
document.getElementById('triggerHeart').addEventListener('click', function() {
const container = document.querySelector('.container');
// 插入新的心形图标
let heartIcon = document.createElement("I");
heartIcon.className = "heart-icon fas fa-heart";
container.appendChild(heartIcon);
setTimeout(() => {
heartIcon.remove();
}, 1000)
// 添加多个泡泡
for (let i = 0; i < Math.floor(Math.random()*5)+3 ; ++i){
createBubble(container);
}
});
function createBubble(parentElement) {
var bubble = document.createElement('SPAN');
parentElement.appendChild(bubble).className='bubble';
// 设置随机大小和颜色
bubble.style.width = `${Math.random() * 2 + 1}rem`;
bubble.style.height = bubble.style.width;
bubble.style.backgroundColor = 'rgba('+~~(255*Math.random())+', '+~~(255*Math.random())+', '+~~(255*Math.random())+', 0.6)';
// 设定起始坐标
bubble.style.left = `${Math.random() * window.innerWidth}px`;
// 开启动画
bubble.addEventListener('animationend', () => {
parentElement.removeChild(bubble);
});
}
```
此段代码实现了在用户点击按钮后,动态地向容器内追加心形图案的同时也释放了一组向上浮动消失不见的小圆形物体,从而营造出了类似于水中冒出气泡般生动有趣的场景变化过程。
阅读全文