CSS user-select — заборона виділення тексту
Властивість user-select керує поведінкою виділення тексту та інших елементів на сторінці, зокрема, дозволяє заборонити виділення тексту.
Зазвичай застосовується для інтерактивних елементів, на які можна клацати, наприклад, вкладки, і для яких виділення тексту небажано.
автор: NagarD
Загальний опис
автор: NagarD
- Нотатка
-
Ця властивість дуже слабо підтримується сучасними браузерами, й рекомендується до використання з префіксами.
автор: NagarD
Синтаксис
user-select: auto | text | none | contain | all;
Властивість user-select може отримувати 5 значень:
-
none -
Текст не можна виділяти.
автор: NagarD -
auto -
Текст можна виділяти, якщо це дозволено без задання у браузері.
автор: NagarD -
all -
Виділяє увесь текст в один клік.
автор: NagarD -
text -
Текст можна виділяти.
автор: NagarD -
contain -
Виділяє текст, якщо елемент можна редагувати.
автор: NagarD
| Значення без задання: | auto |
|---|---|
| Наслідує: | Так |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.userSelect |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 54 | 69 | 3* | 41 | 79 | 10* |
| Переглядач | ||||
|---|---|---|---|---|
| 54 | 54 | 79 | 3* |
Приклади
+ запропонувати свій приклад у пісочниці
Спробуй виділити обидва абзаци мишею: другий із user-select: none не виділяється (і не скопіюється).
HTML
<p>Цей текст виділяється як звичайно.</p>
<p class="no">А цей виділити не вдасться — спробуй.</p>
CSS
.no {
user-select: none;
}
Три поведінки поруч: звичайний абзац виділяється по буквах, ключ із user-select: all — увесь одним клацанням, а вкладка з user-select: none не виділяється зовсім.
HTML
<p>Звичайний абзац: виділяється як завжди, по буквах і словах.</p>
<code class="key">4f3c-9a11-77be-0d52</code>
<p class="tab">Вкладка з user-select: none</p>
CSS
body {
font-family: sans-serif;
font-size: 16px;
line-height: 1.5;
padding: 12px;
}
.key {
display: block;
margin: 12px 0 16px;
padding: 8px 12px;
background: #eef6ff;
border: 1px solid #0172ad;
font-family: monospace;
user-select: all;
-webkit-user-select: all;
}
.tab {
display: inline-block;
padding: 8px 14px;
background: #333;
color: #fff;
border-radius: 4px;
user-select: none;
-webkit-user-select: none;
}
Значення у дії
HTML
<p>Цей приклад показує як працює властивість <code>user-select</code>. Спробуйте вимкнути/ввімкнути перемикач, щоб додати/прибрати можливість виділення рядку тексту нижче.</p>
<div class="inputs">
<input id="none" checked name="user-select" type="radio"/>
<label for="none">none</label>
<message for="none">Текст не можна виділяти.</message>
<input id="auto" name="user-select" type="radio"/>
<label for="auto">auto</label>
<message for="auto">Текст можна виділяти, якщо це дозволено без задання у браузері.</message>
</div>
<p id="message">Текст можна виділяти, якщо це дозволено без задання у браузері.</p>
<hr>
<p id="block">Це текст. Просто текст для прикладу.</p>
CSS
* {
box-sizing: border-box;
padding: 0;
}
body {
font-family: sans-serif;
}
#block {
font-size: 1.75em;
user-select: none;
}
message {
display: none;
}
JS
document.querySelectorAll('.inputs input').forEach((el) => el.addEventListener('change', function () {
var messageText = document.querySelector("message[for='" + this.id + "']");
document.querySelectorAll('#message').forEach((n) => n.textContent = messageText?.textContent ?? '');
document.querySelectorAll('#block').forEach((n) => n.style.setProperty('user-select', this.id));
}));
Приклад використання
HTML
<p>Це текст. Всі властивості мають значення без задання.</p>
<p class="not">А тут застосована властивість <strong>user-select</strong> й цей текст неможливо виділити курсором.</p>
<p>А цей знову можна виділити.</p>
CSS
body {
font-family: sans-serif;
font-size: 20px;
line-height: 1.45;
}
p {
margin-bottom: 16px;
}
.not {
user-select: none;
}
Коментарі
Коментарів ще немає — будьте першим!