Материал

Как сделать текст невыделяемым на css

Как сделать текст невыделяемым на css

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

Первый способ, связанный с небольшим повышением нагрузки на сайт - это запрет на уровне jаvascript. Как его обойти? Любой опытный пользователь просто отключит jаvascript в браузере. И все, после этой процедуры текст можно выделять и копировать.

Но в данной статье мы рассмотрим второй и более современный способ. Он заключается в том, чтобы сделать текст невыделяемым на css.

Итак, для этого нам не нужно подключения jаvascript скриптов и т.п., а всего лишь вставка следующих спецификаций на css:

::selection {
   background: transparent;
}
::-moz-selection {
   background: transparent;
}

В коде используется псевдоэлемент css ::selection, который позволяет указать стиль для выделяемого текста. Кроме стиля background можно использовать и другие, а именно: color и background-color.

Внимание! Для браузера MozillaFirefox используется псевдоэлемент ::-moz-selection.

Псевдоэлемент ::selection работае во всех современных браузерах и в Internet Explorer начиная с версии 9.0.

В коде мы указали запрет на выделение текста для всего текста. Если это нужно сделать для абзаца, то указанный выше код изменится.

p::selection {
   background: transparent;
}
p::-moz-selection {
   background: transparent;
}

Давайте рассмотрим полный код страницы с данным псевдоэлементом:

<html>
<head>
<title>Пример страницы с невыделяемым текстом</title>
<style>
p::selection {
   background: transparent;
}
p::-moz-selection {
   background: transparent;
}
</style>
</head>
<body>
<p>При попытке выделения этого текста визуально ничего не происходит.</p>
</body>
</html>

Но давайте рассмотрим поподробнее работу стилей css. Данная спецификация на css не запрещает выделить текст, а всего лишь позволяют сделать выделяемый фон прозрачным, что приводит к тому, что визуально кажется, что текст не выделяется.

Но многих пользователей это обескураживает. При этом опытное пользователи для отмены предполагаемого запрета, по старинке, отключают jаvascript. Но это ни к чему не приводит.

Хотя все очень просто - нужно выделить текст и нажать на предполагаемую выделенную область правой кнопкой мыши, а затем "копировать текст".

Получается, что данный способ просто обманывает пользователя. Он не защищает абсолютно ваши тексты, но благодаря спецификациям css позволяет достигнуть цели и сделать текст невыделяемым на css.