当前位置: 首页 > news >正文

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖、z-index应用及性能分析

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖、z-index应用及性能分析

目录

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖、z-index应用及性能分析

       1、iOS在scroll-view内部上下滑动吸顶的现象

        正常的上下滑动吸顶覆盖:

        iOS及iPad默认不正常的上下滑动吸顶覆盖:

      2、原因

      3、解决方法

       3.1、选中每行子组件提取字段、边界矩形

       3.2、直接根据scroll-view在滚动事件中相对其顶部的滚动高度换算行次

       3.3、根除的办法z-index的应用

      4、总结


        在微信小程序组件scroll-view内部,z-index无任何实际意义,因为该组件内部的slot插槽默认就未去实现支持z-index的分层,它总是默认H5的规则,后插入的子组件覆盖前置子组件的z-index。

       因此,当插入posotion定位为sticky粘滞元素,特别是在元素吸顶时,scroll-view上滑滚动覆盖吸顶元素时,需要注意操作系统【平台】的差异性,否则文字颜色或其它前景色,会在此吸顶位置出现怪异。

       1、iOS在scroll-view内部上下滑动吸顶的现象

        正常的上下滑动吸顶覆盖:

        iOS及iPad默认不正常的上下滑动吸顶覆盖:

      2、原因

       iOS及iPad平台,scroll-view组件默认尚未真正完整实现吸顶部分的后代组件覆盖。

      3、解决方法

       3.1、选中每行子组件提取字段、边界矩形

