想要禁用突出显示表格的第一列。
<table>
<tbody>
<tr><td class="unselectable" unselectable="on"><button value="1" unselectable="on" class="unselectable"><div unselectable="on" class="unselectable">✘</div></button></td><td>Row 1</td></tr>
<tr><td class="unselectable" unselectable="on"><button value="2" unselectable="on" class="unselectable"><div unselectable="on" class="unselectable">✘</div></button></td><td>Row 2</td></tr>
<tr><td class="unselectable" unselectable="on"><button value="3" unselectable="on" class="unselectable"><div unselectable="on" class="unselectable">✘</div></button></td><td>Row 3</td></tr>
</tbody>
</table>
*.unselectable {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: -moz-none;
-ms-user-select: none;
user-select: none;
}
当用户选择并在桌面上拖动鼠标按钮时,按钮文本(✘)将突出显示(不良行为)。当用户复制并粘贴值时,不包括值(✘)(所需行为)。
澄清一下,这是当前的行为(不受欢迎的):
下图显示了在桌面上拖动鼠标后所需的行为:
大多数用户可能不会关心,但这是一种有点误导性的用户体验。无论用户突出显示文本并将其复制,都应该复制所有突出显示的文本。通过添加unselectable
类,按钮'(✘)值会突出显示,但不会被复制。用户根本不应该突出显示(选择)(✘),因为它被设置为unselectable
。
我在Xubuntu上使用Firefox 19.0.2,但我寻求跨浏览器解决方案。
什么是跨浏览器方式阻止用户突出显示第一个表格列(包含按钮)?
答案 0 :(得分:2)
如果通过content
CSS规则设置,浏览器似乎无法复制内容。希望您不需要支持IE7
button.unselectable:after {
content: "\2718";
}
答案 1 :(得分:1)
到目前为止,我只发现了一个相当不方便的解决方法。它隐藏了unselectable
元素中的所有“实际”文本,并通过:before
伪元素将其替换为伪文本。注意:如果不需要在html中实际拥有“实际”文本,那么可以消除嵌套的span
元素(以及一些冗余的html)和下面关联的css,但这一切都取决于如何“重要”文本在您的实际应用程序中(对于屏幕阅读器,搜索引擎等)。
<强> Fiddle example. 强>
<强> HTML 强>
<table>
<tbody>
<tr><td><button value="1"><div class="unselectable" data-content="✘"><span>✘</span></div></button></td><td>Row 1</td></tr>
<tr><td><button value="2"><div unselectable="on" class="unselectable" data-content="✘"><span>✘</span></div></button></td><td>Row 2</td></tr>
<tr><td><button value="3"><div unselectable="on" class="unselectable" data-content="✘"><span>✘</span></div></button></td><td>Row 3</td></tr>
</tbody>
</table>
<强> CSS 强>
*.unselectable {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: -moz-none;
-ms-user-select: none;
user-select: none;
}
*.unselectable span {
display: none;
}
*.unselectable:before {
content: attr(data-content);
}