zax2002
@zax2002

Как определить координаты клика на оригинале изображения в img с object-fit: contain?

На странице есть картинка с неопределённым реальным размером (1280х800 например). Мне нужно получить координаты клика на оригинале. Вроде всё просто: this.naturalWidth / this.offsetWidth * event.offsetX.
Но это работает только, если размер элемента img равен размеру картинки после масштабирования. Но в таком случае не работает object-fit. Чтобы он работал надо растянуть img на 100%, но тогда уже offsetWidth, offsetHeight не даю нужного эффекта. Как мне решить эту проблему?
  • Вопрос задан
  • 430 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ridz
вариант ...
$(function() {
    $("img").click(function(event) {
        var nh = this.naturalHeight,
            nw = this.naturalWidth,
            p = nw / nh,
            h = Math.min(this.scrollHeight, this.scrollWidth / p),
            w = h * p,
            t = (this.scrollHeight - h) / 2,
            d = (this.scrollWidth - w) / 2,
            x = event.offsetX,
            y = event.offsetY;
        if (x >= d && x <= d + w && y >= t && y <= t + h) {
            x -= d;
            x *= nw / w;
            x = Math.round(x);
            y -= t;
            y *= nh / h;
            y = Math.round(y);
            alert([x, y])
        }
    })
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы