新用户引导库-driverjs

server/2024/11/29 14:49:31/
  • 一个比好用的新用户引导的库 driverjs

在做这个功能时,首先要确定目标是什么样子的, 如果只是随意点击下一步下一步,那我感觉可能用图片轮播图的方式会快一点,更容易解决且方便,想要什么步骤 只需要更改图片就好,但是要管理功能的话,就可以使用这个库。

可以使用新版的, 新版本是通过 SVG 来显示蒙层的 不是通过一个 div 标签来显示一个大的蒙层,之后再通过 position z-index 来控制层级的显示。

在实现这个功能,是有多种方法实现的,首先可以思考一下新版的实现方式

  • 新版实现方式:SVG

主要是通过 SVG 的属性 fill-rule:evenodd clip-rule:evenodd path

  • 首先确定高亮 DOM的位置,计算出距离窗口 上下左右的距离
  • 通过 path 根据计算的距离勾勒出高亮部分的位置
  • 然后 通过 fill-rule:evenodd clip-rule:evenodd 填充和裁切,把高亮部分的位置裁切掉
  • 最后就实现了,就和剪窗花的原理一样,剪出一个高亮的形状,让 dom 元素透过来
旧版本实现方式:positionz-index

部分实现差不多,都是需要计算出高亮dom元素的大小和距离窗口上下左右的距离,不同的是通过position z-index 来控制层级的显示

  • 首先确定高亮dom的位置,计算出距离窗口 上下左右的距离
  • 然后创建一个新的 dom 元素来作为高亮元素的背景,
  • 蒙版是 position: fixed; 在整个窗口
  • 需要高亮的元素是会添加两个class 分别是添加 position: relative!important;z-index: 100004!important;
  • 然后高亮元素 高亮元素的背景 蒙层的层级 分别是 100004 100003 100002 就是 高亮元素在最上层,元素背景在中间层,蒙层在下一层,原本的 DOM 文档流在蒙层的下一层

这个设计到浏览器的渲染原理,在绘制时,会创建层叠上下文

可以在这个位置查看一下层级的顺序就可以明白他的原理

然而这种实现方式可能会产生一个问题,就是在具有 transform 属性的DOM中包含positon 元素的话,可能会出现一些问题,因为 transform 有可能开启 GUI 渲染,然后创建一个独立的图层,而 postion 元素由于父级是transform 所有会和它在同一个图层。

小小结

此功能还有很多思路,这个库的 API 就不在此描述了 大家可以到其文档看,使用还是很方便的,主要是讲思路,以防公司要求不能使用别人的库,要求自己实现,那这个思路就可以节省很多思考的时间。


http://www.ppmy.cn/server/145928.html

相关文章

同时在github和gitee配置密钥

同时在github和gitee配置密钥 1. 生成不同的 SSH 密钥 为每个平台生成单独的 SSH 密钥。 # 为 GitHub 生成密钥(默认文件路径为 ~/.ssh/github_id_rsa) ssh-keygen -t rsa -b 4096 -C "your_github_emailexample.com" -f ~/.ssh/github_id_…

HarmonyOS开发:DevEco Studio的Beta3(5.0.5.200)新增和增强特性

新增特性 DevEco Studio支持开发API 13工程。DevEco Profiler Frame模板新增Lost Frames和Hitch Time泳道,用于识别和优化卡顿和丢帧现象。具体请参考Frame分析。hvigor-config.json5中properties下新增ohos.arkCompile.noEmitJs字段,用于指定ArkTS编译…

论文阅读 - Causality Inspired Representation Learning for Domain Generalization

目录 摘要 1. Introduction 2. Related Work 3. Method 3.1. DG from the Causal View 3.2.因果关系启发的表示学习 3.2.2 Causal Factorization Module 3.2.3 Adversarial Mask Module 4. Experiment 4.1. Datasets 4.2. Implementation Details 4.3. Experimenta…

unity 绿幕抠图

1.硬件:Insta360 Link 2C摄像机 2.引用shader Shader "Demo/ChromaKey" { Properties { _MainTex("Texture", 2D) "white" {} _KeyColor("KeyColor", Color) (0,1,0,0) _TintColor(&q…

IOU Loss详解

IoU(Intersection over Union是目标检测中常用的指标,用于评估预测框和真实框的重叠程度。基于 IoU 的损失函数(IoU Loss)是通过优化 IoU 值来提升模型预测框的精度。 IoU 的计算公式 给定预测框 ( B_p ) 和真实框 ( B_g )&#…

机器学习基础--基于k-means实现鸢尾花聚类

k-mean 聚类算法的含义是根据给定的样本集合,按照样本之间的距离大小,将样本划分为K个簇,让簇内的点尽量紧密联系在一起,而簇间的距离尽可能大 鸢尾花数据集描述 1、包含3种类型数据集,共150条数据 ;2、包…

【阅读记录-章节4】Build a Large Language Model (From Scratch)

文章目录 4. Implementing a GPT model from scratch to generate text4.1 Coding an LLM architecture4.1.1 配置小型 GPT-2 模型4.1.2 DummyGPTModel代码示例4.1.3 准备输入数据并初始化 GPT 模型4.1.4 初始化并运行 GPT 模型 4.2 Normalizing activations with layer normal…

volatile 关键字与 const 关键字有什么区别?

volatile 和 const 是 C/C 中的两个不同关键字,它们具有不同的用途和意义。下面是它们之间的主要区别: 1. 用途 volatile: 用于指示变量的值可能会在程序的任意时刻被外部因素改变,例如硬件、另一个线程或信号处理程序。这告诉编译器不要优…