style.flexShrink — стиснення flex-елемента в JavaScript


Загальний опис

element.style.flexShrink - це властивість, яка визначає, наскільки елемент може зменшуватись відносно інших елементів у контейнері flexbox. Ця властивість дозволяє контролювати, як елемент буде скорочуватись, коли розмір контейнера flex змінюється.

Властивість flexShrink є частиною моделі flexbox у CSS і задає коефіцієнт зменшення для елемента. За замовчуванням вона має значення 1, що означає, що елемент може зменшуватися з однаковою швидкістю з іншими елементами у flex-контейнері. Якщо значення flexShrink встановлено в 0, елемент не буде зменшуватись.

Для того, щоб змінити або отримати значення властивості flexShrink у JavaScript, ви можете використовувати element.style.flexShrink. Це дозволяє динамічно змінювати поведінку flex-елементів.

Приклад використання

// Припустимо, що у нас є елемент з id "myElement"
var myElement = document.getElementById("myElement");

// Встановлюємо значення flexShrink для елемента
myElement.style.flexShrink = "2";

// Отримуємо значення flexShrink для елемента
var flexShrinkValue = myElement.style.flexShrink;
console.log(flexShrinkValue); // Виведе "2"

У цьому прикладі ми спочатку отримуємо доступ до елемента з id myElement, потім встановлюємо значення flexShrink на 2. Це означає, що цей елемент буде зменшуватись у два рази швидше, ніж елементи зі значенням flexShrink, рівним 1. Потім ми отримуємо значення flexShrink і виводимо його в консоль.

Властивість element.style.flexShrink є потужним інструментом для керування тим, як елементи flexbox поводяться при зменшенні розмірів контейнера. Використовуючи цю властивість, ви можете точно налаштувати поведінку кожного елемента у flex-контейнері, забезпечуючи бажаний результат у макеті вашої веб-сторінки.

автор: Bond

Нотатка

Значення flexShrink повинно бути числом або рядком, що представляє число. Встановлення нечислових значень призведе до того, що браузер проігнорує цю властивість.

автор: Bond
Нотатка

Якщо flexShrink не встановлено, використовується значення за замовчуванням, яке дорівнює 1.

автор: Bond
Нотатка

Змінення flexShrink впливає тільки на елементи, які є дочірніми елементами контейнера з дисплеєм flex (встановленим через display: flex). Використання властивості на елементі, який не є дочірнім flex-контейнера, не матиме ніякого ефекту.

автор: Bond

Синтаксис

element.style.flexShrink

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
29 20 9 12.1 12 10
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 29 20 9

Приклади

+ запропонувати свій приклад у пісочниці

Цей приклад дозволяє користувачам динамічно змінювати значення flexShrink для трьох елементів у flex-контейнері за допомогою повзунків. Кожен повзунок відповідає за окремий елемент, дозволяючи користувачеві керувати тим, наскільки елемент буде зменшуватися в порівнянні з іншими, коли простору недостатньо. Це демонструє, як властивість flexShrink впливає на розміри елементів і допомагає зрозуміти її роль у створенні адаптивних та гнучких макетів.

HTML

<header>
  <h2 class="title">element.style.flexShrink</h2>
  <p class="description">Керує тим, наскільки елемент має зменшуватися при обмеженому просторі в flex-контейнері.</p>
</header>
<main>
  <div class="result">
    <!-- Перемикачі для зміни значення flexShrink для елементів -->
    <div>
      <label for="shrinkItem1">Shrink Item 1</label>
      <input type="range" id="shrinkItem1" min="0" max="5" value="1">
      
      <label for="shrinkItem2">Shrink Item 2</label>
      <input type="range" id="shrinkItem2" min="0" max="5" value="1">
      
      <label for="shrinkItem3">Shrink Item 3</label>
      <input type="range" id="shrinkItem3" min="0" max="5" value="1">
    </div>
    <!-- Flex-контейнер з елементами для демонстрації -->
    <div id="flexContainer" class="flex-container">
      <div id="item1" class="flex-item">Item 1</div>
      <div id="item2" class="flex-item">Item 2</div>
      <div id="item3" class="flex-item">Item 3</div>
    </div>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

