Изменение свойства стиля кнопками

Есть transform: scale

table#pixel_canvas {
    transform: scale(1);
}

Как можно реализовать изменение scale(1) по нажатию на кнопки (+ & -) с шагом в 0.1 ?


Ответы (2 шт):

Автор решения: Mark Minerov

Я реализовал это данным образом:

let size = 1
const step = 0.1
const block = document.querySelector('div')

document.querySelector('#minus').addEventListener('click', () => {
  size -= step;
  block.style.transform = `scale(${size})`
})

document.querySelector('#plus').addEventListener('click', () => {
  size += step;
  block.style.transform = `scale(${size})`
})
div {
  width: 200px;
  height: 200px;
  background-color: red;
  transform-origin: left top;
}
<button id="plus">+</button>
<button id="minus">-</button>
<br><br><br>
<div></div>

codepen

→ Ссылка
Автор решения: UModeL

Оставлю этот "хитрый костыль" здесь. Не ответа ради, а варианта для:

const oTable = document.querySelector("#pixel_canvas");
document.addEventListener("keypress", (event) => {
  let keyCode = event.keyCode;
  let input = oTable.nextElementSibling;
  if (Math.abs(keyCode - 44) === 1) {
    keyCode - 44 < 0 ? input.stepUp() : input.stepDown();
    input.dispatchEvent(new Event("input"));
  }
});
table#pixel_canvas { transform-origin: 0 0; border: 1px dotted blue; }
table#pixel_canvas th { border: 1px dotted red; }
table#pixel_canvas + input { display: none; }
<table id="pixel_canvas">
  <tr><th>Жмём</th><th>на</th><th>клаве</th></tr>
  <tr><th>+</th><th>и</th><th>-</th></tr>
</table>
<input type="number" value="1" min="1" step="0.1" oninput="this.previousElementSibling.style.transform = `scale(${this.value})`;">

Не забываем дать фокус предпросмотру.

→ Ссылка