URL到页面加载;css3动画与js动画;水平垂直居中
Posted 别Null.了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URL到页面加载;css3动画与js动画;水平垂直居中相关的知识,希望对你有一定的参考价值。
目录
输入URL到页面加载全过程
域名解析
通过DNS将域名解析成IP地址(域名到IP地址的转换)
本地的DNS服务器向域名的解析服务器发送请求,会收到域名与IP地址的对应关系 。本地DNS服务器将IP地址返回给用户电脑,同时将此对应关系保存在缓存中,使得用户在下次查询时若对应关系相同则可以直接返回结果,加快网络访问。
建立TCP连接(3次握手)
客户端向服务器端发送请求信息;服务器返回给客户端一个确认信息的指示;客户端确认信息后再次返回给服务器端,完成三次握手。完成三次握手,客户端与服务器开始传送数据。
浏览器发出HTTP请求
完整的HTTP请求包含请求起始行、请求头部、请求主体三部分。
服务器响应HTTP请求
服务器在收到浏览器发送的HTTP请求之后,会将收到的HTTP报文封装成HTTP的Request对象,并通过不同的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应体三个部分。
状态码:例如1001等,主要显示请求的状态。
响应体:为服务器返回给浏览器的信息,主要由html,css,js,图片文件组成。
浏览器渲染页面
浏览器内核拿到内容后,渲染步骤大致可以分为以下几步:
- 解析HTML,构建DOM树
- 解析CSS和javascript(浏览器把页面文本转换成了一棵节点带CSS会响应自定义事件的DOM树
- 合并DOM树和CSS等,生成render树
- 布局render树(layout/reflow),绘制render树(paint)
- 浏览器会将树的各层的信息发送给GUI,GUI会将各层合成显示在屏幕上。
关闭连接(4次挥手)
通过四次挥手关闭TCP连接
css3动画和js动画
CSS动画
优点:
- 浏览器可以对动画进行优化。会把所有DOM操作集中起来,只进行一次重绘重排,刷新频率和浏览器刷新频率相同。
- 隐藏不可见元素,使得不可见元素不进行重绘或回流,节约CPU。
- 部分效果可以通过强制使用硬件加速(通过GPU来提高动画性能)。
缺点:
- 不能控制运行过程,无法附加事件绑定回调函数。在动画运行时只能暂停,不能半路返回,也不能改变时间尺度。
- CSS中较为复杂的动画会使得代码冗长。
js动画
优点:
- js动画中控制能力很强, 可以在动画播放过程中进行开始、暂停、回放、终止、取消等。
- js动画效果比CSS动画丰富,有些CSS实现不了的动画效果而js可以实现。
- 代码兼容性较强。
缺点:
- js动画是在浏览器的主线程中运行,其JS代码中还包括JavaScript脚本、样式计算、布局等,可能会进行干扰导致线程阻塞。
- 代码的复杂度较高。
- js动画往往需要频繁操作DOM的css属性来实现视觉上的动画效果,使得浏览器要不停地进行重绘和重排,消耗性能。
结论: 所以如果动画只是简单的状态切换,不需要中间过程控制,可以使用css动画。而对于一些复杂控制的动画,使用js动画则比较可靠。
水平居中 垂直居中 水平垂直居中实现方法
水平居中
1、行内元素
父元素是块级元素:则直接给父元素设置 text-align: center ;
若不是,则先将其父元素设置为块级元素(通过 display: block 设置),再给父元素设置 text-align: center;
2、块级元素
给定宽度:给需要居中的元素设置 margin: 0 auto ;(作用:使盒子自己居中);
不定宽度:(默认子元素宽度和父元素宽度一样),设置子元素为:display:inline-block 或 display:inline;即将其转换成行内块级/行内元素,给父元素设置 text-align:center;
使用定位属性,首先设置父元素为相对定位,再设置子元素为绝对定位,margin-left: -(元素宽度的一半)px或者设置 transform:translate(-50%);
使用flexbox布局实现:给待处理的块级元素的父元素添加属性 display:flex justify-content:center
垂直居中
1、行内元素
单行只需要设置单行行内元素的行高等于盒子的高;多行就给父元素设置 display:table-cell 和 vertical-align: middle
2、块级元素
使用定位,先设置父元素为相对定位,再设置子元素为绝对定位,设置子元素的 top:50%; 即让子元素的左上角垂直居中。设置绝对子元素的 margin-top: -(元素高度的一半)px;或者设置 transform:translateY(-50%);
使用flexbox布局,只需给待处理块级元素的父元素添加属性:display:flex ;align-items:center
水平垂直居中
1、已知高度和宽度的元素
设置父元素为相对定位,子元素为绝对定位:top:0;right:0;bottom:0;left:0;margin:auto;
设置父元素为相对定位,子元素为绝对定位,left:50%;top:50%;margin-left:-(元素宽度的一半)px;margin-top:-(元素高度的一半)px;
2、未知高度和宽度的元素
使用定位元素,设置父元素为相对定位,子元素为绝对定位,left:50%;top:50%; transform:translateX(-50%) translateY(-50%);
使用flex布局实现,设置父元素为flex定位,justify-content:center;align-items:center;
以上是关于URL到页面加载;css3动画与js动画;水平垂直居中的主要内容,如果未能解决你的问题,请参考以下文章
新“页面加载”时 Firefox 中的 Choppy 和 Jerky CSS3 动画
现在很流行的网页下拉加载动画效果,是用啥技术实现的呢?只用了js和css3吗?请知道的人详细回答