you_are_enot
@you_are_enot
Пограммист любитель

Как динамически изменять размеры блока?

Я пытаюсь реализовать изменение размеров блока при прокрутке колёсика мыши. При инспектировании элемента, я вижу, что свойство transform изменяется, но визуально блок не меняется.

https://jsfiddle.net/eo9L1452/

<div 
        class="workspase" 
        id="workspase" 
        @mousewheel.passive="handleZoom($event)"
>
            <div 
                style="width: 100px; height: 100px; background: red;" 
                :transform="computedMatrix"
            ></div>
</div>


export default {
    data () {
        return {
            matrix: { a: 1, b: 0, c: 0, d: 1, x: 0, y: 0 },
            zoom: 1,
        }
    },
    computed: {
        computedMatrix () {
            const { a, b, c, d, x, y } = this.matrix
            return `matrix(${this.zoom}, ${b}, ${c}, ${this.zoom}, ${x}, ${y})`
        },
    },
    methods: {
        handleZoom ({ deltaY }) {
            this.zoom = deltaY < 0 ? (this.zoom * 10 + 1) / 10 : (this.zoom * 10 - 1) / 10
        },
        
    },
}


.workspase {
        width: 800px;
        height: 500px;
        border: 2px solid black;
    }
  • Вопрос задан
  • 570 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега Vue.js
Нет такого атрибута - transform. Это должно быть свойство style:

:style="{ transform: computedMatrix }"
Ответ написан
Комментировать
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Попробуйте пробрасывать стиль через кастомные свойства. Примерно так
<div 
                style="width: 100px; height: 100px; background: red;" 
                : style=" '--matrix: ' + computedMatrix"
            ></div>


.workspase {
        width: 800px;
        height: 500px;
        border: 2px solid black;
transform: var(--matrix);
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы