我想允许用户选择位于多个DIV中的文本,这些DIV一个接一个地位于它们之间,并且它们之间存在小的间隙.
问题是,当用户拖动鼠标执行选择时,它们会越过“间隙”,这会导致整个父DIV被暂时选中,直到它们进入下面的子DIV.
这会导致“闪烁”行为和糟糕的用户体验,因为父DIV也有图像,并且暂时也会选择所有图像.
我尝试了在这个论坛中提出的几种方法,包括:
-moz-user-select:none; -khtml-user-select:none; -webkit-user-select:none; user-select:none;
unselectable = on,并覆盖onselectstart事件:return false;
不幸的是,如果我要禁用在父DIV中选择文本,所有的孩子DIV立即采用了这种行为,这不是我的意思.
我希望不会选择父DIV,但它的孩子会.
谢谢
更新:
“onselectstart”仅针对父DIV(以及它下面的跨度/段落)调用,但在选择图像时不会调用它.因此,试图操纵它并使用“返回false”;不相关;图像根本不会得到那个事件.
解决方法:
IE的不可选择的expando属性会自动为您完成此操作;它不是遗传的.对于其他浏览器,请使用额外的CSS规则.假设以下HTML:
<div class="unselectable" unselectable="on">
Some unselectable text
<div>Some selectable text</div>
Some more unselectable text
</div>
使用以下CSS.这定义了一个额外的规则,专门为不可选元素的后代选择文本:
*.unselectable {
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
user-select: none;
}
*.unselectable * {
-moz-user-select: text;
-khtml-user-select: text;
-webkit-user-select: text;
-o-user-select: text;
user-select: text;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。