objectPosition в JavaScript — позиція вмісту в блоці


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

element.style.objectPosition – це властивість CSS, яку можна використовувати через JavaScript для визначення початкової позиції елемента, наприклад, зображення або відео, в межах його контейнера.

Властивість objectPosition дозволяє задати координати початку розміщення контенту всередині контейнера. Вона приймає значення у вигляді координат, які можна задавати у відсотках, пікселях, або ключових словах, таких як top, bottom, left, right, center.

Припустимо, ви маєте зображення всередині контейнера і хочете розташувати його у верхньому правому куті. Для цього ви можете встановити objectPosition наступним чином:

let image = document.getElementById('myImage');
image.style.objectPosition = 'top right';

Це розмістить зображення так, що його верхній правий кут буде в верхньому правому куті контейнера.

Якщо вам потрібно розмістити зображення на певній відстані від країв контейнера, використовуйте пікселі або відсотки. Наприклад, щоб змістити зображення на 20 пікселів вправо і вниз:

let image = document.getElementById('myImage');
image.style.objectPosition = '20px 20px';

Або щоб змістити на 50% вправо і 50% вниз:

let image = document.getElementById('myImage');
image.style.objectPosition = '50% 50%';

Цей метод особливо корисний при роботі з властивістю objectFit. Наприклад, якщо у вас є велике зображення, яке має зберігати свої пропорції і розміщуватись певним чином всередині контейнера, ви можете комбінувати objectFit і objectPosition для досягнення потрібного ефекту:

let image = document.getElementById('myImage');
image.style.objectFit = 'cover';
image.style.objectPosition = 'center center';

Це дозволить зображенню заповнити контейнер, зберігаючи свої пропорції, і бути центрованим.

Властивість objectPosition також може бути корисною при роботі з анімаціями. Ви можете змінювати положення об'єкта у часі, створюючи ефект руху:

let image = document.getElementById('myImage');
image.style.transition = 'object-position 2s';
image.style.objectPosition = 'bottom right';

Це змусить зображення плавно переміститися в нижній правий кут протягом 2 секунд.

Загалом, element.style.objectPosition забезпечує високий рівень контролю над розташуванням контенту всередині контейнера. Це дозволяє створювати більш гнучкі і адаптивні інтерфейси, особливо в поєднанні з іншими властивостями, такими як objectFit. Завдяки цій властивості, ви можете точніше налаштовувати відображення зображень та відео, що робить ваші веб-сторінки більш привабливими та функціональними.

автор: Bond

Порада

Для створення ефектів зворотного руху або панорамування використовуйте JavaScript для анімації зміни objectPosition. Це може бути корисно для інтерактивних картинок або відео, де користувачі можуть керувати видимою областю контенту:

let image = document.getElementById('myImage');
image.style.transition = 'object-position 1s';
image.style.objectPosition = 'top left';

Такий підхід дозволяє створювати плавні анімації, які покращують користувацький досвід.

автор: Bond
Порада

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

let banner = document.getElementById('banner');
banner.style.objectFit = 'cover';
banner.style.objectPosition = 'center top';

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

автор: Bond

Синтаксис

element.style.objectPosition

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
32 36 10 19 79 —
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4.3 32 36 10

Приклади

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

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

HTML

<header>
  <h2 class="title">element.style.objectPosition</h2>
  <p class="description">Задає положення елемента всередині контейнера.</p>
</header>
<main>
  <div class="result">
    <!-- Кнопки для зміни положення текстового блоку -->
    <div>
      <button id="topLeft">Top Left</button>
      <button id="center">Center</button>
      <button id="bottomRight">Bottom Right</button>
    </div>
    <!-- Контейнер з текстовим блоком для демонстрації -->
    <div class="text-container">
      <div id="demoText" class="text-block">Text Block</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);
}

.text-container {
  width: 400px;
  height: 200px;
  border: 1px solid #ddd;
  position: relative;
  overflow: hidden;
}

.text-block {
  width: 100px;
  height: 50px;
  background-color: #4CAF50;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  object-fit: cover;
  object-position: center;
  position: absolute;
}

JS

document.addEventListener('DOMContentLoaded', function () {
  const demoText = document.getElementById('demoText');
  const topLeftButton = document.getElementById('topLeft');
  const centerButton = document.getElementById('center');
  const bottomRightButton = document.getElementById('bottomRight');

  topLeftButton.addEventListener('click', function () {
    demoText.style.objectPosition = 'top left';
    demoText.style.top = '0';
    demoText.style.left = '0';
  });

  centerButton.addEventListener('click', function () {
    demoText.style.objectPosition = 'center';
    demoText.style.top = '50%';
    demoText.style.left = '50%';
    demoText.style.transform = 'translate(-50%, -50%)';
  });

  bottomRightButton.addEventListener('click', function () {
    demoText.style.objectPosition = 'bottom right';
    demoText.style.bottom = '0';
    demoText.style.right = '0';
    demoText.style.top = 'auto';
    demoText.style.left = 'auto';
    demoText.style.transform = 'none';
  });
});
//# sourceURL=pen.js
автор: Bond

Цей приклад демонструє, як використати objectPosition для центрування зображення у контейнері, коли objectFit встановлено на cover. Це корисно для випадків, коли потрібно зберегти фокус на центральній частині зображення незалежно від розмірів контейнера.

HTML

<div class="image-center">
    <img src="/img/logo.svg" width="200" height="120" alt="Лого">
</div>

JS

const image = document.querySelector('.image-center img');

image.style.objectFit = 'cover';
image.style.objectPosition = 'center';
автор: Bond

HTML

<div class="video-container">
    <video width="300" height="150" controls poster="/img/logo.svg">
        Ваш браузер не відтворює відео.
    </video>
</div>

JS

const video = document.querySelector('.video-container video');

video.style.objectFit = 'contain';
video.style.objectPosition = 'top left';
автор: 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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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