首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

HarmonyOS 开发实践——基于webView的嵌套滚动

场景描述内嵌的ArkUI可滚动容器中的Web组件,接收到滑动手势事件,实现在父组件中嵌套一个web组件可以平滑滚动。...方案描述内嵌在可滚动容器(Scroll、List...)中的Web组件,接收到滑动手势事件,需要对接ArkUI框架的NestedScrollMode枚举类型,使得Web组件可以嵌套ArkUI可滚动容器,...进行嵌套滚动。...,nestedScroll接口用来设置web组件与上下层组件的嵌套滚动关系,推荐使用子组件优先模式(NestedScrollMode.SELF_FIRST)。...实现方法:基于web组件的nestedScroll属性实现嵌套在Tabs中的web页面平滑滚动,以及左右滑动切换tab,该方案的核心就是滑动Web组件,未被消费的x轴、y轴的滚动偏移量,传递给最近的、滚动方向一致的父组件

13120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HarmonyOS 开发实践 —— 基于webview的嵌套滚动及与ArkUI组件的联动

    场景描述在一些应用的首页或者详情页上,需要原生组件与网页进行一些嵌套或者展开收起的逻辑。...场景一:在滑动场景中原生组件与web页面嵌套,需要先让原生组件的高度变化,等原生组件到底后web页面高度随之变化。场景二:嵌套在列表的原生组件中的web页面,点击按钮可以展开或者收起。...方案描述将web组件放置在List或者Scroll组件中,通过web的嵌套滚动属性nestedScroll和Scroll的onScrollFrameBegin属性实现场景一的场景效果。...下半部分web组件使用控制嵌套滚动的方法nestedScroll和禁止滚动的方法setScrollable来实现一个吸顶的效果。...因为web组件嵌套在父组件Scroll中并且向上滑动时,最开始并不需要web页面滑动,只需要手势作用的量传递到Image组件上,使其高度减少,当达到最小高度后就可以滚动了。

    10820

    第107期:前端搜索列表中某一项并滚动到可视区域

    大致的图形描述如下: image.png 比如上图中dog超出了在可视区域的下方,则需要填写该数据时,在页面上进行搜索,让dog显示到可视容器内。...鉴于我们这里只需要进行上下滚动,所以选中element.scrollTop属性进行设置即可。 需要注意的是: scrollTop属性只能设置在本身包含滚动条的元素上,否则不起作用。...设置在scroll-inner上,则不起作用。 vue3选中真实dom 选中真实dom有两种方式。...() const scrollDistance = bottom2-bottom1 + height getBoundingClientRect()用来获取元素的大小及其相对于视口的位置。...情况二,查询元素位于滚动容器之上: image.png 这时候需要滚动容器向下滚动,滚动的距离计算方式大致是: // 当前滚动容器的scrollTop - 查询元素超出容器的高度 let currentScrollTop

    1.7K20

    2023年即将推出的CSS特性对你影响大不大?

    作为开发人员,希望 100vh (视口高度的 100%)表示“与视口一样高”,但该 vh 单元不考虑移动设备上缩回导航栏之类的事情,因此有时它最终会太长并导致滚动。...为了解决这个问题,现在在 Web 平台上提供了新的单位值: 小视口高度和宽度(或 svh 和 svw),表示最小的活动视口大小。 较大的视口高度和宽度(lvh 和 lvw),表示最大大小。...支持 嵌套 Sass等框架的嵌套功能,是最受css开发人员追捧的功能之一,但是要想使用样式嵌套的功能只能安装各种框架,现在Web平台也同样支持了嵌套功能,允许开发人员以更简洁的分组格式编写,从而减少冗余...,它允许您根据滚动容器的滚动位置控制动画的播放。...这意味着当您向上或向下滚动时,动画会向前或向后滑动。此外,对于滚动驱动动画,您还可以根据元素在其滚动容器中的位置来控制动画。

    21330

    postcss-px-to-viewport之vw、vh、rem

    先知道一下viewport的四个单位,vw、vh、vmax、vmin: vw:1vw 等于视口宽度的1% vh:1vh 等于视口高度的1% vmin: 选取 vw 和 vh 中最小的那个 vmax:选取...vw 和 vh 中最大的那个 这边需要注意的是,vw是视口宽度,是连滚动条都算在内的: 滚动条,100vw的宽度是1000px,宽度是100%的则是983px。...所以,用vw、vh的时候,注意要宽度百分百的时候,设置100%,否则底部会出现滚动条。当然,如果是移动端就没关系,移动端的滚动条是滑动的时候才出现,所以移动端的视口宽度就是百分百。...https://github.com/evrone/postcss-px-to-viewport/blob/HEAD/README_CN.md 没怎么用过,不过刚用就发现行内样式不起作用,还以为引入错了

    1.7K30

    css粘性定位sticky

    前言 发现很多博客的侧边栏可以跟随滚动条移动到底部又可以继续翻看侧边栏,F12看了下代码,仅仅是用了一个sticky定位,下边我简单说一下sticky定位 内容简介: 讲 sticky 定位之前,我先说一下...position 的其他定位 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。...元素在跨越特定阈值前为相对定位,之后为固定定位,设置了以上样式的元素,在 viewport 视口滚动到元素 top 距离小于 10px 之前,元素为相对定位。...之后,元素将固定在与顶部距离 10px 的位置,直到 viewport 视口回滚到阈值以下。...sticky-nav { position: sticky; top: 100px; } 设置 position:sticky 同时给一个 (top,bottom,right,left) 之一即可 粘性定位为什么不起作用

    1.1K10

    初探富文本之基于虚拟滚动的大型文档性能优化方案

    实际上这个方案非常看重文档本身的数据设计,如果是类似于JSON块嵌套的表达结构,实现类似的方案会比较简单一些,而如果是通过扁平的表达结构描述富文本,特别是又存在块嵌套概念的情况下,这种方式就相对难以实现...通常我们都仅会在主文档的直属子元素即行元素上进行虚拟滚动,而对于嵌套结构例如行内存在的代码块中表达出的行内容则不会进行虚拟滚动,这样可以减少虚拟滚动的复杂度,同时也可以保证渲染的性能。...在这种情况下,我们同样可以基于行的概念实现块级虚拟滚动,即只渲染当前可见区域范围的块,实际上如果独立的块比较大的时候还是有可能影响性能,所以这里仍然存在优化空间,例如飞书文档就对代码块做了特殊处理,即使在嵌套的情况下仍然存在虚拟滚动...虚拟滚动的实现方式本质上就是在用户滚动视图时,根据视口的高度、滚动容器的滚动距离、行的高度等信息计算出当前视口内需要渲染的行,然后在视图层根据计算的状态来决定是否要渲染。...在前边提到过,我们当前关注的是主文档直属的块管理,那么对于嵌套的结构来说,当直属块处于占位状态时,我们需要将其内部所有嵌套的块都设置为占位状态。

    34210

    IntersectionObserver API 使用教程

    网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它。 上图的绿色方块不断滚动,顶部会提示它的可见性。...传统的实现方法是,监听到scroll事件后,调用目标元素(绿色方块)的getBoundingClientRect()方法,得到它对应于视口左上角的坐标,再判断是否在视口之内。...()方法的返回值,如果没有根元素(即直接相对于视口滚动),则返回null boundingClientRect:目标元素的矩形区域的信息 intersectionRect:目标元素与视口(或根元素)的交叉区域的信息...intersectionRatio:目标元素的可见比例,即intersectionRect占boundingClientRect的比例,完全可见时为1,完全不可见时小于等于0 上图中,灰色的水平方框代表视口...它们各自的intersectionRatio图中都已经注明。 我写了一个 Demo,演示IntersectionObserverEntry对象。

    1.9K60

    clientWidth,offsetWidth,scrollWidth你分的清吗

    注意:当元素溢出浏览器的视口,值会变成负数。...;  var Y = node.getBoundingClientRect().top+node.scrollTop; 一个demo加深印象 有一个列表,当我们输入文段编号,列表会将选中文段滚动到视图中...大概是这样 实现思路就是,去拿到选中元素的clientHeight和offsetTop,并和列表的高度区间做比较,计算出元素是在列表视口的内部,还是溢出的视口,如果溢出了视口,那么就回滚。...text-align: center;     font-size:22px;     color:#9ef64d;   } 核心方法 const { value } = this.state; // 滚动视口的高度...就是元素底部距离滚动容器顶部的距离,再减去20像素,保证出现在视口中间 const needScroll = top - containerOffsetTop - 20; if (needScroll

    2.1K10

    js获取各种距离和宽高

    返回窗口内部的高度/宽度(不包含工具栏和滚动条) window.pageXOffset/window.pageYOffset 文档在窗口左上角水平和垂直方向滚动的像素 window.pageYOffset...以浏览器窗口(视口)的左上角为原点, 距离视口顶部距离, 不随页面滚动而改变 clientY 以浏览器窗口(视口)的左上角为原点, 距离视口左侧距离, 不随页面滚动而改变 pageX 以整个页面的左上角为原点..., 距离页面顶部的距离, 随页面滚动而改变 pageY 以整个页面的左上角为原点, 距离页面左侧的距离, 随页面滚动而改变 screenX 以计算机显示屏屏幕左上角为原点, 距离屏幕顶部的距离 screenY.../scrollWidth 这个只读属性是一个元素内容高度的度量,包括由于溢出导致的视图中不可见内容。...此属性可以获取或者设置对象的最顶部到对象在当前窗口显示的范围内的顶边/左侧的距离,也就是元素滚动条被向下/向右拉动的距离。

    23710

    一文彻底搞懂js中的位置计算

    ,包括由于溢出导致的视图中不可见内容。...scrollHeight 的值等于该元素在不使用滚动条的情况下为了适应视口中所用内容所需的最小高度。...Element.scrollWidth 这也是一个元素内容宽度的只读属性,包含由于溢出导致视图中不可以见的内容。 原理上和scrollHeight是同理的,只不过这里是宽度而非高度。...当计算边界矩形时,会考虑视口区域(或其他可滚动元素)内的滚动操作,也就是说,当滚动位置发生了改变,top 和 left 属性值就会随之立即发生变化(因此,它们的值是相对于视口的,而不是绝对的) 。...计算元素是否出现在视口内 利用的还是元素距离视口的位置小于视口的大小。 注意即便变成了负值,那么也表示元素曾经出现过在屏幕中只是现在不显示了而已。

    3.9K10

    名人堂 | CSS3 transform对普通元素的N多渲染影响

    2transform限制position:fixed的跟随效果 我们应该都知道,position:fixed可以让元素不跟随浏览器的滚动条滚动,而且这种跟随效果连它的兄弟们position:relative...例如下面示意代码: 结果,本来应该不跟着滚动条滚动的傲娇...visible的父级元素,同时,该父级元素以及到该绝对定位元素之间任何嵌套元素都没有position为非static属性的声明,则overflow对该absolute元素不起作用。...但是,一旦我们给overflow容器或者与图片有嵌套关系的子元素使用transform声明,呵呵呵,估计absolute元素就要去领便当了!...比方说,下面这个嵌套一层block水平标签应用transform属性后的效果: 结果出现了有意思的浏览器兼容性差异:Chrome/Opera浏览器下,只有嵌套元素含有transform属性的时候,absolute

    73910

    htop(1) command

    -t, --tree 在树状视图中显示进程。可用于在使用选项 -s 按照指定列排序时强制生成树视状图。 -u, --user=USERNAME|UID 只显示给定用户的进程。...删除不需要的 Linux 功能。在严格模式下,由于功能较少,终止、更改进程优先级和读取进程延迟记帐信息等功能将不起作用。...如有必要,滚动列表。 Down, Alt-j 在进程列表中选择(高亮)下一个进程。如有必要,滚动列表。 Left, Alt-h 向左滚动进程列表。 Right, Alt-l 向右滚动进程列表。...PgUp, PgDn 向上或向下滚动进程列表一个窗口。 Home 滚动到进程列表顶部并选择第一个进程。 End 滚动到进程列表底部并选择最后一个进程。...进程操作和信息查看 Ctrl-A, ^ 向左滚动到进程条目的开始处(即行的开始)。 Ctrl-E, $ 向右滚动到进程条目的结束处(即行的结束)。 Space 标记或取消标记一个进程。

    15710

    CSS粘性定位是怎样工作的

    究其原因有两个: 第一,受到浏览器的良好支持需要漫长的等待:浏览器的支持往往需要很长的时间才能完成,到时候它的功能已经被人们遗忘了。...在第一个例子中,大家很容易就能看明白 当视口到达定义的位置时,元素会被粘住。 例: ? 但问题是,它有时候能用,而有时却不起作用。 当它工作时,元素会粘住,但在滚动到其他部分,它会停止粘贴。...粘性元素 —— 是我们用位置定义的 position: sticky 样式。 当视口位置与位置定义匹配时,该元素将会浮动,例如: top: 0px 。 例: ?...固定 —— 当元素被粘住时,它的行为与 position: fixed 完全相同,浮动在与视口的相同位置,并从流中移除。...这正是它被设计的初衷,而在此之前,只能使用JavaScript完成这个功能。 但你也可以使用它把元素粘到底部。 这意味着你可以把页脚定义为粘性,并且在向下滚动时使它看起来总是被粘在底部。

    1.8K10

    32. 精读《React Router4.0 进阶概念》

    本期精读的文章是:React Router 进阶:嵌套路由,代码分割,转场动画等等。 懒得看文章?没关系,稍后会附上文章内容概述,同时,更希望能通过阅读这一期的精读,穿插着深入阅读原文。...注意,无论是 webpack 的 Tree Shaking,还是动态加载,都只能以 Commonjs 的源码为分析目标,对 node_modules 中代码不起作用,所以 npm 包请先做好拆包。...现在动画的思路比较靠谱的也大致是这种:通过添加/移除 class 的方式,利用 css3 做动效。 滚动条复位 当页面回退时,将滚动条恢复到页面最顶部,可以让单页路由看起来更加正常。...由于 React Router4.0 中,路由是一种组件,我们可以利用 componentDidUpdate 简单完成滚动条复位的功能: 嵌套路由 React Router4.0 嵌套路由与 3.0 不同,是通过组件 Route 的嵌套实现的。

    89110

    关于虚拟列表,看这一篇就够了

    虚拟列表原理 虚拟列表的核心步骤可以总结成五步: 不把长列表数据一次性全部直接渲染在页面上 截取长列表一部分数据用来填充可视区域 长列表数据不可视部分使用空白占位填充(下图中的startOffset和endOffset...区域) 监听滚动事件根据滚动位置动态改变可视列表 监听滚动事件根据滚动位置动态改变空白填充 固定高度 列表项高度固定的话,就无需每次都计算当前应该渲染多少条数据,视口的数据量始终是固定的,只需要通过用户滚动的距离...并且需要注意的是,不只是需要更新视图中的列表项,还需要更新之后的所有列表项 // 每次滚动,都去更新缓存数组中dom的高度和位置   useEffect(     function () {      ...// 获取当前视口中的列表节点       const nodeList = WraperRef.current.childNodes;       const positList = [...positionCache...,当然,所有的列表项数据还是都需要接口来进行请求的,所以在滚动的时候,我们还需要加上监听滚动条位置并且从接口拉取数据的逻辑,所以需要优化的地方还很多。

    4K32

    小智在这3年开发中遇到的 CSS 问题及解决方案,有大佬帮他总结好了 !

    在 macOS 上的Chrome上会很好看。然而,在 Windows上,滚动条总是在那里(即使内容很短)。...当视口不够高时将元素固定在屏幕顶部 如果将元素固定在屏幕顶部,如果视口不够高会发生什么情况?很简单:它会占用屏幕空间,因此,用户浏览网站时可用的垂直区域就会变小,这会影响用户的体验。...site-header { position: sticky; top: 0; /*other styles*/ } } 在上面的代码段中,我们告诉浏览器仅在视口的高度等于或大于...举个例子: .some-icon { fill: #137cbf; } 如果 SVG 具有内联fill,这将不起作用,应该这样写: .some-icon path { fill: #137cbf...水平滚动条 由于元素的宽度,有些元素会导致出现水平滚动条。 找到这个问题的原因最简单的方法就是使用 CSS outline。

    3.7K10
    领券