#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)»