搜索
首页web前端css教程如何使用选择API为选定文本创建动作

如何使用选择API为选定文本创建动作

单击,拖动,发布:您刚刚在网页上选择了一些文本 - 可能是将其复制并粘贴到某个地方或共享。如果选择文本揭示了一些使这些任务更容易的选项,那会不会很酷?这就是选择菜单的作用。

如果您曾经使用过在线编辑器,则可能已经熟悉选择菜单。当您选择文本时,选择选项可能会浮在其上方。实际上,我正在将此草稿编写在一个完全做到这一点的编辑中。

让我们看看如何使用JavaScript的选择API创建这样的选择菜单。 API使我们可以访问网页上所选区域的空间和内容。这样,我们可以将选择菜单正好放在所选文本上方,并访问所选文本本身。

这是一个带有一些示例文本的HTML片段:

 <article>
  <h1 id="选择下面的文本">选择下面的文本</h1> 
  <p>级联样式表(CSS)是一种样式的语言,用于描述用标记语言(例如HTML)编写的文档的介绍。 CSS与HTML和JavaScript一起是万维网的基石技术。 CSS旨在使演示文稿和内容的分离,包括布局,颜色和字体。这种分离可以提高内容可访问性,在演示特征的规范中提供更多的灵活性和控制。 </p>

<template> <span> </span> </template></article>

最后有一个标签。内部的是我们的选择菜单控件。 标签中的任何内容都不会在页面上渲染,直到随后使用JavaScript添加到页面。当用户选择文本时,我们将“选择”菜单控件添加到页面。当用户选择该文本时,我们的选择菜单将提示用户发推文。

这是CSS样式的CSS:

 #控制 {
    背景图像:url(“数据:图像/svg xml,<svg xmlns="”" http: width="'40px'height">'40px'> <forefer object> <forefer xmlns="'http://www.w3.org/1999/xhtml'" style="'width:40px;height:40px;line-height:40px;text-align:center;color:transparent;text-shadow:" yellow black font-size>?  </forefer></forefer></svg>“);
  光标:指针;
  位置:绝对;
  宽度:40px;
  身高:40px;
}
#control :: {
  背景色:黑色;
  颜色:白色;
  内容:“推文!”;
  显示:块;
  字体重量:大胆;
  左键:37px;
  保证金顶:6px;
  填充:2px;
  宽度:Max-Content;
  身高:20px;
}

请查看本文,了解我如何使用表情符号(?)作为背景图像。

到目前为止,示例文本已经准备就绪,并且选择菜单控件已被设计。让我们继续使用JavaScript。进行选择后,我们将在页面上获得所选区域的大小和位置。然后,我们使用这些测量值来分配选择菜单控件的位置,这是在所选区域的顶部中间。

 var control = document.importnode(document.queryselector('template')。内容,true).childnodes [0];
document.queryselector('p')。onpointerup =()=> {
  让Selection = document.getSelection(),text = selection.tostring();
  if(text!==“”){
    令rect = selection.getRangeat(0).getBoundingClientRect();
    control.style.top =`calc($ {rect.top} px -48px)`;
    control.style.left =`calc($ {rect.left} px calc($ {rect.width} px / 2)-40px)`;
    控制['text'] = text; 
    document.body.body.appendchild(控制);
  }
}

在此代码中,我们首先获得

接下来,我们为带有示例文本的元素的OnPointerup事件编写处理程序功能。在功能中,我们使用document.getSelection()获得选择和选定的字符串。如果所选的字符串不是空的,则我们通过getBoundingClientRect()获得所选区域的大小和位置,然后将其放置在RECT变量中。

使用RECT,我们计算并分配控件的顶部和左侧位置。这样,选择菜单控件将放置在选定区域的上方,并水平居中。我们还将所选字符串分配给控件的用户定义属性。稍后,这将用于共享文本。

最后,我们使用附录()将控件添加到网页中。此时,如果我们在页面上选择一些示例文本,则选择菜单控件将出现在屏幕上。

现在,我们可以编码单击选择菜单控件时会发生什么。换句话说,我们将做到这一点,以便在单击提示时发推文。

 control.AddeventListener('Pointerdown',OnControldown,true);

