CSS resize — зміна розміру елемента мишею
Властивість resize вказує, чи дозволено користувачу змінювати розміри елемента.

Ви можете вказати, чи може користувач змінювати розмір елемента по горизонталі, вертикалі, в обох напрямках або взагалі заборонити таку можливість.
Властивість resize не слід плутати з властивістю overflow, що дозволяє вказати, що має відбутися, якщо вміст елемента занадто великий, щоб він містився всередині поля. У цьому випадку ви можете вказати, що в полі має з'являтися смуга прокрутки, приховувати вміст або що вміст не слід обрізати (тобто він повинен з'явитися поза рамкою). Однак це не те ж саме, що і властивість зміни розміру, що дозволяє користувачеві змінювати розмір блоку.
Загальний опис
автор: NagarD
- Нотатка
-
Властивість
автор: Svitlanaresizeне застосовується до блоків, де для властивістіoverflowвстановленоvisible. Враховуючи, що це значення без задання для цього ресурсу, вам потрібно переконатися, що дляoverflowвстановлено значення відмінне відvisible(наприклад,scrollчиauto).
Синтаксис
resize: none|both|horizontal|vertical|initial|inherit;
Властивість resize може отримувати 6 значень:
-
none -
Розміри елемента не змінюються.
автор: Svitlana -
both -
Можна змінювати розміри елемента по горизонталі та вертикалі.
автор: Svitlana -
horizontal -
Можна змінювати розміри елемента тільки по горизонталі.
автор: Svitlana -
vertical -
Можна змінювати розміри елемента тільки по вертикалі.
автор: Svitlana -
initial -
Встановлює цю властивість в значення без задання.
автор: Svitlana -
inherit -
Успадкує значення від свого батьківського елемента.
автор: Svitlana
| Значення без задання: | none |
|---|---|
| Наслідує: | Ні |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.resize="both" |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 1 | 4 | 3 | 12.1 | 79 | — |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4–79 | — |
Приклади
+ запропонувати свій приклад у пісочниці
Потягни за правий нижній кут блока — resize: both дозволяє міняти і ширину, і висоту. Обов'язковий супутник — overflow зі значенням, відмінним від visible.
HTML
<div>Потягни за мій правий нижній кут.</div>
CSS
div {
resize: both;
overflow: auto;
width: 220px;
height: 90px;
padding: 8px;
border: 2px solid #0172ad;
}
Приклад використання
HTML
<div>
Ти можеш змінити мій розмір! :)
</div>
CSS
body {
font-size: 18px;
font-family: sans-serif;
color: #252525;
}
div {
width: 50%;
text-align: center;
padding: 30px;
background: yellow;
overflow: auto;
resize: both;
}
Обидва блоки мають resize: both, але ручка є лише в того, у кого overflow не visible. Третій — <textarea>, якому ручку дає сам браузер, тут обмежена вертикаллю.
HTML
<div class="box plain">resize: both, але overflow: visible — ручки немає</div>
<div class="box works">resize: both + overflow: auto — тягніть за куток</div>
<textarea>textarea: resize: vertical</textarea>
CSS
body {
font-family: sans-serif;
font-size: 15px;
line-height: 1.4;
padding: 12px;
}
.box {
width: 240px;
height: 80px;
margin-bottom: 16px;
padding: 8px;
border: 2px solid #0172ad;
background: #eef6ff;
resize: both;
}
.plain {
overflow: visible;
}
.works {
overflow: auto;
}
textarea {
width: 240px;
height: 80px;
padding: 8px;
font: inherit;
resize: vertical;
}
Значення у дії
HTML
<p>Вибери потрібне значення для <code>resize</code>, а потім спробуй змінити розмір блоку (розтігуючи його, вхопившись курсором за правий знизу куток):</p>
<div class="inputs">
<input id="none" checked name="resize" type="radio"/>
<label for="none">none</label>
<message for="none">Розміри елемента не змінюються.</message>
<input id="both" name="resize" type="radio"/>
<label for="both">both</label>
<message for="both">Можна змінювати розміри елемента по горизонталі та вертикалі.</message>
<input id="horizontal" name="resize" type="radio"/>
<label for="horizontal">horizontal</label>
<message for="horizontal">Можна змінювати розміри елемента тільки по горизонталі.</message>
<input id="vertical" name="resize" type="radio"/>
<label for="vertical">vertical</label>
<message for="vertical">Можна змінювати розміри елемента тільки по вертикалі.</message>
</div>
<p id="message">Розміри елемента не змінюються.</p>
<hr>
<div id="block">
<p>Це вміст блоку</p>
</div>
CSS
* {
box-sizing: border-box;
padding: 0;
}
body {
text-align: center;
font-family: monospace;
font-size: 17px;
line-height: 1.5;
color: #222;
}
#form {
padding: 8px 16px;
font-size: 19px;
}
#block {
font-size: 25px;
text-align: left;
background-color: yellow;
padding: 16px;
width: 250px;
overflow: auto;
resize: none;
}
#text {
height: 60px;
background-color: #eee;
padding: 16px 0;
}
message {
display: none;
}
JS
const message = document.querySelector('#message');
document.querySelectorAll('.inputs input').forEach((el) => el.addEventListener('change', function () {
var messageText = document.querySelector("message[for='" + this.id + "']");
message.textContent = messageText?.textContent ?? '';
document.querySelectorAll('#block').forEach((n) => n.style.setProperty('resize', this.id));
}));
Коментарі
Коментарів ще немає — будьте першим!