background-attachment: 决定 背景图像的位置 是在 视口内固定 ,或者 随着包含它的区块滚动 。 它的属性值的含义如下: 属性值 含义 fixed 背景相对于视口固定。...即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动 local 背景相对于元素的内容固定。...scroll 背景相对于元素本身固定,而不是随着它的内容滚动(对元素边框是有效的)。 对父元素 css_demo 设置 overflow: scroll, 当元素内容超出页面时滚动。...,但只有当其对应容器抵达视口时才能显示对应可视区域的背景图。...核心问题是移动浏览器(Chrome和Safari)有一个“帮助”功能,地址栏有时可见,有时隐藏,改变了视口的可见大小。
背景 在上篇文章:记一次 「 无限列表 」滚动优化 中, 我介绍了「 如何优化一个无限滚动列表 」。 用到了懒加载方案, 一个关键点是:需要判断元素是否在当前视区。 我们今天就看看这个问题。...---- 今天的主要内容包括: 使用元素位置判断元素是否在当前视区 使用 Intersection Observer 判断元素是否在当前视区 实例:懒加载 实例:无限滚动 实用 npm 包推荐 正文...比如说,你想跟踪 DOM 树里的一个元素,当它进入可见窗口时得到通知。...从输出最有用的特性是: isIntersecting target intersectionRect isIntersecting:当元素与默认根(在本例中为视口)相交时,将为true. target:...实例:懒加载(lazy load) 有时,我们希望某些静态资源(比如图片),只有用户向下滚动,它们进入视口时才加载,这样可以节省带宽,提高网页性能。这就叫做"惰性加载"。
background-attachment: fixed fixed 此关键字表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。...fixed 此关键字表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。 这里的关键在于,即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。...而滚动视差效果,正是不按常理出牌的一个效果,重点来了: 当页面滚动到图片应该出现的位置,被设置了 background-attachment: fixed 的图片并不会继续跟随页面的滚动而跟随上下移动,...而是相对于视口固定死了。...CodePen Demo -- CSS 3D parallax 很明显,当滚动滚动条时,不同子元素的位移程度从视觉上看是不一样的,也就达到了所谓的滚动视差效果。
background-attachment: fixed fixed 此关键字表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。...fixed 此关键字表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。 这里的关键在于,即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。...而滚动视差效果,正是不按常理出牌的一个效果,重点来了: 当页面滚动到图片应该出现的位置,被设置了 background-attachment: fixed 的图片并不会继续跟随页面的滚动而跟随上下移动,...而是相对于视口固定死了。...,效果如下: [css3dparallax] 很明显,当滚动滚动条时,不同子元素的位移程度从视觉上看是不一样的,也就达到了所谓的滚动视差效果。
background-attachment: fixed fixed 此关键字表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。...fixed 此关键字表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。 这里的关键在于,即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。...而滚动视差效果,正是不按常理出牌的一个效果,重点来了: 当页面滚动到图片应该出现的位置,被设置了 background-attachment: fixed 的图片并不会继续跟随页面的滚动而跟随上下移动,...而是相对于视口固定死了。...CodePen Demo — CSS 3D parallax 很明显,当滚动滚动条时,不同子元素的位移程度从视觉上看是不一样的,也就达到了所谓的滚动视差效果。
background-attachment: fixed fixed 此关键字表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。...fixed 此关键字表示背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。 这里的关键在于,即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。...而滚动视差效果,正是不按常理出牌的一个效果,重点来了: 当页面滚动到图片应该出现的位置,被设置了 background-attachment: fixed 的图片并不会继续跟随页面的滚动而跟随上下移动,...而是相对于视口固定死了。...CodePen Demo — CSS 3D parallax(https://codepen.io/Chokcoco/pen/EpOeRm) 很明显,当滚动滚动条时,不同子元素的位移程度从视觉上看是不一样的
3.3 fixed 属性值 fixed表示,相对于视口(viewport,浏览器窗口)进行偏移,即定位基点是浏览器窗口。这会导致元素的位置不随页面滚动而变化,好像固定在网页上一样。 ?...div { position: fixed; top: 0; } 上面代码中,div元素始终在视口顶部,不随网页滚动而变化。...它的具体规则是,当页面滚动,父元素开始脱离视口时(即部分不可见),只要与sticky元素的距离达到生效门槛,relative定位自动切换为fixed定位;等到父元素完全脱离视口时(即完全不可见),fixed...,#toolbar的父元素开始脱离视口,一旦视口的顶部与#toolbar的距离小于20px(门槛值),#toolbar就自动变为fixed定位,保持与视口顶部20px的距离。...页面继续向下滚动,父元素彻底离开视口(即整个父元素完全不可见),#toolbar恢复成relative定位。 五、 sticky 的应用 sticky定位可以实现一些很有用的效果。
scrollHeight 的值等于该元素在不使用滚动条的情况下为了适应视口中所用内容所需的最小高度。...本质上就是当元素出现滚动条时,判断当前元素出现的高度 + 滚动条高度 = 元素本身的高度(包含隐藏部分)。...element.getBoundingClientRect()返回的 height 和 width 是针对元素可见区域的宽和高(具体尺寸根据 box-sizing 决定),并不包含滚动条被隐藏的内容。...当计算边界矩形时,会考虑视口区域(或其他可滚动元素)内的滚动操作,也就是说,当滚动位置发生了改变,top 和 left 属性值就会随之立即发生变化(因此,它们的值是相对于视口的,而不是绝对的) 。...计算元素是否出现在视口内 利用的还是元素距离视口的位置小于视口的大小。 注意即便变成了负值,那么也表示元素曾经出现过在屏幕中只是现在不显示了而已。
维基百科①的解释为: 在计算机图形学理论中,当将一些对象渲染到图像时,存在两个类似区域的相关概念。(视口和窗口) 视口是一个以特定于渲染设备的坐标表示的区域(通常为矩形)。...视口范围内的图像会以剪切的形式,投影到到世界坐标窗口中,完成图像的可视化展示。 在 Web 浏览器中,视口是整个文档的可见部分。如果文档大于视口,则用户可以通过滚动来移动视口。...同理,当浏览器窗口比较小,而我们想要看到页面下面的内容时,我们需要向下滚动滚动条,浏览器在实现这个的过程中所依赖的,便是视口的下移。...不过,该方案依然会有很多问题: ●对缩小版页面内细节内容的浏览,依然要依靠放大和滚动,体验不好; ●如果 为 PC 设计的 网页的 CSS 宽度描述大于 980px,那么在移动端展示时,初始页面依然会有滚动条...在滚动到视图中之前,视口外部的内容在屏幕上不可见。 ●当前可见的视口部分称为可视视口。这可以小于布局视口,例如当用户进行缩放缩放时。该布局视口保持不变,但视觉视口变小。
你能所学到的知识点 ❝ 前置知识点 LCP 是个啥 如何测量 LCP 优化 LCP 的10种方式 ❞ 前置知识点 视口(Viewport) ❝网页视口是指在浏览器中用于显示网页内容的「可见区域」。...FCP也是一个指标,它告诉我们当某人访问我们的网站时,「第一个带有任何内容的元素绘制所需的时间」。...相反,它将专注于加载视口上方的内容,并仅在需要时渲染非关键资源,以加快页面加载过程。 ❞ 使用这种方法,我们的网站可以根据它们与视口的距离异步加载文件。...例如,首屏上方呈现的内容(如logo图像)将在初始加载时立即显示。但是,视口之外的视频缩略图等元素将「用占位图像替换」,直到用户滚动到它们为止。 然而,由于几个问题,延迟加载有时可能会恶化LCP得分。...红色(非关键):适用于不立即可见内容的样式;对于页面的核心功能而言未使用的代码。 ❝关于Coverage的使用方式,可以参考我们之前写过的浏览器之性能指标_FCP),这里就不在赘述了。
,布局要经过如下操作: 创建布局树:遍历DOM树中的可见节点,把节点添加到布局树中,不可见节点忽略 布局计算:将节点对应的styleSheet对象合并,计算出展示节点的样式具体样式 image.png...后缓冲区:一旦显卡把合成的图像保存到后缓冲区,后缓冲区和前缓冲区交换,当滚动或缩放时,渲染引擎通过渲染流水线产生图片并发送到显卡的后缓冲区,显示器刷出图像,显卡更新的频率和显示器刷新频率是一致的,但复杂场景...属性,渲染引擎解析到css时,要先将其转化为浏览器可以理解的styleSheet结构,转换过程需要经过属性值得标准化过程,和继承层叠规则计算出每个dom节点的样式,styleSheet也为之后js脚本提供操作接口...布局:布局阶段将dom树与样式表styleSheet进行合并计算出最终展示的节点的样式和内容 分层:当界面内元素出现层叠上下文属性时,并且出现了内容溢出,需要裁剪出现滚动条时,就会提升为独立的一层,用层来优化渲染合成图片的速度...绘制:当分层树生成后,渲染引擎会创建绘制列表,绘制的过程中需要使用合成线程来完成 分块:合成线程会将图层划分为图块,视口附近的图块会优先进行合成 栅格化:图块是栅格化的最小单位,将图块生成位图的操作称为栅格化
getBoundingClientRect Element.getBoundingClientRect() 含义: 方法返回元素的大小及其相对于视口的位置。...注意: 如果所有的元素边框都是空边框,那么这个矩形给该元素返回的 width、height 值为0,left、top值为第一个css盒子(按内容顺序)的top-left值。...当计算边界矩形时,会考虑视口区域(或其他可滚动元素)内的滚动操作,也就是说,当滚动位置发生了改变,top和left属性值就会随之立即发生变化(因此,它们的值是相对于视口的,而不是绝对的)。...如图所示: 当页面的元素在浏览器的左上角时,得到的top和left值为负值,right和bottom值为正值。...; // 浏览器可见区域高度。
# 3.3 fixed 属性值 fixed表示,相对于视口(viewport,浏览器窗口)进行偏移,即定位基点是浏览器窗口。这会导致元素的位置不随页面滚动而变化,好像固定在网页上一样。...div { position: fixed; top: 0; } 1 2 3 4 复制 上面代码中,div元素始终在视口顶部,不随网页滚动而变化。...它的具体规则是,当页面滚动,父元素开始脱离视口时(即部分不可见),只要与sticky元素的距离达到生效门槛,relative定位自动切换为fixed定位; 等到父元素完全脱离视口时(即完全不可见),fixed...,#toolbar的父元素开始脱离视口,一旦视口的顶部与#toolbar的距离小于20px(门槛值),#toolbar就自动变为fixed定位, 保持与视口顶部20px的距离。...页面继续向下滚动,父元素彻底离开视口(即整个父元素完全不可见),#toolbar恢复成relative定位。 # 五、 sticky 的应用 sticky定位可以实现一些很有用的效果。
当一个Intersection Observer对象被创建时,其被配置为监听根中一段给定比例的可见区域。...一次是目标元素刚刚进入视口(开始可见),另一次是完全离开视口(开始不可见)。...() 方法的返回值,如果没有根元素(即直接相对于视口滚动),则返回 null boundingClientRect:目标元素的矩形区域的信息 intersectionRect:目标元素与视口(或根元素)...比如,[0, 0.25, 0.5, 0.75, 1] 就表示当目标元素 0%、25%、50%、75%、100% 可见时,会触发回调函数。...应用场景 「图片的懒加载」 有时,我们希望某些静态资源(比如图片),只有用户向下滚动,它们进入视口时才加载,这样可以节省带宽,提高网页性能。
网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它。 上图的绿色方块不断滚动,顶部会提示它的可见性。...一次是目标元素刚刚进入视口(开始可见),另一次是完全离开视口(开始不可见)。...intersectionRatio:目标元素的可见比例,即intersectionRect占boundingClientRect的比例,完全可见时为1,完全不可见时小于等于0 上图中,灰色的水平方框代表视口...四、实例:惰性加载(lazy load) 有时,我们希望某些静态资源(比如图片),只有用户向下滚动,它们进入视口时才加载,这样可以节省带宽,提高网页性能。这就叫做"惰性加载"。...比如,[0, 0.25, 0.5, 0.75, 1]就表示当目标元素 0%、25%、50%、75%、100% 可见时,会触发回调函数。
作为开发人员,希望 100vh (视口高度的 100%)表示“与视口一样高”,但该 vh 单元不考虑移动设备上缩回导航栏之类的事情,因此有时它最终会太长并导致滚动。...为了解决这个问题,现在在 Web 平台上提供了新的单位值: 小视口高度和宽度(或 svh 和 svw),表示最小的活动视口大小。 较大的视口高度和宽度(lvh 和 lvw),表示最大大小。...动态视口高度和宽度(dvh 和 dvw)。...这意味着当您向上或向下滚动时,动画会向前或向后滑动。此外,对于滚动驱动动画,您还可以根据元素在其滚动容器中的位置来控制动画。...这允许您创建有趣的效果,例如视差背景图像、滚动进度条和在进入视野时显示自己的图像。 此 API 支持一组 JavaScript 类和 CSS 属性,使您可以轻松创建声明性滚动驱动的动画。
因此官方就提出了Intersection Observer API,该 API 的出现就是为了高效的解决以下两大类问题: 某个元素是否可见,如: 图片懒加载——当图片滚动到可见时才进行加载 内容无限滚动...用于检查目标的可见性。默认为浏览器视口。 如果指定为 null,也为浏览器视口。 必须是目标元素的父级元素。 rootMargin --- 根元素的扩缩边距。...当传入数值类型时,只会触发一次。 当传入数组类型时,可触发多次。...顶级文档的视口(一般为 html) rootMargin 根元素的扩缩边距。...element.getBoundingClientRect()相同 rootBounds 返回根元素的矩形区域的信息,getBoundingClientRect()方法的返回值,如果没有根元素(即直接相对于视口滚动
时,我们用到最多的单位是 px,即 CSS像素,当页面缩放比例为 100%时,一个 CSS像素等于一个设备独立像素。...布局视口( layout viewport):当我们以百分比来指定一个元素的大小时,它的计算值是由这个元素的包含块计算而来的。当这个元素是最顶级的元素时,它就是基于布局视口来计算的。...上面在介绍 CSS像素时曾经提到 页面的缩放系数=CSS像素/设备独立像素,实际上说 页面的缩放系数=理想视口宽度/视觉视口宽度更为准确。...所以,当页面缩放比例为 100%时, CSS像素=设备独立像素, 理想视口=视觉视口。 我们可以通过调用 screen.width/height来获取理想视口大小。...document.documentElement.scrollHeight:在不使用滚动条的情况下适合视口中的所有内容所需的最小宽度。
领取专属 10元无门槛券
手把手带您无忧上云