.flex-container {
  display: flex;
  gap: 10px;
  width: 100%;
  padding: 20px;
  background-color: #e0e0e0;
  border: 1px solid #ccc;
  overflow: hidden;
}

.flex-item {
  flex-basis: 200px;
  flex-grow: 1;
  flex-shrink: 1;
  padding: 20px;
  background-color: #4CAF50;
  color: white;
  text-align: center;
  transition: flex-shrink 0.3s ease, width 0.3s ease;
}

JS

document.addEventListener('DOMContentLoaded', function () {
  const item1 = document.getElementById('item1');
  const item2 = document.getElementById('item2');
  const item3 = document.getElementById('item3');

  const shrinkItem1 = document.getElementById('shrinkItem1');
  const shrinkItem2 = document.getElementById('shrinkItem2');
  const shrinkItem3 = document.getElementById('shrinkItem3');

  shrinkItem1.addEventListener('input', function () {
    item1.style.flexShrink = this.value;
  });

  shrinkItem2.addEventListener('input', function () {
    item2.style.flexShrink = this.value;
  });

  shrinkItem3.addEventListener('input', function () {
    item3.style.flexShrink = this.value;
  });
});
//# sourceURL=pen.js
автор: Bond

У цьому прикладі ми динамічно налаштовуємо властивість flexShrink для елементів у flex-контейнері залежно від його ширини. Якщо ширина контейнера менше 500 пікселів, елементи можуть зменшуватись; якщо більше – зменшення вимкнено. Це корисно для адаптивних макетів, де потрібно змінювати поведінку елементів при різних розмірах вікна.

HTML

<div id="flexContainer">Демонстраційний елемент</div>

JS

// Отримуємо доступ до контейнера та його дочірніх елементів
var container = document.getElementById("flexContainer");
var items = container.children;

// Функція для динамічного встановлення flexShrink в залежності від ширини контейнера
function adjustFlexShrink() {
    var containerWidth = container.offsetWidth;

    for (var i = 0; i < items.length; i++) {
        if (containerWidth < 500) {
            items[i].style.flexShrink = "1";
        } else {
            items[i].style.flexShrink = "0";
        }
    }
}

// Викликаємо функцію при зміні розміру вікна
window.addEventListener("resize", adjustFlexShrink);

// Викликаємо функцію при завантаженні сторінки
adjustFlexShrink();
автор: Bond

У цьому прикладі ми змінюємо значення flexShrink для двох flex-елементів на основі взаємодії користувача (натискання кнопки). Це дозволяє користувачам динамічно змінювати поведінку елементів у flex-контейнері, що може бути корисним для створення інтерактивних інтерфейсів, де користувачі можуть впливати на розташування і розмір елементів на сторінці.

HTML

<div id="toggleShrink">Демонстраційний елемент</div>
<div id="item1">Демонстраційний елемент</div>
<div id="item2">Демонстраційний елемент</div>

JS

// Отримуємо доступ до кнопки та flex-елементів
var toggleButton = document.getElementById("toggleShrink");
var flexItem1 = document.getElementById("item1");
var flexItem2 = document.getElementById("item2");

// Початкові значення flexShrink
var shrinkEnabled = false;

// Функція для перемикання flexShrink
function toggleFlexShrink() {
    if (shrinkEnabled) {
        flexItem1.style.flexShrink = "0";
        flexItem2.style.flexShrink = "0";
    } else {
        flexItem1.style.flexShrink = "1";
        flexItem2.style.flexShrink = "2";
    }
    shrinkEnabled = !shrinkEnabled;
}

// Додаємо обробник події для кнопки
toggleButton.addEventListener("click", toggleFlexShrink);
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід