Управление выделением с помощью свойства CSS user-select

Версия IE10 Platform Preview 4 поддерживает новое свойство CSS, -ms-user-select, которое позволяет веб-разработчикам легко контролировать способ выделения текста на их веб-сайтах. Если бы вы могли наблюдать за мной весь день, пока я работаю за своим компьютером, вы бы заметили, что когда я читаю на компьютере, я выделяю текст. Я не единственный, кто читает подобным образом. Выделение текста в Интернете играет важную роль во многих других ситуациях.

Рассмотрим типичный новостной веб-сайт. Большинство страниц на нем содержат статьи с новостями, содержимое которых должно быть доступно для выделения, так как пользователи читают, выделяя текст, или потому что они хотят поделиться содержимым с другими. Кроме того, на веб-страницах имеются меню и ссылки на другие компоненты сайта. Пользователям обычно не требуется выделять эти элементы. С помощью -ms-user-select веб-разработчик может указать, что выделение текста разрешено в статьях, но не разрешено в меню.

На сайте тестирования Internet Explorer приводится пример реализации этой функциональной возможности.

Снимок экрана демонстрации свойства user-select с сайта тестирования Internet Explorer, на котором показана разметка с использованием -ms-user-select.

Если задать -ms-user-select:none для всей страницы и затем установить -ms-user-select:element для элемента, содержащего запись блога, то разрешается выделение только содержимого записи блога. -ms-user-select:element — новое свойство, которое впервые представлено в Internet Explorer и может быть полезно во многих ситуациях. Установка -ms-user-select:element означает, что пользователь может выделить текст этого элемента, но возможность выделения будет доступна только в пределах границ элемента. Пользователи, которые хотят выделить содержимое новостной статьи, возможно, не захотят выделять элементы нижнего колонтитула после статьи. Установка -ms-user-select:element позволяет выделять содержимое статьи, не волнуясь о точном расположении мыши.

-ms-user-select принимает четыре значения:

  • text — текст можно выделить;
  • element — текст можно выделить, но только в границах элемента;
  • none — текст нельзя выделить;
  • auto — если элемент содержит редактируемый текст, например элемент input или contenteditable, текст можно выделить. В противном случае возможность выделения определяется значением родительского узла.

auto — значение -ms-user-select по умолчанию.

Разработчик может отключить выделение текста, установив для -ms-user-select значение none. В Internet Explorer, если для текста задано значение -ms-user-select:none, пользователь не сможет начать выделение в этом блоке текста. Но если пользователь начал выделение текста в другой области страницы, выделение будет продолжено для любой области страницы, включая те области, где значение -ms-user-select равно none. В Firefox, если разработчик задает –moz-user-select:none, в такой области нельзя начать выделение и ее нельзя выделить вместе с другими областями. В Webkit при установке –webkit-user-select:none все будет выглядеть так, будто текст не включен в выделение. Но если скопировать и вставить содержимое, вы увидите, что это содержимое также было выделено.

Свойство user-select первоначально было предложено в модуле Пользовательский интерфейс для CSS3 (возможно, на английском языке). Затем этот модуль был заменен модулем базового интерфейса пользователя CSS3 (возможно, на английском языке), но в нем это свойство не определено. И Mozilla, и Webkit поддерживают собственные версии этого свойства. Однако, как было описано выше, существуют определенные различия в его реализации.

Ознакомьтесь с примерами на сайте тестирования Internet Explorer (возможно, на английском языке) и сообщите нам свое мнение.

— Шэрон Ньюмэн (Sharon Newman), руководитель программы, Internet Explorer