HTML页面是如何适应不同分辨率的显示器

html-css014

HTML页面是如何适应不同分辨率的显示器,第1张

HTML页面何适应不同分辨率的显示器可以通过:响应式布局、自适应网页设计等方法:

1、响应式布局设计:

响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,响应式布局就是实现不同屏幕分辨率的终端上浏览网页的不同展示方式。通过响应式设计能使网站在手机和平板电脑上有更好的浏览阅读体验。一个网站能够兼容多个终端,而不是为了每一个终端做一个特定的版本。

2、自适应网页设计:

自适应网页设计(AdaptiveWebDesign)指能使网页自适应显示在不同大小终端设备上新网页设计方式及技术。

扩展资料:

响应式布局与自适应布局的区别:

1、自适应布局通过检测视口分辨率,来判断当前访问的设备是:pc端、平板、手机,从而请求服务层,返回不同的页面;响应式布局通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容。

2、自适应布局需要开发多套界面,而响应式布局只需要开发一套界面就可以了。

3、自适应对页面做的屏幕适配是在一定范围:比如pc端一般要大于1024像素,手机端要小于768像素。而响应式布局是一套页面全部适应。

4、自适应布局如果屏幕太小会发生内容过于拥挤。而响应式布局正是为了解决这个问题而衍生出的概念,它可以自动识别屏幕宽度并做出相应调整的网页设计。

参考资料来源:百度百科-响应式布局

参考资料来源:百度百科-自适应网页设计

屏幕的总宽度和高度,他们是显示器的尺寸,而不是浏览器的尺寸。这些尺寸以设备像素为单位进行测量,平时很少用到

通过 screen.width 和 screen.height 获取

浏览器窗口的内部尺寸,以CSS像素为单位(测量值包含滚动条)

通过 window.innerWidth 和 window.innerHeight 获取

文档的水平和垂直滚动偏移量。因此,您可以找出用户滚动了多少。以CSS像素为单位

通过 window.pageXOffset 和 window.pageYOffset 获取

字面理解,视口即可以看见的窗口大小。所以大多数情况下他和浏览器的窗口大小一致。

我们知道html页面最外层的元素是html,他在浏览器中显示,但其实在浏览器和html页面之间,还有一层,即:视口。

他在html元素的外层,包含html。

通过 document.documentElement.clientWidth 和 document.documentElement.clientHeight //document.documentElement实际上是html元素 获取

我们平时设置的html/body width:100%,实际上就是设置html,body等于视口的宽度。设置某个元素,如侧边栏width:20%,实际也是相对于视口设置的(如果他的上级元素是body:width:100%),所以当浏览器窗口变化,他的宽度会跟随变化。

但视口不是HTML创建的,因此不能受CSS影响。当我们设置html为固定宽度width:200px,它的值还是浏览器窗口的宽度和高度。

窗口包含滚动条的大小,视口不包含,视口只是我们可以看见的大小

即页面实际的宽和高

通过 document.documentElement.offsetWidth 和 document.documentElement.offsetHeight 获取

发生鼠标点击事件时,常见的属性值

@media all and (max-width: 400px)

此处的值一般指的浏览器大小,即视口的大小

A tale of two viewports — part one

A tale of two viewports — part two

当浏览器从服务器接收到页面的HTML响应时,在屏幕上绘制像素之前需要采取许多步骤。浏览器为页面的初始绘制需要执行的顺序称为“ 关键渲染路径 ” (CRP)。

CRP知识对于了解如何改善站点性能非常有用。CRP分为6个阶段-

DOM( 文档对象模型 )树是完全解析的HTML页面的对象表示。从根元素开始, <html>将为页面上的每个元素/文本创建节点。嵌套在其他元素中的元素表示为子节点,每个节点都包含该元素的完整属性。例如, <a>元素将具有 href 与其节点关联的属性。

以这个样本文件为例-

这将创建以下DOM树-

关于HTML的一件好事是它可以部分执行。无需加载完整的文档即可使内容开始出现在页面上。但是,其他资源(CSS和JavaScript)可能会阻止页面的呈现。

CSSOM( CSS对象模型 )是与DOM关联的样式的对象表示。它以与DOM相似的方式表示,但包括每个节点的关联样式,无论它们是显式声明的还是隐式继承的。

在上述 style.css 文档的文件中,我们具有以下样式-

这将创建以下CSSOM树-

CSS被视为 “渲染阻止资源” 。这意味着如果不首先完全解析资源,则无法构建 渲染树 。与HTML不同,由于CSS具有继承级联性质,因此不能部分使用。稍后在文档中定义的样式可以覆盖和更改先前定义的样式。因此,如果我们在解析整个样式表之前开始使用样式表中较早定义的CSS样式,则可能会遇到应用了错误CSS的情况。这意味着,在我们进入下一阶段之前,必须对CSS进行完全解析。

CSS文件仅适用于当前设备,才被视为渲染阻止。该 <link rel="stylesheet">标签可以接受一个 media 属性,我们可以在其中指定任何媒体查询其内的样式应用到。例如,如果我们有一个样式表,其media属性为 orientation:landscape ,并且我们正在以纵向模式查看页面,则该资源将不被视为渲染阻止。

CSS也可以是 “脚本阻止” 。这是因为JavaScript文件必须等待CSSOM构造完成后才能运行。

JavaScript被视为 “解析器阻止资源” 。这意味着HTML文档本身的解析已被JavaScript阻止。

当解析器到达一个 <script>标签时,无论是内部标签还是外部标签,它都会停止获取(如果是外部标签)并运行它。这就是为什么,如果我们有一个JavaScript文件引用了文档中的元素,则必须将其放在该文档的外观之后。

为了避免JavaScript被解析器阻止,可以通过应用 async 属性异步加载它。

渲染树是DOM和CSSOM的组合。它是一棵树,代表最终将在页面上呈现的内容。这意味着它仅捕获可见的内容,并且不包括例如使用CSS被CSS隐藏的元素 display: none 。

使用上面的示例DOM和CSSOM,将创建以下渲染树-

布局是决定视口大小的要素,它为依赖于它的CSS样式(例如百分比或视口单位)提供了上下文。视口大小由文档头中提供的meta视口标签确定,或者,如果未提供标签,则使用默认视口宽度980px。

例如,最常见的元视口值是将视口大小设置为与设备宽度相对应-

如果用户在宽度为例如1000px的设备上访问网页,则尺寸将基于该单位。视口的一半将是500px,10vw将是100px,依此类推。

最后,在“绘画”步骤中,页面的可见内容可以转换为要在屏幕上显示的像素。

绘制步骤需要花费多少时间取决于DOM的大小以及所应用的样式。某些样式比其他样式需要执行更多工作。例如,复杂的渐变背景图像比简单的纯色背景需要更多的时间。

要查看正在处理的关键渲染路径,我们可以在DevTools中对其进行检查。在Chrome浏览器中,它位于“ 时间轴” 标签下(在Canary中,不久后成为Chrome稳定版,它已重命名为 Performance )。

举例来说,我们上面的示例HTML(带有添加的 <script>标记)-

如果我们查看页面加载的事件日志,就会得到以下信息:

基于此信息,我们可以决定如何优化“关键渲染路径”。

Understanding the Critical Rendering Path