前端小白-CSS 动画

目录

  • 浏览器渲染的原理
  • CSS动画的两种做法(transtion和animation)

一、浏览器渲染的原理

我们知道,每次打开一个网页。浏览器都会对页面进行一次渲染。那么,浏览器具体做了哪些步骤呢?

Step1 打开网页,浏览器会将你HTML的标签和内容组成一个HTML树(DOM)


DOM

Step2 其中CSS部分也会组成一个CSS树(CSSOM)


CSSOM

Step3 接着,他会把两部共同拥有的元素包括里面的内容提取出来,最终组成渲染所需要的渲染树(render tree)


render tree

Step4 然后浏览器根据“render tree”进行绘制。首先对元素进行布局:文档流、盒模型、计算它的大小和位置等

Step5 紧接着对布局好的元素进行绘制:边框颜色、阴影、文字颜色等

Step6 最后一步就是把以上所有,根据层叠关系合成为我们看到的效果

二、CSS动画的两种做法(transtion和animation)

  1. html和css基础代码的编写
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>跳动的心</title>
    <style>
        * {
            box-sizing: border-box;
        }
        .heart {
            display: inline-block;
            margin: 500px;
            position: relative;
        }
        .left {
            background-color: red;
            width: 100px;
            height: 100px;
            position: absolute;
            bottom: 100%;
            left: 100%;
            transform: rotate(45deg) translateY(70%);
            border-radius: 50% 50% 0 0;
        }
        .right {
            background-color: red;
            width: 100px;
            height: 100px;
            position: absolute;
            bottom: 100%;
            right: 100%;
            transform: rotate(45deg) translateX(70%);
            border-radius: 50% 0 0 50%;
        }
        .bottom {
            background-color: 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>
  1. 使用transtion来实现
    通过给heart盒子添加一个hover属性,使鼠标放上去放大1.3倍
.heart:hover {
    transform: scale(1.3);
}

接着在heart属性中加上一个过渡

.heart {
    display: inline-block;
    margin: 500px;
    position: relative;
    transition: all .3s;
}

添加完后,打开网页。当鼠标放上去就回触发hover的放大属性,并且带有heart的过渡效果。当鼠标移开,hover的放大属性取消,但heart的过渡还在,所以会慢慢恢复原来的大小。

  1. 使用animation来实现
    先设置一个关键帧集,并命名为jump
@keyframes jump {
    0% {
        transform: scale(2);
    }

    100% {
        transform: scale(3);
    }
}

然后将jump的关键帧集赋予给heart标签,在heart内添加animation属性。其中jump为关键帧集的名字,.6s为总时间,infinite为循环,alternate为正反执行

.heart {
    display: inline-block;
    margin: 500px;
    position: relative;
    animation: jump .6s infinite alternate; <-- 我是新增内容 -->
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 浏览器如何渲染页面 浏览器解析 1、浏览器通过请求的 URL 进行域名解析,向服务器发起请求,接收文件(HTML、...
    Sharpe阅读 1,202评论 0 0
  • 1 CSS的简介与历史 CSS (Cascading Style Sheets,层叠样式表)是用来控制网页在浏览器...
    苏wisdom阅读 3,211评论 0 0
  • 一、层叠样式表(CCS) 发明人:李爵士的挪威同事---赖先生。 层叠的含义:样式层叠、选择器层叠、文件层叠。 使...
    scotton阅读 2,490评论 0 0
  • 一、浏览器渲染原理 要了解浏览器渲染页面的过程,首先得知道一个名词——关键渲染路径。关键渲染路径是指浏览器从最初接...
    快到碗里阅读 1,722评论 0 0
  • #css知识总结 1.浏览器渲染原理 渲染树构建,布局,绘制----谷歌团队文章 渲染树图解 2. CSS动画的两...
    做个有趣的孩纸阅读 975评论 0 0