this.createSelectorQuery().select(`#scrollData_{{index}}`).boundingClientRect(res=>res.top)
.exec();

       然后据此top数值,计算scroll-view的内部view-port视口的布局视口、可视视口及其显隐部分,计算哪些行次在上下滑动的滚动过程中覆盖了表头:

       但这样做:

       一是计算量大,且伴随scroll-view内部视口的上滑,头几行早就滚出屏幕的可视范围以外;

       这一点,可以从获取的top绝对位置数据,可以看到:

       二是将在上下滑滚动的过程中,多行同时命中,会因性能的考虑,需要额外计算并控制scroll-view内部的在屏行数,然后在做选中,否则数组行数过多,会带来性能问题。

       3.2、直接根据scroll-view在滚动事件中相对其顶部的滚动高度换算行次

       由于在上下滑滚动的过程中,各行次的view均在scroll-view组件内部产生相对位置的变化,它们并不会使得scroll-view组件的布局视口发生改变,也不会使得scroll-view组件的可视视口发生改变,故而,页面整体不会发生【重排】,scroll-view组件的可视视口也未发生【重排】,因此,不会产生页面的【重新渲染】,仅仅会在scroll-view组件的可视视口内部,【局部渲染】,这种方法不会带来性能上的负面影响。

  onScrollView_scroll(e) {if (e.currentTarget.id==='mystickycontainer') {onScroll_scrollTop = e.detail.scrollTop;//滚动到顶部===0___注意不要用其this.setData({})__逻辑层向视图层高频次传输数据__超级影响性能if (this.data.platform==='ios'||this.data.platform==='ipad'||this.data.platform==='devtools') {tableRowsColor_scrolled = tableRowsColor.map((element,index) => {if ( onScroll_scrollTop>=((index+1)*mytableHeaderHeight)-((mytableHeaderHeight-rootFontSize)/2)  && onScroll_scrollTop<=((index+2)*mytableHeaderHeight)-((mytableHeaderHeight-rootFontSize)/2)  ) {//滚动到和表头重叠区域__就让其颜色透明__从而显示表头的颜色和背景return `#00000000`;} else {return `#000000FF`;//iOS下black即#000000带透明度默认值#000000FF 带透明度#000000FF};});if ([...tableRowsColor_scrolled]!==[...this.data.tableRowsColor]) {this.setData({tableRowsColor: tableRowsColor_scrolled});};};};},

       3.3、根除的办法z-index的应用

       虽然:在微信小程序组件scroll-view内部,z-index无任何实际意义,因为该组件内部的slot插槽默认就未去实现支持z-index的分层,它总是默认H5的规则,后插入的子组件覆盖前置子组件的z-index。

       但:经测试发现,z-index对iOS和iPad平台来说,在scroll-view内部slot子组件,z-index是有效的,它允许覆盖上述规则。

       由于在微信小程序的scroll-view组件内部,仍旧可以设置多个不同slot插槽,每级插入子组件的z-index的order整数值,可能会影响到滚动数据经过吸顶表头的表现,这主要时针对iOS和iPad。

       默认未设置z-index的滚动slot子组件,默认在scroll-view组件内部的z-index===0。

       可将scroll-view内除默认“refresher”下拉刷新以外最高层级的吸顶封装子组件的z-index设置高一些比如2000,这样即便不设置【3.2】中所述的颜色透明度,也能更好的解决问题。

      4、总结

       3.2、所述,其实不正常的吸顶覆盖,主要是计算滑过吸顶部分的行次对应的view-port组件,其前景色的透明度所致。在iOS和iPad环境解决掉,就好。其它所有平台均不存在该问题。

       3.3、所述,这是真正终极的解决iOS和iPad在scroll-view内【滚动吸顶颜色覆盖】的最好办法。

相关文章:

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖、z-index应用及性能分析

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖、z-index应用及性能分析 目录 微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖、z-index应用及性能分析 1、iOS在scroll-view内部上下滑动吸顶的现象 正常的上下滑动吸顶…...

【高中数学】数列

等差数列前 n n n 项和性质 公式一&#xff1a; S n n ( a 1 a n ) 2 S_n\frac{n(a_1a_n)}{2} Sn​2n(a1​an​)​ 公式二&#xff1a; S n n a 1 n ( n − 1 ) 2 d S_nna_1\frac{n(n-1)}{2}d Sn​na1​2n(n−1)​d 性质1&#xff1a;等差数列中依次 k k k 项之和 S …...

数字媒体技术基础:AMF(ACES 元数据文件 )

在现代电影和电视制作中&#xff0c;色彩管理变得越来越重要。ACES&#xff08;Academy Color Encoding System&#xff0c;美国电影艺术与科学学院颜色编码系统&#xff09;是一个广泛采用的色彩管理和交换系统&#xff0c;旨在解决不同设备、软件和工作流程之间的色彩不一致问…...

Apache Dubbo (RPC框架)

本文参考官方文档&#xff1a;Apache Dubbo 1. Dubbo 简介与核心功能 Apache Dubbo 是一个高性能、轻量级的开源Java RPC框架&#xff0c;用于快速开发高性能的服务。它提供了服务的注册、发现、调用、监控等核心功能&#xff0c;以及负载均衡、流量控制、服务降级等高级功能。…...

LeetCode 3226. 使两个整数相等的位更改次数

. - 力扣&#xff08;LeetCode&#xff09; 题目 给你两个正整数 n 和 k。你可以选择 n 的 二进制表示 中任意一个值为 1 的位&#xff0c;并将其改为 0。 返回使得 n 等于 k 所需要的更改次数。如果无法实现&#xff0c;返回 -1。 示例 1&#xff1a; 输入&#xff1a; n …...

面试经典 150 题:189、383

189. 轮转数组 【参考代码】 class Solution { public:void rotate(vector<int>& nums, int k) {int size nums.size();if(1 size){return;}vector<int> temp(size);//k k % size;for(int i0; i<size; i){temp[(i k) % size] nums[i];}nums temp; }…...

Python模拟真人动态生成鼠标滑动路径

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…...

如何压缩pdf文件的大小?5分钟压缩pdf的方法推荐

如何压缩pdf文件的大小&#xff1f;在现代办公和学习中&#xff0c;PDF文件因其稳定性和广泛的兼容性被广泛使用。然而&#xff0c;随着文件内容的增多&#xff0c;制作好的PDF文件常常变得过大&#xff0c;给使用带来了诸多不便。无论是电子邮件附件的发送&#xff0c;还是在线…...

【SQL】[2BP01] ERROR: cannot drop table course because other objects depend on it

问题描述 在尝试执行以下SQL语句时&#xff0c;发生错误。 DROP TABLE Course RESTRICT;执行以上语句后&#xff0c;系统返回了一个错误提示&#xff1a; [2BP01] ERROR: cannot drop table course because other objects depend on it 详细&#xff1a;constraint sc_cno_…...

gbase8s之spring框架用druid中间件报语法错误

spring框架 调用druid中间件 时报这个错&#xff1a; MetaDataAccessException: Could not get Connection for extracting meta-data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception …...

【网络安全】|nessus使用

1、扫描结果分析&#xff1a; Sev&#xff1a;漏洞的严重性级别 CVSS&#xff1a;量化漏洞严重性的标准&#xff0c;通过计算得出一个分数&#xff0c;分数越高表示漏洞越严重。 VPR&#xff1a;基于风险的评分系统&#xff0c;帮助组织优先处理风险最高的漏洞。 EPSS&#xf…...

CSRA2的LINUX操作系统24年11月2日上午上课笔记

几个查找命令&#xff1a; .whereis:查看文件的路径,查看可执行文件的路径&#xff0c;一级相应文档路径。 .which:查看系统可执行的文件的路径&#xff0c;以及命令的别名等信息 .local&#xff1a;他会将linux中的所有文件的路径信息保存到数据库中&#xff0c;在数据库中查…...

通过分解质因数求若干个数的最小公倍数

求最小公倍数的常规方法回顾 暴力枚举法 long long work(long long a,long long b) {for(long long imax(a,b);;i)if(i%a0&&i%b0)return i; }大数翻倍法 long long work(long long a,long long b) {if(a<b) swap(a,b);for(long long ia;;ia) // i 是 a 的倍数&#…...

数据库三范式(1NF、2NF、3NF)

1NF&#xff08;第一范式&#xff09; 定义&#xff1a;确保每一列都是原子值&#xff0c;即是不可分割的基础数据项。 所谓第一范式&#xff08;1NF&#xff09;是指在关系模型中&#xff0c;对于添加列的一个规范要求&#xff0c;所有的列都 应该是原子性的&#xff0c;即数…...

C语言_数据结构_顺序表

1. 本章重点 顺序表初始化顺序表尾插顺序表尾删顺序表头插顺序表头删顺序表查找顺序表在pos位置插入x顺序表删除pos位置的值顺序表销毁顺序表打印 2. 顺序表的概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储…...

Llama 3.2 Vision Molmo:多模态开源生态系统基础

编者按&#xff1a; 视觉功能的融入对模型能力和推理方式的影响如何&#xff1f;当我们需要一个既能看懂图像、又能生成文本的 AI 助手时&#xff0c;是否只能依赖于 GPT-4V 这样的闭源解决方案&#xff1f; 我们今天为大家分享的这篇文章&#xff0c;作者的核心观点是&#xf…...

【数据结构与算法】第6课—数据结构之栈

文章目录 1. 栈2. 栈的初始化和栈的销毁3. 入栈和出栈&#xff08;压栈&#xff09;4. 取栈顶元素并打印5. 栈的练习题5.1 有效的括号 1. 栈 栈&#xff1a;也是一种线性表&#xff0c;其数据结构与动态顺序表的数据结构类似栈分为栈顶和栈底&#xff0c;在栈中&#xff0c;插入…...

开源全站第一个Nextron(NextJS+electron)项目--NextTalk:一款集成chatgpt的实时聊天工具

NextTalk 简介 该项目是一个基于Nextron(NextJSElectron)的桌面端实时聊天工具。 但由于使用了NextJS中的ssr及api route功能&#xff0c;该程序只能在开发环境运行。 关于生产版本&#xff1a;我将其网页端部分分离&#xff0c;并用Pake将其打包成桌面端&#xff0c;生产体…...

多样化的编程模型:并发与并行策略

因为经常看着某些框架设计的编程模型很晕&#xff0c;所以自己梳理总结了一下编程模型的分类&#xff0c;总共六个大类&#xff0c;基本所有常见框架设计的编程模型都是基于这六个大类来实现的&#xff0c;如果有错误的地方&#xff0c;请见谅并不吝赐教&#xff0c;感谢&#…...

npm入门教程2:npm历史

一、起源与诞生 时间背景&#xff1a;npm的诞生与Node.js的兴起紧密相关。Node.js是一个基于Chrome V8引擎的JavaScript运行环境&#xff0c;它允许JavaScript代码在服务器端运行。随着Node.js的流行&#xff0c;开发者们对于包管理和依赖解决的需求日益增长。诞生&#xff1a…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...

6.9本日总结

一、英语 复习默写list11list18&#xff0c;订正07年第3篇阅读 二、数学 学习线代第一讲&#xff0c;写15讲课后题 三、408 学习计组第二章&#xff0c;写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语&#xff1a;复习l默写sit12list17&#…...

英国云服务器上安装宝塔面板(BT Panel)

在英国云服务器上安装宝塔面板&#xff08;BT Panel&#xff09; 是完全可行的&#xff0c;尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎&#xff0c;虽然官方主要面向中国大陆…...

【汇编逆向系列】六、函数调用包含多个参数之多个整型-参数压栈顺序,rcx,rdx,r8,r9寄存器

从本章节开始&#xff0c;进入到函数有多个参数的情况&#xff0c;前面几个章节中介绍了整型和浮点型使用了不同的寄存器在进行函数传参&#xff0c;ECX是整型的第一个参数的寄存器&#xff0c;那么多个参数的情况下函数如何传参&#xff0c;下面展开介绍参数为整型时候的几种情…...

第2篇:BLE 广播与扫描机制详解

本文是《BLE 协议从入门到专家》专栏第二篇,专注于解析 BLE 广播(Advertising)与扫描(Scanning)机制。我们将从协议层结构、广播包格式、设备发现流程、控制器行为、开发者 API、广播冲突与多设备调度等方面,全面拆解这一 BLE 最基础也是最关键的通信机制。 一、什么是 B…...