css(html)文字不能被选中

给标签class设置样式

.selsct {
	-webkit-user-select:none;
     -moz-user-select:none;
     -ms-user-select:none;
     user-select:none;
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现微信小程序中选中文字变色的效果,可以通过使用 `rich-text` 组件来实现。具体步骤如下: 1. 将需要展示的文本放在 `rich-text` 标签中,并设置一个唯一的 `id` 属性,例如: ```html <rich-text id="myText" nodes="{{richTextNodes}}"></rich-text> ``` 2. 在 `wxml` 文件中添加以下样式: ```css ::selection { background-color: #FFC0CB; /* 设置选中文字的背景色 */ color: #000; /* 设置选中文字的文本颜色 */ } #myText { user-select: none; /* 禁止用户选择文本 */ } ``` 3. 在 `js` 文件中,定义 `richTextNodes` 数据,用于渲染 `rich-text` 组件的内容。当用户选中文本时,`bindtap` 事件会触发,可以通过 `wx.createSelectorQuery()` 获取选中的文本节点,并设置 `style` 属性,以达到选中文字变色的效果,例如: ```javascript Page({ data: { richTextNodes: [ { type: 'text', text: '这是一段需要展示的文本' } ] }, // 绑定 tap 事件,获取选中的文本节点 bindtap: function() { wx.createSelectorQuery().select('#myText').boundingClientRect(function(rect) { // 获取选中文本的开始和结束位置 let start = rect.startOffset; let end = rect.endOffset; // 获取选中文本的父节点 let parent = rect.parentRect; // 获取选中文本节点的数组 let nodes = rect.nodes; // 遍历选中文本节点数组,设置选中文本的样式 for (let i = 0; i < nodes.length; i++) { let node = nodes[i]; if (node.nodeType === 3) { // 文本节点 let text = node.textContent; let textLength = text.length; let textStart = start - node.start; let textEnd = end - node.start; if (textStart < textLength && textEnd > 0) { if (textStart < 0) { textStart = 0; } if (textEnd > textLength) { textEnd = textLength; } let subText = text.substring(textStart, textEnd); let newText = text.replace(subText, `<span style="background-color:#FFC0CB">${subText}</span>`); node.textContent = ''; node.insertAdjacentHTML('beforeend', newText); } } } }).exec(); } }) ``` 这样,当用户选中文本时,被选中的文本会变色,未被选中的文本保持原来的颜色。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值