-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
159 lines (140 loc) · 3.87 KB
/
app.js
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
// select items
const wrapper = document.querySelector(".sliderWrapper");
const menuItems = document.querySelectorAll(".menuItem");
// Creating array of product title and colour so when we click on the function the product will be changed
// intialise the array of products
const products = [
{
id: 1,
title: "Air Force",
price: 119,
// color array
colors:[
{
code:"black",
img: "./img/air.png",
},
{
code:"darkblue",
img: "./img/air2.png",
},
],
},
{
id: 2,
title: "Air Jordan",
price: 149,
colors:[
{
code:"lightgray",
img: "./img/jordan.png",
},
{
code:"green",
img: "./img/jordan2.png",
},
],
},
{
id: 3,
title: "Blazer",
price: 109,
colors:[
{
code:"lightgray",
img: "./img/blazer.png",
},
{
code:"green",
img: "./img/blazer2.png",
},
],
},
{
id: 4,
title: "Crater",
price: 129,
colors:[
{
code:"black",
img: "./img/crater.png",
},
{
code:"lightgray",
img: "./img/crater2.png",
},
],
},
{
id: 5,
title: "Hippie",
price: 99,
colors:[
{
code:"gray",
img: "./img/hippie.png",
},
{
code:"black",
img: "./img/hippie2.png",
},
],
},
];
// click to change and choose products
// intialise the array of products
let choosenProduct = products[0];
// select the product elements to click to change
const currentProductImg = document.querySelector(".productImg");
const currentProductTitle = document.querySelector(".productTitle");
const currentProductPrice = document.querySelector(".productPrice");
const currentProductColors = document.querySelectorAll(".color");
const currentProductSizes = document.querySelectorAll(".size");
// To use index in lateral templates
// we should initialise it first in parameter of a function
// then should use in literal templates on backticks
// function to animate and change the product
menuItems.forEach((item ,index) => {
item.addEventListener("click", () => {
// alert(`clix ${index}`);
// change the current slide
wrapper.style.transform = `translateX(${index * -100}vw)`;
// here index does not change as many times you multiple on click
// change the choosen product
choosenProduct = products[index];
// change texts of cuurent product
currentProductTitle.textContent = choosenProduct.title;
currentProductPrice.textContent = "$" + choosenProduct.price;
// initialized color array in products
currentProductImg.src = choosenProduct.colors[0].img;
// change the color of current product
// we should use queryseletorall so loop can work properly to change all the colors
currentProductColors.forEach((color,index) => {
color.style.backgroundColor = choosenProduct.colors[index].code;
});
});
});
currentProductColors.forEach((color,index) => {
color.addEventListener("click", () => {
currentProductImg.src = choosenProduct.colors[index].img;
});
})
currentProductSizes.forEach((size,index) => {
size.addEventListener("click", () => {
currentProductSizes.forEach((size) => {
size.style.backgroundColor = "#fff";
size.style.color = "#000";
})
size.style.backgroundColor = "#000";
size.style.color = "#fff";
})
})
const productbtn = document.querySelector(".productButton");
const payment = document.querySelector(".payment");
const close = document.querySelector(".close");
productbtn.addEventListener("click", () => {
payment.style.display = "flex";
})
close.addEventListener("click", () => {
payment.style.display = "none";
})