了解一下 ::target-text 选择器

简介: 了解一下 ::target-text 选择器
欢迎关注我的公众号: 前端侦探


最近在 MDN 官网看到了一个从未见过的选择器,::target-text


image.png

简单研究了一下,觉得还有点意思,也有点实际用处,现在分享一下。


一、::target-text 是干什么的


想必大家都用过:target这个选择器,可以很方便的从URL中匹配到页面上的内容,并且实现锚定定位。比如文档目录上经常看到这样的


image.png

但是,:target必须要求页面中包含id为该目标的元素,如果不存在就没办法定位了。为了解决这个问题,于是,::target-text就出现了!


从字面意思上来看,::target-text 表示"锚定文本"选择器。官方MDN上的描述为:


如果浏览器支持 滚动到文本片段这个特性,则会滚动到这部分文本所在的地方,并且允许用户自定义高亮显示该部分文本样式。


什么意思呢,这里官方有一个例子 scroll-to-text demo


image.png

可以看到点击这个链接后,浏览器自动跳转到指定的文本片段,并且该文本会有高亮的样式(图中的紫色背景,白色文字)。


于是,::target-text可以用来自定义这部分的样式

::target-text {
  background-color: rebeccapurple;
  color: white;
}


不过,支持的样式比较有限,和::selection差不多,仅支持文本相关样式


二、如何指定跳转位置


我们都知道,:target是通过在URL上指定#加 id 来匹配的,如下

http://www.example.com/index.html#section2
<section id="section2">Example</section>


回到刚才那个例子,可以看到跳转链接是这样的


image.png

可以看到,::target-text 也是有对应的规则的,如下

http://www.example.com/index.html#:~:text=textStart


这里的textStart就是表示页面中需要跳转的文本内容。不过需要注意的是,如果有多段文本都能够匹配,那么会定位到第一个相匹配的文本(和 id 有点类似)。


三、如何精准的定位


单纯的指定一小段文本,很容易出现定位不准的情况(太容易重复了)。为了解决这个问题,有两个方案


  1. 尽量指定长的文本,这样就不会重复了
  2. 在文本前后加上限制,比如起始点字符


方案一虽然可行,但是也有问题,一是地址栏太长,不太美观,而是我只需要分享这一小段内容出去,不需要那么多。现在看下方案二。这里简单介绍下:~:text的完整语法

#:~:text=[prefix-,]textStart[,textEnd][,-suffix]


  • prefix- 前缀文本
  • textStart 文本开始
  • textEnd 文本结束
  • -suffix 后缀文本


从语法上,只有 textStart 是必填,其他都是可选。怎么用的呢?假设我们想定位这一段文本(不包含首尾标点)


image.png

可以直接指定起始字符,Mlle,parachute

#:~:text=Mlle,parachute


可以访问这个链接 https://mdn.github.io/css-examples/target-text/index.html#:~:text=Mlle,parachute


效果如下


image.png

可以看到定位区域在第一个parachute处就结束了,并没有定位到后面的。这时可以继续限制一下,比如把后面的.加进来,作为后缀

#:~:text=Mlle,parachute,-.


可以访问这个链接 https://mdn.github.io/css-examples/target-text/index.html#:~:text=Mlle,parachute,-.


效果如下


image.png

这样就能精准的定位到想要的内容了


四、浏览器行为和兼容性


虽然有上面的语法,但实际上浏览器已经内置了快捷操作。选中一段文本,右键会出现这样的菜单,有一个“复制指向突出显示的内容的链接”选项(Edge浏览器提示略有不同),如下


image.png

点击这个会自动复制一段包含#:~:text=的链接,浏览器会自动处理选中文本的前后限制,保证结果的唯一性。如下,将刚才复制的地址直接粘贴在浏览器打开


image.png

然后说一下兼容性。


这个属性非常新,可以在 MDN 官网看到具体的兼容信息,需要 Chrome 89+ 以上才行


image.png

试了一下安卓系统上也是没有问题的,比如在微信中打开的效果如下


image.png

默认是一个黄色背景(貌似还不能自定义颜色),点击任意地方就消失了。


比较适合在阅读一本书时,想分享某一章节的某一小段精彩文本给他人,这样就能快速定位到分享的地方了,还能高亮显示。是不是很方便呢?


五、简单总结一下


详细通过本文,应该可以了解到::target-text是什么了吧?下面简单总结一下


  1. ::target-text 和 :target 类似,都可以跳转到指定位置
  2. ::target-text 无需 id,可以指定任意文本
  3. 地址栏匹配规则是 #:~:text=[prefix-,] textStart [,textEnd] [,-suffix],只有 textStart 是必填,其他都是可选
  4. 浏览器支持“复制指向突出显示的内容的链接”操作,可以不必手动拼接
  5. 兼容性有点差,安卓用户可以使用


