Вот код скрабера
enableDragThumb(): Observable<any> {
let parentWidth;
let thumbBarClientWidth;
const mouseUp = Observable.fromEvent(document, 'mouseup')
.merge(Observable.fromEvent(document, 'touchend'));
const mouseMove = Observable.fromEvent(document, 'mousemove')
.merge(Observable.fromEvent(document, 'touchmove'));
const thumbBarDown = Observable.fromEvent(this.thumbBar, 'mousedown')
.merge(Observable.fromEvent(this.thumbBar, 'touchstart'))
.map((evt: any) => {
evt = evt.changedTouches ? evt.changedTouches[0] : evt;
thumbBarClientWidth = this.thumbBar.clientWidth;
parentWidth = this.thumbBar.getBoundingClientRect().width - 10;
const left = ((evt.clientX - this.thumbBar.getBoundingClientRect().left) / parentWidth) * thumbBarClientWidth;
this.thumb.style.left = left - 10 + 'px';
return evt;
});
const mouseDown = Observable.fromEvent(this.thumb, 'mousedown')
.merge(Observable.fromEvent(this.thumb, 'touchstart'))
.merge(thumbBarDown)
.map((ev: any) => {
ev = ev.changedTouches ? ev.changedTouches[0] : ev;
parentWidth = this.thumbBar.getBoundingClientRect().width - 10;
return ev;
});
return mouseDown.mergeMap((md: MouseEvent) => {
this.isDragging = true;
const startX = md.clientX;
this.startLeft = (this.thumb.offsetLeft / thumbBarClientWidth) * parentWidth;
this.progress = (this.startLeft / parentWidth) * 100;
const result = mouseMove
.map((mm: any) => {
if (mm.preventDefault) {
mm.preventDefault();
}
mm = mm.changedTouches ? mm.changedTouches[0] : mm;
const left = this.startLeft + mm.clientX - startX;
if (left < 0) {
this.progress = 0;
this.thumb.style.left = 0;
} else if (left > parentWidth - 20) {
const percent = ((parentWidth - 20) / parentWidth) * 100;
this.progress = percent;
this.thumb.style.left = percent + '%';
} else {
const percent = (left / parentWidth) * 100;
this.progress = percent;
this.thumb.style.left = percent + '%';
}
})
.takeUntil(mouseUp);
result.subscribe(null, null, () => {
this.isDragging = false;
this.updateProgress();
});
return result;
});
}
Когда direction ltr скрабер работает нормально при изменении дирекшна на rtl скрабер ведет себя не нормально Проект на ангуляре, как исправить?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
как можно отловить событие клик по видео, дабл клик по видеоНужно сделать играть/пауза по клику и полноэкранный режим - дабл клик
Приостоновил создание сайта в теплом и уютном denvereНачал изучать вопрос хостинга
Использую апи гугл мэпс, чтобы программно получить список адресов по введенным буквам:
Приветствую всех, у меня такая задача есть вот такая таблица https://igrotekaclub/game/index