В большинстве браузеров это может быть достигнуто с помощью проприетарных вариаций свойства CSS user-select
, первоначально предложено, а затем от него отказались в CSS 3, а теперь предлагается в CSS UI уровня 4:
*.unselectable {
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
/*
Introduced in Internet Explorer 10.
See http://ie.microsoft.com/testdrive/HTML5/msUserSelect/
*/
-ms-user-select: none;
user-select: none;
}
Для Internet Explorer ‹10 и Opera‹ 15 вам нужно будет использовать unselectable
атрибут элемента, который вы не хотите выбирать. Вы можете установить это с помощью атрибута в HTML:
<div id="foo" unselectable="on" class="unselectable">...</div>
К сожалению, это свойство не наследуется, а это означает, что вам нужно поместить атрибут в начальный тег каждого элемента внутри <div>
. Если это проблема, вы можете вместо этого использовать JavaScript, чтобы сделать это рекурсивно для потомков элемента:
function makeUnselectable(node) {
if (node.nodeType == 1) {
node.setAttribute("unselectable", "on");
}
var child = node.firstChild;
while (child) {
makeUnselectable(child);
child = child.nextSibling;
}
}
makeUnselectable(document.getElementById("foo"));
Обновление от 30 апреля 2014 г.: этот обход дерева необходимо запускать повторно всякий раз, когда в дерево добавляется новый элемент, но из комментария @Han видно, что этого можно избежать, добавив событие mousedown
. обработчик, который устанавливает unselectable
для цели события. Подробнее см. http://jsbin.com/yagekiji/1.
Это все еще не охватывает все возможности. Хотя невозможно инициировать выбор в невыбираемых элементах, в некоторых браузерах (например, Internet Explorer и Firefox) по-прежнему невозможно предотвратить выбор, который начинается до и заканчивается после невыбираемого элемента, не делая весь документ невыбираемым.
person
Tim Down
schedule
05.12.2010
::selection { background: transparent; } ::-moz-selection { background: transparent; }
- person DaAwesomeP   schedule 12.12.2014postcss
иautoprefixer
и установить версию браузера, а затемpostcss
сделать все круто. - person AmerllicA   schedule 06.12.2017