当前位置:网站首页>About text selection in web pages and counting the length of selected text
About text selection in web pages and counting the length of selected text
2022-07-03 15:40:00 【Do front-end Pinellia ternata】
*Hello everyone , I am Pinellia ternata , A sand carving programmer who just started writing . If you like my article , Can pay attention to give the thumbs-up Add me WeChat :「frontendpicker」, Learn to communicate together , Become a better Engineer ~ Official account :** Pinellia ternata **, Learn more about the front end ! Am I Explore the new world !
*
*Link to the original text ==>http://sylblog.xin/archives/100
*
Preface
I opened the code I had knocked down in the past , This damn soulless code , Every function that's crooked says “ Copy and paste ” Four words . I can't sleep , After a close look at midnight , To see the words in the seam , Two words are written all over the screen “ Vegetable dog ”!!!
—— Lu xun ( false )
As an orientation CV Of CSS+JS The programmer , What I do most often , Just assign and paste , I learned something before . There is no systematic learning .CSS There are probably two attributes about text selection in ! One **::selection** , the other one 「user-select」
::selection
::selction It is used to emphasize the content selected by the user by clicking or dragging the mouse .
It's easy to use :
p::selection {
color: rgba(255, 255, 0, 1);
background-color: rgba(128, 128, 192, 1);
}

at present ::selection Only the following properties are supported :
colorbackground-colortext-decorationAnd its related propertiestext-shadowstroke-color,fill-colorandstroke-width
Although the supported properties are , However, we can use these attributes to make some interesting choices .
Example - Selected emphasis
Mainly used text-shadow Shadow the text , When the text is selected , Show effect .
p::selection {
color: rgba(255, 255, 0, 1);
background-color: rgba(128, 128, 192, 1);
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}

「PS: more text-shadow Produced text effect , You can see :https://juejin.cn/post/7028956229925863455」
user-select
user-select It mainly controls the selection of users , For example, text cannot be selected , Partial selection, etc !
The main attribute values are :
none, auto, text, contain, all
「 For specific usage, you can see :https://juejin.cn/post/7022939685978636302」
run into sb. pointer-events:none;
When the element is set pointer-events:none, Causes the element to never become a mouse event target. I thought at first , Even when the element is set user-select Is selectable , as long as pointer-events:none; In the end, you still can't select . But the result is the opposite :
The following code , Setting elements can all be selected , however pointer-events:none;. The end result of the experiment is , Text can be selected .
p::selection {
pointer-events: none;
user-select: all;
}
The element will never become a mouse event target. however , When its descendant element pointer-events Property specifies a different value , Mouse events can point to descendant elements , under these circumstances , The mouse event will trigger the event listener of the parent element during the capture or bubble phase .
JS Real time statistical length
js Use in .addEventListener("selectionchange"), To listen to the event selected by the text .window.getSelection().toString() Used to get the selected text .
Take the following example , When text is selected , The length of the selected text can be displayed in real time .
<p>
</p>
<p id="showConut"></p>
<script>
const showConut = document.getElementById("showConut");
const handleSelectionChange = (event) => {
let selection = window.getSelection().toString();
showConut.textContent = `(${selection.length} character )`;
return;
};
document.addEventListener("selectionchange", handleSelectionChange);
</script>

Postscript
Man , Learning things still needs to be systematic . It's probably not possible to do scattered things . This article only summarizes my choice of text , Some knowledge learned . If there is a new usage and scene in the future , Will sort it out !
This paper is written by mdnice Multi platform Publishing
边栏推荐
- Digital image processing -- popular Canny edge detection
- Kubernetes will show you from beginning to end
- Go语言自学系列 | golang中的if else if语句
- Download and install common programs using AUR
- Enable multi-threaded download of chrome and edge browsers
- Win10 enterprise 2016 long term service activation tutorial
- Halcon与Winform学习第二节
- Popular understanding of gradient descent
- 秒杀系统1-登录功能
- How idea starts run dashboard
猜你喜欢

Leasing cases of the implementation of the new regulations on the rental of jointly owned houses in Beijing

App移动端测试【5】文件的写入、读取

App移动端测试【3】ADB命令

Popular understanding of random forest

Srs4.0+obs studio+vlc3 (environment construction and basic use demonstration)

几种常见IO模型的原理

Reentrantlock usage and source code analysis

视觉上位系统设计开发(halcon-winform)-5.相机

从 flask 服务端代码自动生成客户端代码 -- flask-native-stubs 库介绍

Detailed explanation of string function and string function with unlimited length
随机推荐
win32创建窗口及按钮(轻量级)
Dataframe returns the whole row according to the value
Second kill system 3 - list of items and item details
[combinatorial mathematics] binomial theorem and combinatorial identity (binomial theorem | three combinatorial identities | recursive formula 1 | recursive formula 2 | recursive formula 3 Pascal / Ya
VS2017通过IP调试驱动(双机调试)
几种常见IO模型的原理
Jvm-02-class loading subsystem
UnityShader——MaterialCapture材质捕捉效果 (翡翠斧头)
CString的GetBuffer和ReleaseBuffer使用说明
Win10 enterprise 2016 long term service activation tutorial
qt使用QZxing生成二维码
XWiki Installation Tips
Jvm-06-execution engine
阿特拉斯atlas扭矩枪 USB通讯教程基于MTCOM
Kubernetes - yaml file interpretation
[daily training] 395 Longest substring with at least k repeated characters
GCC cannot find the library file after specifying the link library path
Introduction to redis master-slave, sentinel and cluster mode
Download and install common programs using AUR
Final review points of human-computer interaction