С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript: Angular 2, AngularJS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 11.12.2021
Сообщений: 18
1

Как исправить направление анимаций блоков

18.09.2023, 16:27. Показов 633. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне нужна ваша помощь


Я пытаюсь создать пошаговую логику. У меня есть 6 блоков div, кнопки и код CSS. Пытаюсь сделать переход между ними так: если цифра 1 - виден первый блок, нажать далее - второй блок. И главная особенность, что я пытаюсь сделать, если мы находимся на одном блоке (например 1) и идем дальше, анимация должна идти вправо - она ​​должна скрываться слева и появляться справа и так далее (2-3, 3-4...), а если вернуться назад, то наоборот - справа налево (5-4, 4-3...).

Этот код у меня работает неправильно. Анимации работают как надо, а иногда и не работают вообще. Например, (1-2) работает нормально — слева направо, а (2-3) — наоборот. И таких случаев немало.

Подскажите пожалуйста, как это правильно настроить и как сократить мой код? Большое спасибо


typescript - angular component


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
export class StepExecutorComponent implements OnInit {
 
   public number: number = 1;
   private previousNumber: number = 1;
   public direction: string;
 
   ngOnInit(): void {
      this.previousNumber = this.number;
   }
 
   public go(direction: string): void {
     if (direction === 'back') {
       if (this.number > 1) {
          this.number = this.number - 1;
       }
     } else if (direction === 'cancel') {
       this.number = 1;
     } else if (direction === 'forward') {
       if (this.number < 6) {
          this.number = this.number + 1;
     }
   }
 
   if (this.number > this.previousNumber) {
     this.direction = 'right';
   } else if (this.number < this.previousNumber) {
     this.direction = 'left';
   } else {
     this.direction = 'none';
   }
 
   this.previousNumber = this.number;
 }


Scss


CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.wrapper {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            opacity: 0;
            bottom: 0;
            transition: left 700ms, right 700ms, opacity 700ms;
 
            &.move-left {
                left: -100%;
                right: 100%;
            }
 
            &.move-right {
                left: 100%;
                right: -100%;
            }
 
            &.active {
                opacity: 1;
                left: 0;
                right: 0;
            }
}


html



HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<main class="mainTabStepContent">
        <div class="wrapper" [ngClass]="{'active': number === 1, 'move-right': direction === 'right', 'move-left': direction === 'left' }">
<div class="tab">
                One
            </div>
            </div>
        <div class="wrapper" [ngClass]="{ 'active': number === 2, 'move-right': direction === 'right', 'move-left': direction === 'left' }">
            <div class="tab">
                Two
            </div>
        </div>
        <div class="wrapper" [ngClass]="{ 'active': number === 3, 'move-right': direction === 'right', 'move-left': direction === 'left' }">
            <div class="tab">
                Three
            </div>
        </div>
        <div class="wrapper" [ngClass]="{ 'active': number === 4, 'move-right': direction === 'right', 'move-left': direction === 'left' }">
            <div class="tab">
                Four
            </div>
        </div>
        <div class="wrapper" [ngClass]="{ 'active': number === 5, 'move-right': direction === 'right', 'move-left': direction === 'left' }">
            <div class="tab">
                Five
            </div>
        </div>
        <div class="wrapper" [ngClass]="{ 'active': number === 6, 'move-right': direction === 'right', 'move-left': direction === 'left' }">
            <div class="tab">
                Six
            </div>
        </div>
    </main>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2023, 16:27
Ответы с готовыми решениями:

как исправить? чтобы при клике меняла class (и направление).?
есть такой календарь, возможно ли исправить чтобы при удалении строки №151 осталась только одна ...

Как исправить границы блоков
Есть основной класс wrapper. Допустим у меня wrapper 900px. slider тоже 900px Когда ставлю...

Не пойму, как исправить положение блоков в сайте
Создал сайт в html, с подключением css. Как исправить положение блоков девушки и компьютеров. Они...

Можно ли исправить направление глаз
Смотрю на фотографии в другую сторону, фотография очень важная! Помогите ее подправить?? Или...

0
18.09.2023, 16:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2023, 16:27
Помогаю со студенческими работами здесь

Как преобразовать в физ. организацию файла в виде связанного списка блоков в вид перечня номеров блоков
как преобразовать в физ. организацию файла в виде связанного списка блоков в вид перечня номеров...

Как изменить скорость анимаций?
у меня есть вот такой код .test2{ transition: 10s; } window.onscroll = function() { $(...

За направление протекание электрического тока принято направление перемещения?
За направление протекание электрического тока принято направление перемещения? 1) электронов 2)...

Как закончить повторение анимаций после их завершения
Делаю слайдер на JQuery. Столкнулся с проблемой, хочу останавливать повторение анимаций по клику. ...

Как запустить 1 из 2 анимаций при нажатии на кнопку?
Имеется 2 анимации на UI элементе. Первая включает сразу при запуске сцены. Необходимо реализовать...

Определить перечень операционных элементов и блоков блоков устройств ЭВМ
Помогите пожалуйста 1. Согласно варианту (табл.1) определить перечень операционных Элементы и...

Создать круг разделенный на 6 блоков, в центре логотип, при наведении на один из блоков он увеличивается
Доброго времени суток. Не знаю, как даже искать похожее. В общем нужно создать круг разделен на 6...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru