код js, делающий неправильный поворот изображения при запуске

#javascript #mobile

#javascript #Мобильный

Вопрос:

Я использую код, который помогает мне перемещать, изменять размер и поворачивать изображения на моем веб-сайте.

У меня уже была проблема с этим на мобильном устройстве, где вращение было обратным, и мне удалось это исправить, но теперь у меня есть другая проблема, с которой я застрял.

Когда мой веб-сайт впервые загружает изображения с указанием их положения, поворота и т.д… изображения на ПК с поворотом n градусов становятся -n градусами и наоборот добавляются на мобильные устройства.

вот код :

 e[a].Layer.prototype.rotateTo = function(e, a) {
    if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i)) {
        var r = this, s = this.rotation;
        0 != r.index amp;amp; (e *= 1, t([r.cont[0], r.handler[0]]).css({
            "-moz-transform": "rotate("   e   "deg)",
            "-o-transform": "rotate("   e   "deg)",
            "-webkit-transform": "rotate("   e   "deg)",
            transform: "rotate("   e   "deg)"
        }), e = e < 0 ? Math.abs(e) : 360 - e, r.changeResizeCorner(2 * Math.round(e / 90)), r.rotation = e, a || r.$this.change(s !== r.rotation ? ["rotation"] : i))
    } else { 
        var r = this, s = this.rotation;
        0 != r.index amp;amp; (e *= -1, t([r.cont[0], r.handler[0]]).css({
            "-moz-transform": "rotate("   e   "deg)",
            "-o-transform": "rotate("   e   "deg)",
            "-webkit-transform": "rotate("   e   "deg)",
            transform: "rotate("   e   "deg)"
        }), e = e < 0 ? Math.abs(e) : 360 - e, r.changeResizeCorner(2 * Math.round(e / 90)), r.rotation = e, a || r.$this.change(s !== r.rotation ? ["rotation"] : i))
    }
}
  

Ответ №1:

Проверьте строку e * =.

 e[a].Layer.prototype.rotateTo = function(e, a) {
    if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i)) {
        var r = this, s = this.rotation;
        0 != r.index amp;amp; (e *= 1, t([r.cont[0], r.handler[0]]).css({
            "-moz-transform": "rotate("   e   "deg)",
            "-o-transform": "rotate("   e   "deg)",
            "-webkit-transform": "rotate("   e   "deg)",
            transform: "rotate("   e   "deg)"
        }), e = e < 0 ? Math.abs(e) : 360 - e, r.changeResizeCorner(2 * Math.round(e / 90)), r.rotation = e, a || r.$this.change(s !== r.rotation ? ["rotation"] : i))
    } else { 
        var r = this, s = this.rotation;
        0 != r.index amp;amp; (e *= 1, t([r.cont[0], r.handler[0]]).css({
            "-moz-transform": "rotate("   e   "deg)",
            "-o-transform": "rotate("   e   "deg)",
            "-webkit-transform": "rotate("   e   "deg)",
            transform: "rotate("   e   "deg)"
        }), e = e < 0 ? Math.abs(e) : 360 - e, r.changeResizeCorner(2 * Math.round(e / 90)), r.rotation = e, a || r.$this.change(s !== r.rotation ? ["rotation"] : i))
    }
}
  

Комментарии:

1. Я пытался, но если я сделаю это, вращение будет работать нормально при первой загрузке, но вращаться в обратном смысле, когда я пытаюсь повернуть его сам (на ПК)

2. Кажется, что «e = e < 0? Math.abs (e): 360 — e» часть выдает результат «360 — e» и может повернуть его против часовой стрелки. Вместо этого вы могли бы просто использовать «Math.abs (e)»