首页 > 其他分享 >Mentions组件设计

Mentions组件设计

时间:2023-07-25 18:12:46浏览次数:39  
标签:Node Selection offset parentNode selection 设计 组件 Mentions 选区

前言

 

Mentions组件通常用在评论@某人。Antd是基于textarea实现,功能单一,无法对@xx进行样式设置。

功能

 

基础API熟悉

1.Range & Selection

在阅读上述Mdn文档后,我们有以下的点需要注意

1)如果当前已经有选区,则调用selection.addRange添加新的range会不生效,需要先取消选区

selection.removeRange(range)  // 取消当前选区
selection.removeAllRanges()  // 取消所有选区

 

2) Chrome 无法在一个Selection中添加多个Range

 

3)Selection.collapse(parentNode, offset)  offset 选项针对是否为文本节点,还是元素节点有不同的表现

解释:Selection.collapse() 方法可以收起当前选区到一个点。文档不会发生改变。如果选区的内容是可编辑的并且焦点落在上面,则光标会在该处闪烁。

parentNode 为Node.Element_Node, 则offset为parentNode.childNodes 数组的偏移量

parentNode 为Node.Text_Node,则offset为文本节点字符偏移量

 

4)Selection.empty 与Selection.removeAllRanges 方法的不同之处

 Selection.empty 老的IE浏览器API,已废弃。取消选区使用removeAllRanges即可   5)Selection.getRangeAt(index) 使用这个API前,index需要位于[0, selection.rangeCount) 之间,否则会报错   6)

 

标签:Node,Selection,offset,parentNode,selection,设计,组件,Mentions,选区
From: https://www.cnblogs.com/cheng-up/p/17580550.html

相关文章

  • 封装一个Redis服务组件
    结构说明 ServiceCollectionExtensions类1usingcom.project.Redis.Common;2usingMicrosoft.Extensions.Configuration;3usingMicrosoft.Extensions.DependencyInjection;4usingSystem;56namespacecom.project.Redis7{8publicstaticclass......
  • CS5466规格书 2lane 8k30方案|CS5466设计资料|CS5466原理图
    CS5466是一款高性能、低功耗、的,USBType-C/DP1.4显示端口至HDMI2.1转换器芯片。显示端口接收机支持高达32.4Gbps(HBR3,4通道)和HDMI发射机支持高达48Gbps(FRL,12G4Lane)。集成PowerDelivery3.0控制器处理Type-C用于USB电源管理和DisplayPort的CC接口模式输入。CS5466TypeC/DP1.4转......
  • Element-ui源码解析(二):最简单的组件Button
    好家伙,为了有足够的能力去开发组件,先研究一下别人的组件开始抄袭模仿我们的行业标杆element-ui 找到Button组件的源码 只有三个文件,看上去非常易读,开搞  其中最重要的部分,自然是button.vue<template><buttonclass="el-button"@click="handl......
  • 如何设计灵活的函数接口
     仅作为笔记使用 设计灵活的函数接口可以提高函数的可重用性和扩展性,使其更易于在不同的上下文中使用。以下是一些设计灵活函数接口的方法:1.使用参数对象:将相关的参数封装到一个参数对象中,而不是使用多个单独的参数。这样可以简化函数的参数列表,并且当需要添加新的参数时,......
  • 【升职加薪秘籍】我在服务监控方面的实践(2)-监控组件配置
    大家好,我是蓝胖子,关于性能分析的视频和文章我也大大小小出了有一二十篇了,算是已经有了一个系列,之前的代码已经上传到github.com/HobbyBear/performance-analyze,接下来这段时间我将在之前内容的基础上,结合自己在公司生产上构建监控系统的经验,详细的展示如何对线上服务进行监控,......
  • 设计模式-职责链模式在Java中使用示例-采购审批系统
    场景采购单分级审批采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会......
  • Vue3组件二次封装
    naive-ui的n-input举例<template><n-inputclearableplaceholder=""v-bind="$attrs"><templatev-for="(value,name)in$slots"#[name]="slotData">......
  • 数据可视化组件封装
    数据可视化组件封装指南介绍数据可视化在现代应用程序开发中扮演着重要的角色。通过将数据以可视化的方式展示出来,我们可以更好地理解和分析数据。为了方便重复使用和维护,我们需要将数据可视化组件进行封装。在本文中,我将向你介绍数据可视化组件封装的流程和具体步骤。流程概述......
  • Form和ModelForm组件
    1.为什么使用form和modelform1.1不使用form时 当不用form时,想校验浏览器发来的数据需要使用很多request.Post.get拿到信息,再写函数进行逐个校验1.2使用form 不用再在视图函数内进行校验 Form功能:数据校验,自动生成HTML对应的标签,初始化 ......
  • 2023-07-25 uview1.0的u-number-box组件在渲染时会触发change,如何才能避免事件影响?==
    前言:购物车用到加减购物车数量的一个步进器组件,使用的是uview组件1.0版本的u-number-box。该组件设置了一个@change事件,该事件会在页面渲染的时候触发一次,如果你在里面调用了接口,比如增加/减少购物车数量,那么每次一刷新购物车该事件就会被触发,从而导致不必要的报错。解决方案:在......