滚动是指内容在显示屏上的连续滑动。
Android 水平滚动视图的行为类似于 iPhone(分页)
我在 HorizontalScrollView 中有一个 LinearLayout。内容只是一个图像。滚动时,我需要实现与在 iPhone 等效设备上设置分页选项时获得的相同行为......
javascript element.scrollLeft 不起作用
我正在尝试滑块。 我希望能够滚动到滑块的特定位置,从 MDN 文档看来,我可以使用 element.scrollLeft 滚动到特定位置....
我一直在研究使用 UIPageControl 作为应用程序的滚动部分,我想知道它是如何工作的。该文档显示了更改页面、设置页数等的方法,...
在 iOS 18 上检查“dataSource?.collectionView(self, cellForItemAt:”功能后,collectionView“scrollToItem”会导致崩溃
我有这个扩展可以滚动到第一个 collectionView 单元格: 扩展 UICollectionView { funcscrollToFirst(inSection:Int = 0,动画:Bool = false){ 如果让 _ = dataSource?.collecti...
我有一个带有overflow-y:scroll属性的导航菜单,这个导航菜单由多个项目组成。 我想知道是否有一种方法可以让用户每次移动滚动条时,它都会精确移动......
我有一个带有overflow-y:scroll属性的导航菜单,这个导航菜单由多个项目组成。 我想知道是否有一种方法可以让用户每次移动滚动条时,它都会精确移动......
使用 Blazor Virtualize 组件加载列表时滚动到底部
加载 Blazor 页面时,我尝试转到 Virtualize 列表的末尾以显示最后的信息(诸如聊天应用程序之类的消息)。 所以我有以下 Blazor 代码: 加载 Blazor 页面时,我尝试转到 Virtualize 列表的末尾以显示最后的信息(诸如聊天应用程序之类的消息)。 所以我有以下 Blazor 代码: <div id="messages-container" style="overflow-y: scroll; height:500px"> <Virtualize Context="message" ItemsProvider="@GetMessages"> <p>@message.Content</p> </Virtualize> </div> <script> function scrollToBottom() { var objDiv = document.getElementById("messages-container"); objDiv.scrollTop = objDiv.scrollHeight; } </script> <button onclick="scrollToBottom();">Manual scroll</button> 在 scrollToBottom() 渲染完第一页消息的初始 DOM 后,如何引发 JS Virtualize 函数? 如果我在页面的scrollToBottom()方法中执行OnAfterRenderAsync()JS函数,滚动不会按预期工作,因为: ItemsProvider 不会在 OnAfterRenderAsync() 方法之前调用。所以没有检索到数据。 因为没有检索到数据,所以没有渲染 DOM,并且 messages-container 为空,并且有一个 scrollHeight 值定义为 500。 protected override async Task OnAfterRenderAsync(bool firstRender) { await JSRuntime.InvokeVoidAsync("scrollToBottom"); } 但是,在 Virtualize 组件渲染第一页后,如果我单击 Manual scroll 按钮,Virtualize 组件将滚动到数据的最后一页(scrollHeight 值在本例中定义)以 9845 为例)。 如何在 scrollToBottom() 组件的第一页渲染完成后调用 Virtualize JS 函数? 或者还有其他方法可以转到 Virtualize 组件的底部(最后一页)? 理性 名为 scrollToBottom 的 JavaScirpt 函数未被调用,因为组件 Virtualize 正在内部调用 StateHasChanged() 事件。根据 Microsoft,StateHasChanged() 事件是 Virtualize 组件调用的唯一状态更改检测器。要检测状态更改,必须实施解决方法。 解决方案 @page "/" @inject IJSRuntime JS; <div id="messages-container" style="overflow-y: scroll; height:500px"> <Virtualize Context="message" ItemsProvider="@((ItemsProviderRequest request)=>{ ValueTask<ItemsProviderResult<Messages>> result = GetMessages(request); ContentChanged(); return result; })"> <p>@message.Content</p> </Virtualize> </div> <script> function scrollToBottom() { var objDiv = document.getElementById("messages-container"); objDiv.scrollTop = objDiv.scrollHeight; console.log(objDiv); } </script> @code{ Messages[] messages { get; set; } public bool initialScroll = true; public class Messages { public string? Id { get; set; } public string? Content { get; set; } } public async void ContentChanged() { if (initialScroll) { initialScroll = false; // Scroll to the end of the first page await JS.InvokeAsync<string>("scrollToBottom"); // Scroll to the last page await JS.InvokeAsync<string>("scrollToBottom"); } } public Task<Messages[]> GenerateDummyMessages() { Messages[] messages = new Messages[1000]; for (int i = 0; i < 1000; i++) { messages[i] = new Messages(); messages[i].Id = i.ToString(); messages[i].Content = $"This is the message nr. {i}"; } return Task.FromResult(messages); } public Task<Messages[]> GetDummyMessages(int start, int count) { int index = 0; Messages[] request = new Messages[count]; while (start < messages.Length && index < request.Length) { request[index] = messages[start]; index++; start++; } return Task.FromResult(request); } public async ValueTask<ItemsProviderResult<Messages>> GetMessages(ItemsProviderRequest request) { int max_size = 1000; DateTime start = DateTime.Now; if (messages == null) messages = await GenerateDummyMessages(); // Render the number of elements requested that is equal to the page size from a start index Messages[] messages_ = await GetDummyMessages(request.StartIndex, request.Count); // SIMULATE DELAY while ((DateTime.Now - start).TotalSeconds < 2); return new ItemsProviderResult<Messages>(messages_, max_size); } } 在 Virtualize 组件中,必须修改 ItemsProvider 委托回调。项目提供程序必须通过 Blazor 属性实现匿名 lambda 函数,该属性请求将 ItemsProviderRequest 作为参数传递给回调方法,在本例中为 GetMessages。在匿名 lambda 函数体内,调用回调方法,其结果存储在变量中,调用执行名为 ContentChanged 的滚动功能的方法,然后由匿名函数返回回调方法的结果Virtualize 组件的 lambda 函数用于渲染内容。 <Virtualize Context="message" ItemsProvider="@((ItemsProviderRequest request)=>{ ValueTask<ItemsProviderResult<Messages>> result = GetMessages(request); ContentChanged(); return result; })"> <p>@message.Content</p> </Virtualize> 在 ContentChanged 方法中,JavaScript 函数被调用两次,第一次滚动到渲染元素第一部分的末尾,第二次滚动到底部以请求加载最后一部分元素。 public bool initialScroll = true; public async void ContentChanged() { if (initialScroll) { initialScroll = false; // Scroll to the end of the first page await JS.InvokeAsync<string>("scrollToBottom"); // Scroll to the last page await JS.InvokeAsync<string>("scrollToBottom"); } } 模拟消息提取服务的方法,模拟延迟2秒。 public async ValueTask<ItemsProviderResult<Messages>> GetMessages(ItemsProviderRequest request) { int max_size = 1000; DateTime start = DateTime.Now; if (messages == null) messages = await GenerateDummyMessages(); // Render the number of elements requested that is equal to the page size from a start index Messages[] messages_ = await GetDummyMessages(request.StartIndex, request.Count); // SIMULATE DELAY while ((DateTime.Now - start).TotalSeconds < 2); return new ItemsProviderResult<Messages>(messages_, max_size); } 结果
React Native FlatList 与 Horizontal ScrollView 中的自动滚动问题
我正在开发一个 React Native 应用程序,其中有两个水平滚动的 FlatList 组件包装在 ScrollView 内。我正在尝试实现自动滚动,但遇到了问题...
React Native FlatList 与 Horizontal ScrollView 中的无限滚动问题
我正在开发一个 React Native 应用程序,其中有两个水平滚动的 FlatList 组件包装在 ScrollView 内。我正在尝试实现无限滚动,但遇到了
我正在将 NextJS 用于个人网站。我试图同时拥有平滑滚动和变换动画,以增加所选项目的大小。这里有一个简单的演示,展示了我正在做什么...
我设计了一个控制器,允许在顶部有一个图像,在下面有一个滚动容器。 当用户向上滚动时,图像会缩小其尺寸,同时滚动其余部分。 我遇到的问题...
我制作了一个可以水平滚动的滚动视图。我面临的问题是我希望用户一次只滚动一页,但此时用户并滚动到
我想让 UIScrollView 中的分页/滚动更快,这样当用户离开手指时,无论加速速度如何,下一页都会比正常情况更快。
如何强制启用分页和滚动的 UIScrollView 仅水平向左或水平两个方向(左和右)移动? 更清楚地说,我想允许用户“翻页”
希望这对于那些没有 Javascript 时间的人来说是一个简单的答案...... 我有一个日志文件,正在由一个脚本监视,该脚本将日志中的新行提供给任何连接的眉毛...
我有一个包含新闻的页面。我不能只获取数据并在我的页面上显示 300 多条新闻。 所以我尝试了分页,但在asp.net分页中,以前的记录不在页面上。我想要寻呼类似的东西
我使用 Lenis 滚动实现平滑滚动,使用 Barba.js 进行页面转换,它们一起工作,除非在 lenis 仍在处理滚动时触发页面转换。例如用户
Jetpack Compose - 修改滚动行为以将焦点保持在屏幕上的固定位置
使用jetpack compose为电视平台创建AP,我一直在尝试在jetpack compose中创建一行,它在屏幕上的固定位置滚动,这是观察的目标行为...
滚动页面时,我需要 imageContainer 保持粘性,直到 itemFeatures 框的末尾向下滚动到该框的末尾。 这两个容器都在拇指中。大拇指显示:网格....
item-outer-container 元素的宽度比其子 div 更小,那么为什么不出现水平滚动条呢? https://jsfiddle.net/v32h5ko7/ #容器 { 位置:绝对; 顶部:5...