聊一聊禁止文本复制一哥user-select【玩转CSS】
【摘要】 今天分享使用user-select如何实现文本禁止复制的方式,以及使用user-select实现实际开发中的不同需求。
前情提要
最近重温了一下MDN文档,果然温故而知新。
最近翻到CSS部分,刚把60多个伪类翻了一遍,准备翻翻别的。
它这个分类挺有趣的,以前看所有属性一大片,也没注意过,原来大家也可以分门别类。
今天翻阅基础用户界面相关的属性,大部分属性的花样连个手绢都绣不成,倒是最后这个user-select蛮有看头的。
禁止文本复制功能
禁止文本复制的实现很简单,为元素添加user-select属性,且属性值为none。
.select-none {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
user-select
user-select的作用是控制文本能否被选中。
属性
属性名 |
介绍 |
auto |
auto 的具体取值是分条件的:
|
none |
文本及子元素不可被选中。 |
text |
文本可被选中。 |
all |
单击即可选中文本。 当双击子元素或者上下文时,那么包含该子元素的最顶层元素也会被选中。 |
contain |
允许在元素内选择。 但是,选区将被限制在该元素的边界之内。 |
实际开发中的不同需求
子元素样式重置之后可以被选中
实际开发中,总有那么几个需求要与众不同,要特立独行。
一段文本中,个别文本可以被复制也是有可能出现的。比如微信公众号,类似这种的特别文本。
这个时候将需要被复制的子元素的user-select属性值设置成text。
.select-none {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
.select-text {
-moz-user-select: text;
-webkit-user-select: text;
-ms-user-select: text;
user-select: text;
}
......
<div class='select-none'>
我是无法被复制的
<div class='select-text'>子元素设置user-select: text之后可以被选中</div>
</div>
::before/:after伪元素确实无法被选中
即便将::before的user-select设置为text,也无法被选中。
::before和::after的内容无法被选中的,已是不争的事实。
.select::before {
content: '这里是::before';
-moz-user-select: text;
-webkit-user-select: text;
-ms-user-select: text;
user-select: text;
display: block;
}
未完待续
user-select吃瓜告一段落。最大的收获就是,CSS能玩出花的技能又增加了。
我喜欢创作,每一幅作品都是我将想象用一只叫做“代码”的画笔,绘制而成。
当我寻找新的技术的时候,不是创意枯竭,而是我需要新的色彩。
而这个循序渐进的学习过程,虽然缓慢,但是积少成多、聚沙成塔。
作者:非职业「传道授业解惑」的开发者叶一一简介:「趣学前端」、「CSS畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)