Skip to content

鼠标划词高亮标记

基于 SelectionAPI 和 CSS.highlights 实现。

查看代码 index.vue
vue
<script lang="ts">
import { toValue, watch, defineComponent } from 'vue';
import { useSelectionMark } from './useSelectionMark';

export default defineComponent({
	setup() {
		const { store } = useSelectionMark({
			rootSelector: '.demo> .workspace'
		});

		watch(store, () => {
			console.log('useSelectionMark--store', toValue(store));
		});
	}
});
</script>

<template>
	<div class="demo">
		<div>
			非工作区(鼠标划词没有效果): Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint aperiam quia
			maxime repellat labore omnis ea molestiae excepturi quod dicta porro debitis impedit consequatur similique,
			obcaecati esse eveniet facilis fuga!
		</div>
		<br />
		<div class="workspace">
			工作区(鼠标划词有效果): Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint aperiam quia maxime
			repellat labore omnis ea molestiae excepturi quod dicta porro debitis impedit consequatur similique,
			obcaecati esse eveniet facilis fuga!
		</div>
	</div>
</template>

<style scoped lang="less">
.demo {
	display: block;
	> div {
		border: 1px dashed lightgray;
		padding: 7px;
		border-radius: 4px;
	}
}
</style>
<script lang="ts">
import { toValue, watch, defineComponent } from 'vue';
import { useSelectionMark } from './useSelectionMark';

export default defineComponent({
	setup() {
		const { store } = useSelectionMark({
			rootSelector: '.demo> .workspace'
		});

		watch(store, () => {
			console.log('useSelectionMark--store', toValue(store));
		});
	}
});
</script>

<template>
	<div class="demo">
		<div>
			非工作区(鼠标划词没有效果): Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint aperiam quia
			maxime repellat labore omnis ea molestiae excepturi quod dicta porro debitis impedit consequatur similique,
			obcaecati esse eveniet facilis fuga!
		</div>
		<br />
		<div class="workspace">
			工作区(鼠标划词有效果): Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint aperiam quia maxime
			repellat labore omnis ea molestiae excepturi quod dicta porro debitis impedit consequatur similique,
			obcaecati esse eveniet facilis fuga!
		</div>
	</div>
</template>

<style scoped lang="less">
.demo {
	display: block;
	> div {
		border: 1px dashed lightgray;
		padding: 7px;
		border-radius: 4px;
	}
}
</style>

༼ つ/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿◕ _◕ ༽つ/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿ ̿̿