函数oncontroldown(event){
  window.open(`https://twitter.com/intent/tweet?text = $ {this.text}`)
  this.remove();
  document.getSelection()。removeAllranges();
  event.stoppropagation();
}

单击控件时,将打开一个Twitter的“新推文”页面,并配有准备就绪的选定文本。

推文提示后,不再需要选择菜单控件,并且被删除,以及页面上的任何选择。在这一点上,Potternown事件进一步沿DOM树的层流层面的方式也被停止。

我们还需要一个事件处理程序,以进行页面的OnPoTredown事件:

 document.onpointerdown =()=> {    
  令控制= document.queryselector('#Control');
  if(control!== null){control.remove(); document.getSelection()。removeAllranges();}
}

现在,在单击页面上的任何位置,但选择菜单控件时,将删除页面上的控件和任何选择。

演示

这是克里斯(Chris)制作的更漂亮的版本:

这是一个在选择菜单中显示多个控件的示例:

关于该

我们使用它并不是完全必要的。取而代之的是,您也可以尝试简单地隐藏和显示控件的其他方式,例如隐藏的HTML属性或CSS显示。您还可以在JavaScript本身中构建选择菜单控件。编码选择将取决于您执行它们的效率,以及它们的后备(如果需要)以及它们如何适合您的应用程序。

一些UI/UX建议

虽然这是一个很好的效果,但使用它时有几件事需要考虑以确保良好的用户体验。例如,避免将自己的文本注入文本选择中 - 您知道,就像在自动生成的推文中附加链接回到您的网站一样。这是侵入性和烦人的。如果有任何理由这样做,例如添加源引用,请在发布之前先查看最终文本的预览。否则,用户可能会因加法而感到困惑或感到惊讶。

还有一件事:最好是菜单控件不在。我们不希望它覆盖过多的周围内容。这种事情加起来是CSS的“数据丢失”,我们希望避免这种情况。

底线:了解为什么您的用户需要在您的网站上选择文本并以避免他们尝试做的方式添加控件。

以上是如何使用选择API为选定文本创建动作的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
迭代使用样式组件的React设计迭代使用样式组件的React设计Apr 21, 2025 am 11:29 AM

在一个完美的世界中,我们的项目将拥有无限的资源和时间。我们的团队将开始使用经过深思熟虑的UX设计进行编码。

哦,制作三角形面包丝带的许多方法!哦,制作三角形面包丝带的许多方法!Apr 21, 2025 am 11:26 AM

哦,制作三角形面包屑丝带的许多方法

CSS指南中的SVG属性CSS指南中的SVG属性Apr 21, 2025 am 11:21 AM

SVG具有自己的一套元素,属性和属性集,以至于内联SVG代码可能会变得漫长而复杂。通过利用CSS和SVG 2规范的一些即将到来的功能,我们可以减少该代码以进行清洁标记。

交叉观察者的一些功能用途可以知道何时在元素中查看交叉观察者的一些功能用途可以知道何时在元素中查看Apr 21, 2025 am 11:19 AM

您可能不知道这一点,但是JavaScript最近偷偷地积累了许多观察者,而交叉观察者是其中的一部分

恢复偏爱减少运动恢复偏爱减少运动Apr 21, 2025 am 11:18 AM

我们可能不需要扔掉所有CSS动画。请记住,这更喜欢减少动作,而不喜欢不运动。

如何将进步的Web应用程序进入Google Play商店如何将进步的Web应用程序进入Google Play商店Apr 21, 2025 am 11:10 AM

PWA(Progressive Web应用程序)已经与我们在一起了一段时间。但是,每次我尝试向客户解释它时,同样的问题都会出现:“我的用户会成为

处理HTML的最简单方法包括处理HTML的最简单方法包括Apr 21, 2025 am 11:09 AM

这对我来说非常令人惊讶,HTML从未在其中包含其他HTML文件。似乎也没有任何东西

更改悬停在悬停的SVG的颜色更改悬停在悬停的SVG的颜色Apr 21, 2025 am 11:04 AM

使用SVG有很多不同的方法。取决于哪种方式,在不同状态或条件下重新定制该SVG的策略 - 悬停,

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境