固定定位 固定定位使元素相对于视口进行定位,不管页面滚动与否。设置 position: fixed; 可以实现固定定位,元素会固定在视口中的特定位置。 这是一个固定定位的元素div> div style="height: 2000px;">滚动页面查看效果div> 示例中固定定位的元素始终固定在视口的右下角...class="sticky">这是一个粘性定位的元素div> div class="content">滚动页面查看效果div> 示例中粘性定位的元素会在视口顶部粘住...四、实战应用示例 一个固定导航栏 固定导航栏是一种常见的网页布局需求,它使导航栏在滚动页面时始终保持在视口的顶部。 div> 导航栏使用了固定定位,始终保持在视口的顶部,内容区域向下移动以避免被导航栏遮挡。
"> div class="sticky"> SOME CONTENT div> div> 当我在包裹元素内添加更多元素时,它开始正常工作了。...当视口位置与位置定义匹配时,元素将浮动,例如: top: 0px 。...让我来解释一下: Relative 定位(或Static定位)- 粘性定位元素类似于相对定位和静态定位,因为它保持DOM中的自然间隙(保持在流中)。...Fixed - 当项目固定时,它的行为与 position: fixed 完全相同,浮动在视口的相同位置,从流中移除。...这意味着可以定义页脚具有粘性位置,并且在向下滚动时始终会出现粘在底部。当我们到达粘性容器的末尾时,元素将停留在其自然位置。最好将其用于自然位置为粘性容器底部的元素。
需求背景一个每行3列的列表布局,列表中的每一项有一个已读/未读状态,只要展现在了用户的视窗内就算已读状态了。...想到的方案:直接监听滚动高度,根据滚动距离来计算是否展现在页面内借助第三方插件,找到一个 vue-check-view,不过只能监听整个 window 视窗的页面滚动,如果想监听某个元素的内部滚动是否可见没法实现刚开始直接用的...然后想到h5里新出的监听元素是否进入视口的 IntersectionObserver,一看好像可以满足,在借助 vue 的自定义指令来封装成一个自定义指令使用。...或者一些额外的参数需要传到指令里来进行判断的...这时我们就可以借助第二个参数 binding 来实现,binding.value 就是我们写在指令 = 后面的东西,可以传递函数、对象、数值、字符串、布尔任意类型...监听元素是否进入某个视口自定义指令监听元素是否进入某个视口自定义指令,可以通过 root 参数传入父视口的选择器,不传就默认是相对于浏览器window窗口。适用于元素懒加载、埋点上报、查看了修改状态。
需求背景:一个每行3列的列表布局,列表中的每一项有一个已读/未读状态,只要展现在了用户的视窗内就算已读状态了。...想到的方案: 直接监听滚动高度,根据滚动距离来计算是否展现在页面内 借助第三方插件,找到一个 vue-check-view,不过只能监听整个 window 视窗的页面滚动,如果想监听某个元素的内部滚动是否可见没法实现...然后想到h5里新出的监听元素是否进入视口的 IntersectionObserver,一看好像可以满足,在借助 vue 的自定义指令来封装成一个自定义指令使用。...或者一些额外的参数需要传到指令里来进行判断的...这时我们就可以借助第二个参数 binding 来实现,binding.value 就是我们写在指令 = 后面的东西,可以传递函数、对象、数值、字符串、布尔任意类型...监听元素是否进入某个视口自定义指令 监听元素是否进入某个视口自定义指令,可以通过 root 参数传入父视口的选择器,不传就默认是相对于浏览器window窗口。
background-attachment: 决定 背景图像的位置 是在 视口内固定 ,或者 随着包含它的区块滚动 。 它的属性值的含义如下: 属性值 含义 fixed 背景相对于视口固定。...子元素 word 随着页面滚动显示, 对子元素 bg 设置 background-attachment: fixed, 使其在当前视口固定。...perspective属性用在容器上时,容器内每个元素的表现形式会不一样。 当perspective属性用在容器内每个元素身上时,会根据各自的设置值进行表现。...,但只有当其对应容器抵达视口时才能显示对应可视区域的背景图。...这些浏览器没有将 100vh 的高度调整为视口高度变化时屏幕的可见部分,而是将 100vh 设置为隐藏地址栏的浏览器高度。
什么是虚拟滚动虚拟滚动(Virtual Scrolling)是一种高效的渲染技术,主要用于处理大量数据的长列表或表格。其基本原理是只渲染当前视口内可见的元素,而对不可见的部分仅保留占位符。...这种方法大幅减少了DOM节点的数量,从而提升了渲染性能和滚动流畅度。虚拟滚动的核心有以下 4 点:渲染可见元素:虚拟滚动只会渲染当前视口内的元素,而不是整个列表或表格。...比方说,假设视口中只能显示10个元素,那么虚拟滚动技术只会渲染这10个元素,即使总数据量有上万个。动态更新视口内容:当用户进行滚动操作 时,使用虚拟滚动技术可以动态更新可视区域内的内容。...新进入视口的元素会被渲染,而离开视口的元素会被销毁,从而保持视口内元素的数量相对稳定。减少DOM操作:由于只渲染了可视区域内的元素,虚拟滚动大幅减少了DOM操作的频率。...占位元素:为了确保滚动条的正确性,虚拟滚动技术通常会使用一个高度为所有元素总高度的占位元素。这种占位元素会占据整个列表的高度,从而使滚动条的行为与渲染所有元素时相同。
,gsap会接管滚动条,进行div的横向滚动。...pin: true: 将 boxContainer 固定在视口中,直到动画结束。start: 'top top': 定义动画开始的滚动位置,当 boxContainer 的顶部与视口顶部对齐时开始。...end: +=${boxContainer.offsetWidth || 0 - innerWidth}: 定义动画结束的滚动位置,计算方式是 boxContainer 的宽度减去视口的宽度。...这段代码的目的是在用户滚动页面时,创建一个水平滚动的动画效果,使得 boxItems 元素在 boxContainer 内水平移动。3....查看效果设置了的start: 'top top'后,可以看到marker的scroller-start和scroller-end都在视口的顶部。
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定位可以实现一些很有用的效果。
视口 视口是移动设备上用来显示网页的区域,一般会比移动设备可视区域大,宽度可能是980px或者1024px,目的是为了显示下整个为PC端设计的网页,这样带来的后果是移动端会出现横向滚动条,为了避免这种情况...这样会让网页不容易观看,可以用 meta 标签,name=“viewport ” 来设置视口的大小,将视口的大小设置为和移动设备可视区一样的大小。...使用视口解决上面的div显示太小的问题 ? ? 设置了视口之后,div显示比较正常了。...cover:将背景图像等比缩放到完全覆盖容器,背景图像有可能超出容器。 contain:将背景图像等比缩放到宽度或高度与容器的宽度或高度相等,背景图像始终被包含在容器内。...contain:将背景图像等比缩放到宽度或高度与容器的宽度或高度相等,背景图像始终被包含在容器内。 ?
viewport交叉状态的方法,祖先元素与视窗viewport被称为根root,也就是说IntersectionObserver API,可以自动观察元素是否可见,由于可见visible的本质是,目标元素与视口产生一个交叉区...描述 IntersectionObserver解决了一个长期以来Web的问题,观察元素是否可见,这个可见visible的本质是,目标元素与视口产生一个交叉区,所以这个API叫做交叉观察器。...属性IntersectionObserver.rootMargin只读,计算交叉时添加到根root边界盒bounding box的矩形偏移量,可以有效的缩小或扩大根的判定范围从而满足计算需要,此属性返回的值可能与调用构造函数时指定的值不同...rootBounds:根元素的矩形区域的信息,是getBoundingClientRect方法的返回值,如果没有根元素即直接相对于视口滚动,则返回null。...intersectionRect:目标元素与视口或根元素的交叉区域的信息。
# 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定位可以实现一些很有用的效果。
1.Intersection Observer API 的基本介绍 Intersection Observer API提供了一种异步检测目标元素与祖先元素或视口(可统称为根元素)相交情况变化的方法。...——当用户滚动到接近底部时直接加载更多,而无需翻页,给用户一种网页可以无限滚动的错觉 两个元素是否相交,如: 检测广告的曝光情况——为了计算广告收益,需要知道广告元素的曝光情况 在用户看见某个区域时执行任务或播放动画...默认为浏览器视口。 如果指定为 null,也为浏览器视口。 必须是目标元素的父级元素。 rootMargin --- 根元素的扩缩边距。...顶级文档的视口(一般为 html) rootMargin 根元素的扩缩边距。...element.getBoundingClientRect()相同 rootBounds 返回根元素的矩形区域的信息,getBoundingClientRect()方法的返回值,如果没有根元素(即直接相对于视口滚动
使用calc函数实现 使用 calc 函数实现的方式会比较简单,中间的容器最少高度为视口宽度的100% - 头部和底部两部分的高度即可完成该功能。...Flex方案 实现步骤如下 开启 flex 布局 将子元素布局方向修改为垂直排列 设置最小高度为当前视口,使不管中间部分有多高,始终都可以保持在底部 设置中间部分容器高度为自适应 实现CSS代码如下:...设置最小高度为当前视口,使不管中间部分有多高,始终都可以保持在底部 */ min-height: 100vh; } .container { /* 设置 中间 部分自适应 */...Grid方案 实现步骤如下 开启 grid 布局 置最小高度为当前视口,使不管中间部分有多高,始终都可以保持在底部 实现CSS代码如下: .main { /* 开启grid布局 */ display...: grid; grid-template-rows: auto 1fr auto; /* 设置最小高度为当前视口,使不管中间部分有多高,始终都可以保持在底部 */ min-height
才有效果,不然它始终和clientHeight相等 scrollTop 代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度。...在没有滚动条时scrollTop==0。...大概是这样 实现思路就是,去拿到选中元素的clientHeight和offsetTop,并和列表的高度区间做比较,计算出元素是在列表视口的内部,还是溢出的视口,如果溢出了视口,那么就回滚。...text-align: center; font-size:22px; color:#9ef64d; } 核心方法 const { value } = this.state; // 滚动视口的高度...|| needScroll < 0) { // 将选中元素放入容器视口中 const timer = setTimeout(() => { this.scrollRef.scrollTop
因此,如果我们将这个属性应用在一些一开始需要被隐藏,但是其后在页面的某一时刻需要被渲染,或者是一些需要被频繁切换显示、隐藏状态的元素上,其渲染效率将会有一个非常大的提升。...当然,现代浏览器愈加趋于智能,基于这种场景,其实我们非常希望对于仍未看到,仍旧未滚动到的区域,可以延迟加载,只有到我们需要展示、滚动到该处时,页面内容才进行渲染。...好,我们实际开始进行滚动,看看会发生什么: 由于下方的元素在滚动的过程中,出现在视口范围内才被渲染,因此,滚动条出现了明显的飘忽不定的抖动现象。...当然,在向下滚动的过程中,上方消失的已经被渲染过且消失在视口的元素,也会因为消失在视口中,重新被隐藏。因此,即便页面滚动到最下方,整体的滚动条高度还是没有什么变化的。...div> div> 如果我们不使用 contain-intrinsic-size,只对视口之外的元素使用 content-visibility: auto,那么视口外的元素高度通常就为 0。
在有滚动条时讨论scrollHeight才有意义,在没有滚动条时scrollHeight==clientHeight恒成立。单位px,只读元素。...scrollTop: 代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度。在没有滚动条时scrollTop==0恒成立。单位px,可读可设置。...2、表格内容结构 我们将第二部分的表格放置在 container 的容器内,方便我们做响应式相关的设置,表格基础结构的内容如下: div class="container"> div class...获取用户从视口顶部滚动的距离(pageYOffset) 获取最后一部分内容区域距离窗口顶部的高度(getBoundingClientRect().top) 检测滚动条是否滚动到表格区域。...如果滚动到表格区域,获取重置后的表头宽度。 接下来我们来判断第三部分内容区域距离视口顶部的高度是否大于表头的高度。
div> div> .container 类设置了一个固定宽度的容器,无论屏幕的宽度如何,容器的宽度都保持在800px,...这会导致在小屏幕设备上出现水平滚动条。... div> div> 媒体查询用于检测屏幕宽度是否小于600px,如果是,.container 的宽度将变为100%,并且内边距将减少...七、视口元标签 视口元标签用于控制网页在移动设备上的显示方式。它允许我们设置视口的宽度和缩放级别,从而确保页面在不同设备上能够正确渲染。...7.1 基本视口设置 设置视口宽度为设备宽度,可以确保页面在移动设备上按照预期显示。 示例:视口元标签 <!
最重要的是,您将熟悉jQuery Waypoints插件的基础知识,该插件将提供高级功能:当用户向下滚动时,导航栏将停留在视口的顶部,并进行更改以指示当前部分。...当用户向下滚动时,表达式direction==='down'计算结果为true ,因此我们的导航栏将接收到sticky类,并停留在视口的顶部。...当元素的顶部在视口顶部下方的指定距离处时,正值触发路点;当元素的位置在视口顶部上方远处时,负值触发路径。 )。...offset的值可以是数字(代表固定数量的像素),包含百分比的字符串(解释为视口高度的百分比)或返回多个像素的函数。 最后一个可以提供一些严重的灵活性,稍后我们将使用它。...实际上,这意味着将告诉脚本当前正在查看哪个部分的假想线放置在视口顶部的三分之一左右,即观看者在阅读长文本时所处的位置。 一个更强大的解决方案可以使用功能来适应导航栏高度的变化。
前言当我们在设计网页时,经常需要对网页中的元素进行定位,以便它们出现在我们想要的位置。在 CSS 中,我们可以使用不同的定位属性来定位元素。...div { position: relative; top: 20px; left: 10px;}三、position: absolute这个属性将元素从文档流中删除,并相对于其最近的已定位祖先元素进行定位...div { position: absolute; top: 20px; left: 10px;}四、position: fixed这个属性将元素固定在视口的某个位置,不随页面滚动而移动。...div { position: fixed; top: 20px; left: 10px;}五、position: sticky这个属性将元素固定在容器的顶部或底部,直到它滚动到视口的顶部或底部。...div { position: sticky; top: 20px; left: 10px;}
领取专属 10元无门槛券
手把手带您无忧上云