当然这本身是一个渐进增强的属性,能够支持体验更好,不支持也没什么大事。最后,如果觉得还不错,对你有帮助的话,欢迎点赞、收藏、转发❤❤❤


欢迎关注我的公众号: 前端侦探
相关文章
|
7月前
|
边缘计算 开发者
阿里云 ESA「春节加速计划」活动说明与参与指南
阿里云ESA「春节加速计划」(2月5日-28日)邀您零门槛体验边缘计算:邀请新用户开通免费版,即得¥10代金券(上限¥150)+免费版额度;冲榜还可赢最高¥1000奖励!永久免费版含无限流量、HTTPS、WAF等能力。
阿里云 ESA「春节加速计划」活动说明与参与指南
|
4月前
|
人工智能 边缘计算 运维
【免费CDN】阿里云ESA免费套餐领取及配置教程
阿里云边缘安全加速(ESA)依托全球3200+边缘节点,融合AI智能调度、全栈安全防护与自动化运维,为Web、API及AI智能体提供毫秒级接入与端到端业务保障。现推出1个月免费基础版,支持一键领取与快速配置。
449 1
|
4月前
|
jenkins 持续交付 Nacos
【日常小问】解决 Jenkins 部署 Spring Cloud 微服务到 Docker 容器启动失败的问题
在使用Jenkins部署SpringCloud微服务时,Docker容器因数据库配置加载失败而退出的问题。
317 1
|
5月前
|
人工智能 自然语言处理 搜索推荐
DeepSeek搜不到企业信息怎么办?从品牌数据资产到GEO优化的技术排查方法
AI时代,企业品牌若未被DeepSeek等大模型准确识别、理解与引用,将陷入“AI隐身”困境。本文系统剖析搜不到的六大技术原因,详解GEO(生成式引擎优化)与SEO的本质差异,并提供品牌数据资产建设、多平台信源协同、结构化内容生产等实操路径,助力企业从“被搜索”迈向“被AI主动推荐”。(239字)
|
6月前
|
人工智能 数据中心 芯片
告别AI算力圈“局外人”的100词手册
本文系统梳理AI与算力领域的100个核心术语,涵盖基础概念(如LLM、AGI、训练/推理)、硬件架构(GPU/TPU/NPU、HBM、NVLink)、数据中心(集群、液冷、PUE)及网络技术(RoCE、InfiniBand、DPU)四大维度,是入门者快速掌握AI基建语言的实用指南。(239字)
1399 4
|
8月前
|
人工智能 自然语言处理 运维
告别满场救火:资深经理如何靠“AI调度官”稳坐中军?
本文讲述IT经理老张从“超级救火队员”蜕变为“AI调度官”的转型实践:依托Agentic Workflow、RAG与LUI技术,构建数字化“中军帐”,实现从被动救火到主动编排的跃迁,彰显系统思维与人机协同的职场新范式。
559 1
|
人工智能 NoSQL 测试技术
Apipost 与 Apifox:全栈工程师视角下的 API 工具抉择
本文对比了Apipost与Apifox两款API工具在AI能力、数据一致性管理、自动化测试、团队协作、协议支持、数据库支持及离线可用性等多个核心维度的表现。Apipost凭借AI智能化、数据自动同步、全面协议支持及离线功能等优势,在大型项目、高安全场景及多协议调试中表现更出色。而Apifox适合预算有限、小型团队及纯HTTP项目。
415 0
|
存储 弹性计算 运维
阿里云通用算力型U1实例怎么样?u1实例技术架构、场景适配与优惠价格参考
阿里云服务器ECS 通用算力型u1实例2核4G,5M固定带宽,80G ESSD Entry盘,企业用户专享优惠价格199元1年,很多用户关心这个款云服务器怎么样?阿里云通用算力型U1实例自推出以来,凭借独特的"均衡算力+智能调度"设计理念,在IaaS市场开辟出差异化的竞争赛道。本文将通过技术架构解析、典型场景适配分析、全生命周期成本测算三个维度,全面解构这款热门云服务器实例的核心价值,以供参考和选择。
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
存储 分布式计算 大数据
基于阿里云大数据平台的实时数据湖构建与数据分析实战
在大数据时代,数据湖作为集中存储和处理海量数据的架构,成为企业数据管理的核心。阿里云提供包括MaxCompute、DataWorks、E-MapReduce等在内的完整大数据平台,支持从数据采集、存储、处理到分析的全流程。本文通过电商平台案例,展示如何基于阿里云构建实时数据湖,实现数据价值挖掘。平台优势包括全托管服务、高扩展性、丰富的生态集成和强大的数据分析工具。