浏览器渲染原理
- 根据html构建DOM树
- 根据css构建css树
- 将两棵树合并成一颗渲染树
- layout布局(文档流,盒模型,计算大小和位置)
- paint绘制(把边框颜色,文字颜色,阴影等画出来)
- compose合成(根据层叠关系展示画面)
transition和animation分别实现跳动的红心
- 前往查看效果
//transition实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.heart {
display: inline-block;
position: relative;
margin: 100px;
transition: all 1s;
}
.heart:hover {
transform: scale(1.5);
}
.left {
background: red;
position: absolute;
display: inline-block;
width: 100px;
height: 100px;
border-radius: 50%;
transform: translateX(40px) translateY(-40px);
}
.right {
background: red;
position: absolute;
display: inline-block;
width: 100px;
height: 100px;
border-radius: 50%;
transform: translateX(-40px) translateY(-40px);
}
.bottom {
background: red;
width: 100px;
height: 100px;
transform: rotate(45deg);
}
</style>
</head>
<body>
<div class="heart">
<div class="left"></div>
<div class="right"></div>
<div class="bottom"></div>
</div>
</body>
</html>
- 前往查看效果
//animation实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title></title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.heart {
display: inline-block;
position: relative;
margin: 100px;
animation: 0.5s anim infinite alternate;
}
@keyframes anim {
from {
transform: scale(1);
}
to {
transform: scale(1.5);
}
}
.left {
background: red;
position: absolute;
display: inline-block;
width: 100px;
height: 100px;
border-radius: 50%;
transform: translateX(40px) translateY(-40px);
}
.right {
background: red;
position: absolute;
display: inline-block;
width: 100px;
height: 100px;
border-radius: 50%;
transform: translateX(-40px) translateY(-40px);
}
.bottom {
background: red;
width: 100px;
height: 100px;
transform: rotate(45deg);
}
</style>
</head>
<body>
<div class="heart">
<div class="left"></div>
<div class="right"></div>
<div class="bottom"></div>
</div>
</body>
</html>