vue - 前端实现划选的方式

划选(鼠标选中之后触发,显示提示框)

<!-- 划选弹层 -- ellipsis 是我自己定义的省略号样式  -->
<div v-show="selectWordVisible" class="select-word" :style="{top:selectY,left:selectX}">
  <ul>
    <li :title="selectWord" class="ellipsis" @click="searchSelectWord">搜索{{ `"${ selectWord }"` }}</li>
    <li v-for="(item, index) in searchListName" :key="index" @click="searchTypeClick(item)">{{ item.name }}</li>
  </ul>
</div>
// 划选样式
.select-word {
 width: 232px;
 background: #fff;
 position: fixed;
 top: 50%;
 left: 50%;
 line-height: 42px;
 border-radius: 5px;
 box-shadow: 0 0 5px #ccc;
 ul, li {
   padding: 0px;
   margin: 0px;
   list-style: none;
 }
 li {
   padding: 0 15px;
   font-size: 16px;
   color: #272A31;
 }
 li:hover {
   color: #417be0;
   cursor: pointer;
   background: #e7edfb;
 }
}
// data 中定义的数据
// 划选数据
selectWordVisible: false,
selectX: '', // 定位的水平偏移量
selectY: '', // 定位的垂直偏移量
selectWord: '', // 选中后的文本
searchListName: [] // 弹层框数据,可自行定义数据结构
// 划词选中,给内容区区域添加点击事件SelectText(事件可以自己定义名称),参数可传可不传
SelectText(e) {
  const word = window.getSelection().toString().trim().replace(/\n/g, '') // 选中的内容
  if (word !== '') {
    this.selectWordVisible = true
    this.selectX = e.x + 20 + 'px'
    this.selectY = e.y + 20 + 'px'
    this.selectWord = word
  } else {
    this.selectWordVisible = false
    this.selectWord = ''
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鸡岛~伍六七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值