├── .gitattributes
├── JS
└── main.js
├── README.md
├── best.html
├── fonts
├── Gotham-Black.otf
└── PTSans-Bold.ttf
├── img
├── Fap-tap.png
├── campfire.png
├── clock-circular-outline.png
├── eye.png
└── no-minors.png
├── index.html
└── style
└── stylesheet.css
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/JS/main.js:
--------------------------------------------------------------------------------
1 |
2 | var tipoRicerca = 2;
3 | var pagina = 1;
4 | var api_url_getall = "https://www.eporner.com/api/v2/video/search/?order=latest&lq=1&format=json&gay=0&per_pag";
5 | const btn = document.getElementById('cerca');
6 | const btnNext = document.getElementById("next");
7 | const btnPrev = document.getElementById('previous');
8 | const selectCategoria = document.getElementById('categoria');
9 | const search = document.getElementById('ricerca');
10 | const selectDurata = document.getElementById('durata');
11 | const selectSezione = document.getElementById('sezione');
12 | let intestazione = document.getElementById("intestazione");
13 | let indicePagina = document.getElementById("pagina");
14 | var hoverInterval;
15 | var loading = false;
16 |
17 | selectCategoria.addEventListener("change", resetPagina);
18 | selectDurata.addEventListener("change", resetPagina);
19 | selectSezione.addEventListener("change", resetPagina);
20 |
21 | if (btn) {
22 | btn.addEventListener("click", Ricerca);
23 | }
24 |
25 | if (btnPrev) {
26 | btnPrev.addEventListener("click", prev);
27 | }
28 |
29 | if (btnNext) {
30 | btnNext.addEventListener("click", next);
31 | }
32 | // funzione che mi fa cambiare il filtro di ricerca
33 | function SwitchInputSelect(num) {
34 | switch (num) {
35 | case 1:
36 | //Filtro Categorie
37 | tipoRicerca = 1;
38 | pagina = 1
39 | selectCategoria.className = "form-select";
40 | selectSezione.className = "form-select visually-hidden";
41 | search.className = "form-control me-2 visually-hidden";
42 | selectDurata.className = "form-select visually-hidden";
43 | break;
44 | case 2:
45 | //Filtro Parola Chiave (Default)
46 | tipoRicerca = 2;
47 | pagina = 1
48 | selectCategoria.className = "form-select visually-hidden";
49 | search.className = "form-control me-2";
50 | selectSezione.className = "form-select visually-hidden";
51 | search.placeholder = "Cerca";
52 | selectDurata.className = "form-select visually-hidden";
53 | break;
54 |
55 | case 3:
56 | //Filtro Durata
57 | tipoRicerca = 3;
58 | pagina = 1
59 | selectCategoria.className = "form-select visually-hidden";
60 | selectSezione.className = "form-select visually-hidden";
61 | search.className = "form-control me-2 visually-hidden";
62 | selectDurata.className = "form-select";
63 | break;
64 | case 4:
65 | //Filtro Sezione
66 | pagina = 1
67 | tipoRicerca = 4;
68 |
69 | selectSezione.className = "form-select";
70 | search.className = "form-control me-2 visually-hidden";
71 | selectCategoria.className = "form-select visually-hidden";
72 | selectDurata.className = "form-select visually-hidden";
73 | break;
74 | default:
75 | tipoRicerca = 2;
76 | break;
77 |
78 | }
79 | }
80 | // funzione che mi fa la ricerca in base al filtro selezionato
81 | function Ricerca() {
82 | loading = false;
83 | load();
84 | cambiaPagina();
85 | if (pagina == 1) {
86 | intestazione.innerHTML = "Ultime uscite";
87 | btnPrev.className = "btn btn-outline-warning disabled";
88 | } else {
89 | btnPrev.className = "btn btn-outline-warning";
90 | btnNext.className = "btn btn-outline-warning";
91 | }
92 | switch (tipoRicerca) {
93 | case 1:
94 | tipoRicerca = 1;
95 | console.log("Ricerca per categoria");
96 | let categoria = document.getElementById("categoria").value;
97 | intestazione.innerHTML = "";
98 | console.log(categoria);
99 | fetch("https://www.eporner.com/api/v2/video/search/?page=" + pagina + "&lq=1&format=json&per_page=30&query=" + categoria, {
100 | "method": "GET",
101 | "headers": {
102 | "Accept": "application/json"
103 | }
104 | })
105 | .then(response => response.json())
106 | .then(result => { stampaCards(result) })
107 | .catch(error => console.log('Error:', error));
108 | intestazione.innerHTML = `Pagina ${pagina}`;
109 | break;
110 | case 2:
111 | tipoRicerca = 2;
112 | intestazione.innerHTML = "";
113 | console.log("Ricerca per Parola Chiave");
114 | let key_word = document.getElementById("ricerca").value;
115 | console.log(key_word);
116 | fetch("https://www.eporner.com/api/v2/video/search/?page=" + pagina + "&lq=1&format=json&order=latest&per_page=30&query=" + key_word, {
117 | "method": "GET",
118 | "headers": {
119 | "Accept": "application/json"
120 | }
121 | })
122 | .then(response => response.json())
123 | .then(result => { stampaCards(result) })
124 | .catch(error => console.log('Error:', error));
125 | intestazione.innerHTML = "Ricerca per " + key_word + "";
126 | break;
127 | case 3:
128 | console.log("Ricerca per Durata");
129 | intestazione.innerHTML = "";
130 | let time = document.getElementById("durata").value;
131 | if (time == "longest") {
132 | intestazione.innerHTML = "Ricerca per Video lunghi";
133 | } else {
134 | intestazione.innerHTML = "Ricerca per Video Corti";
135 | }
136 |
137 | console.log(time);
138 | fetch("https://www.eporner.com/api/v2/video/search/?page=" + pagina + "&order=" + time + "&lq=0&format=json&per_page=30", {
139 | "method": "GET",
140 | "headers": {
141 | "Accept": "application/json"
142 | }
143 | })
144 | .then(response => response.json())
145 | .then(result => { stampaCards(result) })
146 | .catch(error => console.log('Error:', error));
147 | break;
148 |
149 | case 4:
150 | console.log("Ricerca per Sezione");
151 | intestazione.innerHTML = "";
152 | let sezione = document.getElementById("sezione").value;
153 | console.log(sezione);
154 | if (sezione == "etero") {
155 | fetch("https://www.eporner.com/api/v2/video/search/?order=latest&lq=0&format=json&gay=0&per_page=30&page=" + pagina, {
156 | "method": "GET",
157 | "headers": {
158 | "Accept": "application/json",
159 | }
160 | })
161 | .then(response => response.json())
162 | .then(result => { stampaCards(result) })
163 | .catch(error => console.log('Error:', error));
164 |
165 | } else if (sezione == "gay") {
166 |
167 | fetch("https://www.eporner.com/api/v2/video/search/?page=" + pagina + "&per_page=30&format=json&lq=1&gay=2", {
168 | "method": "GET",
169 | "headers": {
170 | "Accept": "application/json",
171 | }
172 | })
173 | .then(response => response.json())
174 | .then(result => { stampaCards(result) })
175 | .catch(error => console.log('Error:', error));
176 | } else {
177 | fetch("https://www.eporner.com/api/v2/video/search/?page=" + pagina + "&per_page=30&format=json&lq=1&query=" + sezione, {
178 | "method": "GET",
179 | "headers": {
180 | "Accept": "application/json",
181 | }
182 | })
183 | .then(response => response.json())
184 | .then(result => { stampaCards(result) })
185 | .catch(error => console.log('Error:', error));
186 | }
187 | break;
188 | default:
189 | document.getElementById("ricerca").value = "";
190 | break;
191 | }
192 | }
193 | // funzione che mi stampa le cards
194 | function stampaCards(result) {
195 |
196 | console.log(result);
197 | let arrayVideo = result.videos;
198 | let cardsVideo = document.getElementById('video');
199 |
200 | cardsVideo.innerHTML = "";
201 | btnNext.className = "btn btn-outline-warning";
202 | if (arrayVideo.length == 0) {
203 | intestazione.innerHTML = "Nessun risultato trovato";
204 | btnNext.className = "btn btn-outline-warning disabled";
205 | return;
206 | }
207 | // stampa delle cards
208 | arrayVideo.forEach((video, index) => {
209 | const wrapper = document.createElement(`div`);
210 | wrapper.className = `col`;
211 |
212 | const card = document.createElement(`div`);
213 | card.className = `card`;
214 | card.addEventListener(`click`, (ev) => window.open(video.embed));
215 |
216 | const p = document.createElement(`p`);
217 | p.className = `card-text`;
218 |
219 | const cardImg = document.createElement(`img`);
220 | cardImg.src = video.default_thumb.src;
221 | cardImg.className = `card-img-top`;
222 |
223 | card.onmouseover = function () {
224 | clearInterval(hoverInterval);
225 | CambiaImmagineOnHover(this, arrayVideo[index].thumbs[0].src)
226 | };
227 | card.onmouseleave = function () {
228 | clearInterval(hoverInterval);
229 | setImmagineDefault(this, video.default_thumb.src, stampaTitolo(arrayVideo[index].title, 65))
230 | };
231 | card.ontouchstart = function () {
232 | clearInterval(hoverInterval)
233 | CambiaImmagineOnHover(this, arrayVideo[index].thumbs[0].src)
234 | };
235 | card.ontouchend = function () {
236 | clearInterval(hoverInterval);
237 | setImmagineDefault(this, video.default_thumb.src, stampaTitolo(arrayVideo[index].title, 65))
238 | };
239 |
240 | const cardDescription = document.createElement(`div`);
241 | cardDescription.className = `card-description`;
242 |
243 | const h2 = document.createElement(`h2`);
244 | h2.className = `card-title`;
245 | h2.textContent = stampaTitolo(arrayVideo[index].title, 60);
246 |
247 | const spanViews = document.createElement(`span`);
248 | spanViews.className = `card-text`;
249 | spanViews.id = `n-views`;
250 |
251 | const imgViews = document.createElement(`img`);
252 | imgViews.src = `/img/eye.png`;
253 | imgViews.id = `views`;
254 |
255 | const spanTime = document.createElement(`span`);
256 | spanTime.className = `card-text`;
257 | spanTime.id = `time`;
258 |
259 | const imgTime = document.createElement(`img`);
260 | imgTime.src = `/img/clock-circular-outline.png`;
261 | imgTime.id = `clock`;
262 |
263 | const spanViewsText = document.createElement(`span`);
264 | spanViewsText.textContent = video.views;
265 |
266 | const spanTimeText = document.createElement(`span`);
267 | spanTimeText.textContent = video.length_min;
268 |
269 | card.append(cardImg);
270 | card.append(cardDescription);
271 | cardDescription.append(h2);
272 | wrapper.append(card);
273 | cardsVideo.append(wrapper);
274 |
275 | spanViews.append(imgViews);
276 | spanViews.append(spanViewsText);
277 |
278 | spanTime.append(imgTime);
279 | spanTime.append(spanTimeText);
280 |
281 | p.append(spanViews);
282 | p.append(spanTime);
283 |
284 | cardDescription.append(p);
285 | });
286 | loading = true;
287 | setTimeout(function () {
288 | load();
289 | }, 800);
290 | }
291 | // funzione che mi crea la homepage quando carica la pagina index
292 | function CreaHome() {
293 | window.scrollTo(top);
294 | loading = false;
295 | load();
296 | if (pagina == 1) {
297 | intestazione.innerHTML = "Ultime uscite";
298 | btnPrev.className = "btn btn-outline-warning disabled";
299 | } else {
300 | btnPrev.className = "btn btn-outline-warning";
301 | btnNext.className = "btn btn-outline-warning";
302 | }
303 | cambiaPagina();
304 | console.log("Crea Home");
305 | tipoRicerca = 5;
306 | fetch("https://www.eporner.com/api/v2/video/search/?format=json&lq=0&page=" + pagina + "&per_page=30", {
307 | "method": "GET",
308 | "headers": {
309 | "Accept": "application/json"
310 | }
311 | })
312 | .then(response => response.json())
313 | .then(result => { stampaCards(result) })
314 | .catch(error => console.log('Error:', error));
315 | cambiaPagina();
316 | }
317 | // funzione che mi crea la pagina trending quando carica la pagina trending
318 | function CreaTrending() {
319 | loading = false;
320 | load();
321 | window.scrollTo(top);
322 | cambiaPagina();
323 | if (pagina == 1) {
324 | intestazione.innerHTML = `
Trending
`;
326 | btnPrev.className = "btn btn-outline-warning disabled";
327 | } else {
328 | btnPrev.className = "btn btn-outline-warning";
329 | btnNext.className = "btn btn-outline-warning";
330 | }
331 | console.log("Crea Trending");
332 | tipoRicerca = 6;
333 | fetch("https://www.eporner.com/api/v2/video/search/?page=" + pagina + "&order=top-weekly&lq=0&format=json&per_page=30", {
334 | "method": "GET",
335 | "headers": {
336 | "Accept": "application/json"
337 | }
338 | })
339 | .then(response => response.json())
340 | .then(result => { stampaCards(result) })
341 | .catch(error => console.log('Error:', error));
342 | }
343 | //funzione che mi stampa il titolo del video limitando i caratteri
344 | function stampaTitolo(testo, numeroParole) {
345 | let parole = testo.split('');
346 | let paroleDaStampare = parole.slice(0, numeroParole).join('');
347 | return paroleDaStampare;
348 | }
349 | // funzione che mi fa andare alla pagina successiva
350 | function next() {
351 | window.scrollTo(top);
352 | intestazione.innerHTML = "";
353 | console.log(tipoRicerca);
354 | if (pagina > 0 && pagina < 100) {
355 | pagina++;
356 | } else {
357 | pagina = 1;
358 | }
359 | switch (tipoRicerca) {
360 | case 5:
361 | CreaHome();
362 | break;
363 | case 6:
364 | CreaTrending();
365 | default:
366 | Ricerca();
367 | break;
368 | }
369 | }
370 | // funzione che mi fa andare alla pagina precedente
371 | function prev() {
372 | window.scrollTo(top);
373 | intestazione.innerHTML = "";
374 | if (pagina > 1 && pagina < 100) {
375 | pagina--;
376 | } else {
377 | pagina = 1;
378 |
379 | }
380 | switch (tipoRicerca) {
381 | case 5:
382 | CreaHome();
383 | break;
384 | case 6:
385 | CreaTrending();
386 | break;
387 | default:
388 | Ricerca();
389 | break;
390 | }
391 | }
392 | //Funzione per far funzionare il tasto invio nella select della categoria
393 | categoria.addEventListener("keypress", function (event) {
394 | if (event.key === "Enter") {
395 | event.preventDefault();
396 | btn.click();
397 | }
398 | });
399 |
400 | search.addEventListener("keypress", function (event) {
401 | if (event.key === "Enter") {
402 | event.preventDefault();
403 | btn.click();
404 | }
405 | });
406 |
407 | selectDurata.addEventListener("keypress", function (event) {
408 | if (event.key === "Enter") {
409 | event.preventDefault();
410 | btn.click();
411 | }
412 | });
413 | //Funzione per far funzionare il tasto invio nella select della sezione
414 | selectSezione.addEventListener("keypress", function (event) {
415 | if (event.key === "Enter") {
416 | event.preventDefault();
417 | btn.click();
418 | }
419 | });
420 | //Funzione per cambiare l'immagine della card quando il mouse entra nella card
421 | function CambiaImmagineOnHover(cardElement, thumbBase) {
422 | let i = 2;
423 | let prec = 1;
424 | let url;
425 | inizio = thumbBase;
426 | cardElement.querySelector('img').src = thumbBase;
427 | cardElement.querySelector('h2').textContent = "";
428 | cardElement.querySelector('p').classList.add("visually-hidden");
429 | hoverInterval = setInterval(() => {
430 | cardElement.querySelector('img').src = thumbBase;
431 | url = thumbBase.replace(prec + "_", i + "_");
432 | thumbBase = url;
433 | if (i == 15 || prec == 14) {
434 | i = 2;
435 | prec = 1;
436 | thumbBase = inizio;
437 | cardElement.querySelector('img').src = thumbBase;
438 |
439 | } else {
440 | cardElement.querySelector('img').src = thumbBase.replace(prec + "_", i + "_");
441 | i++;
442 | prec++;
443 | }
444 | }, 350);
445 | }
446 | //Funzione per cambiare l'immagine della card quando il mouse esce dalla card
447 | function setImmagineDefault(card, thumb, titolo) {
448 | card.querySelector('img').src = thumb;
449 | card.querySelector('h2').textContent = titolo;
450 | card.querySelector('p').classList.remove("visually-hidden");
451 | }
452 | //Funzione per cambiare il numero della pagina
453 | function cambiaPagina() {
454 | indicePagina.textContent = pagina;
455 | }
456 | // Funzione per far apparire il loading
457 | function load() {
458 | let gridVideo = document.getElementById('graficaCards');
459 | let Divloading = document.getElementById("loading");
460 | if (loading == true) {
461 | Divloading.className = "container-fluid visually-hidden";
462 | gridVideo.className = "container-fluid";
463 | } else {
464 | Divloading.className = "container-fluid";
465 | gridVideo.className = "container-fluid visually-hidden";
466 | }
467 | }
468 | // Funzione per resettare la pagina
469 | function resetPagina(){
470 | pagina = 1;
471 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Fap-Tap
2 |
3 | Sito porno che utilizza l'api di Eporner.
4 |
5 | Tutti i video sono hostati sul player di Eporner che ci permette di visualizzare i video anche in risoluzioni molto alte.
6 |
7 | ### Funzionalità
8 |
9 | * Ricerca per vari filtri (Categoria, Sezione, Durata e Parola chiave(default))
10 | * Scorrimento pagine (Max 100 pagine)
11 | * Preview se si tiene il cursore sopra l'immagine del video o da smartphone quando si ha il dito sull'immagine.
12 | * Ogni pagina ha 30 video
13 | * La pagina trending si aggiorna settimanalmente con i video migliori
14 | * Il sito si adatta in base al dispositivo e allo schermo
15 |
16 | > [Link al sito](https://tap-fap.vercel.app/)
17 |
--------------------------------------------------------------------------------
/best.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Trending
10 |
11 |
13 |
14 |
15 |
16 |
17 |
18 |
106 |
107 |
Trending
109 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
135 |
136 |
139 |
140 |
142 |
143 |
145 |
--------------------------------------------------------------------------------
/fonts/Gotham-Black.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lucalorenzo04/Tap-fap/3e910839886be6c79a160fc393236eb9d4f46634/fonts/Gotham-Black.otf
--------------------------------------------------------------------------------
/fonts/PTSans-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lucalorenzo04/Tap-fap/3e910839886be6c79a160fc393236eb9d4f46634/fonts/PTSans-Bold.ttf
--------------------------------------------------------------------------------
/img/Fap-tap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lucalorenzo04/Tap-fap/3e910839886be6c79a160fc393236eb9d4f46634/img/Fap-tap.png
--------------------------------------------------------------------------------
/img/campfire.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lucalorenzo04/Tap-fap/3e910839886be6c79a160fc393236eb9d4f46634/img/campfire.png
--------------------------------------------------------------------------------
/img/clock-circular-outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lucalorenzo04/Tap-fap/3e910839886be6c79a160fc393236eb9d4f46634/img/clock-circular-outline.png
--------------------------------------------------------------------------------
/img/eye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lucalorenzo04/Tap-fap/3e910839886be6c79a160fc393236eb9d4f46634/img/eye.png
--------------------------------------------------------------------------------
/img/no-minors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lucalorenzo04/Tap-fap/3e910839886be6c79a160fc393236eb9d4f46634/img/no-minors.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Tap&Fap
9 |
10 |
12 |
13 |
14 |
15 |
16 |
105 | Ultime uscite
106 |
107 |
112 |
113 |
118 |
119 |
120 |
121 |
131 |
132 |
135 |
136 |
138 |
139 |
141 |
--------------------------------------------------------------------------------
/style/stylesheet.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: Generale;
3 | src: url("./../fonts/Gotham-Black.otf");
4 | font-display: swap;
5 | }
6 |
7 | @font-face {
8 | font-family: intitolazione;
9 | src: url("./../fonts/PTSans-Bold.ttf");
10 | font-display: swap;
11 | }
12 |
13 | img.card-img-top {
14 | border-radius: 0%
15 | };
16 |
17 | #pagina {
18 | font-size: large;
19 | }
20 |
21 | span#ricerca,#ricerca,#logo, #categoria, #pagina {
22 | color: orange;
23 | }
24 |
25 | body {
26 | /* background-color: rgb(33, 37, 41); */
27 | background-color: rgb(0, 0, 0);
28 | font-family: Generale;
29 | color: white;
30 | margin: 0;
31 | padding: 0;
32 | }
33 |
34 | .dropdown-item:hover {
35 | cursor: pointer;
36 | color: white;
37 | background-color: rgb(41, 48, 54);
38 | border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
39 | }
40 | option {
41 | color: white;
42 | background-color: rgb(41, 48, 54);
43 | border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
44 | }
45 |
46 | .navbar {
47 | background-color: #161616f5!important;
48 |
49 | }
50 |
51 | #titolo {
52 | color: white;
53 | font-size: 150%;
54 | margin-left: 1.5%;
55 | }
56 |
57 | h1 {
58 | color: white;
59 | text-align: center;
60 | margin-top: 1.5%;
61 | margin-bottom: 2%;
62 | }
63 |
64 | li.page-item{
65 | font-size: 20px;
66 | }
67 |
68 | .navbar-toggler {
69 | color: rgb(221, 118, 21);
70 | margin-right: 6.1%;
71 | }
72 |
73 | nav#pagination {
74 | display: flex;
75 | flex-direction: row;
76 | justify-content: center;
77 | align-items: center;
78 | }
79 |
80 | #loading{
81 | display: flex;
82 | justify-content: center;
83 | margin-top: 4%;
84 | }
85 |
86 | .spinner-border{
87 | color: rgb(255, 119, 0)!important;
88 | width: 3rem;
89 | height: 3rem;
90 | margin-bottom: 70%;
91 | }
92 |
93 | nav#pagination a {
94 | color: rgb(255, 119, 0);
95 | background-color: #1d1d1d;
96 | border-color: rgba(255, 255, 255, 0.341);
97 | }
98 |
99 | nav#pagination a:hover {
100 | background-color: black;
101 | border-color: orange;
102 | }
103 |
104 | div.card:hover {
105 | cursor: pointer;
106 | }
107 |
108 | .container-fluid {
109 | width: 98% !important;
110 | }
111 |
112 | #icone {
113 | width: 3%;
114 | margin-left: 0.3%;
115 | margin-right: 0.1%;
116 | }
117 |
118 | select {
119 | margin-right: 0.5rem;
120 | }
121 |
122 | .card {
123 | text-shadow: 0 0 2px #000000;
124 | align-items: center;
125 | border:none;
126 | border-radius: 0%;
127 | }
128 |
129 | p {
130 | display: flex;
131 | }
132 | #clock {
133 | width: 20px;
134 | margin-bottom: 0.8%;
135 | margin-right: 6%;
136 | }
137 |
138 | #form_ricerca {
139 | margin-right: 2%;
140 | }
141 |
142 | #time {
143 | font-size: large;
144 | color: rgb(255, 255, 255);
145 | display: flex;
146 | align-items: center;
147 | margin-right: 4%;
148 | }
149 |
150 | #views {
151 | width: 10%;
152 | margin-bottom: 0.5%;
153 | margin-right: 2%;
154 | margin-left: 2%;
155 | margin-top: 1%;
156 | }
157 |
158 | #n-views {
159 | display: flex;
160 | align-items: center;
161 | margin-left: 2%;
162 | }
163 | .card-description {
164 | position: absolute;
165 | bottom: 0%;
166 | width: 100%;
167 | }
168 | .card-description h2 {
169 | font-size: 140%;
170 | text-align: center;
171 | align-items: center;
172 | color: #ffffff;
173 | font-family: intitolazione;
174 | padding: 0% 2% 0% 2%;
175 | margin-bottom: 0.5%;
176 | }
177 | .card-description p {
178 | font-size: 20px;
179 | text-align: center;
180 | align-items: center;
181 | color: #ffffff;
182 | display: flex;
183 | justify-content: space-between;
184 | }
185 |
186 | .row {
187 | margin-bottom: 1%;
188 | margin-left: auto;
189 | margin-right: auto;
190 | }
191 |
192 | #star {
193 | width: 2%;
194 | margin-right: 0.5%;
195 | }
196 |
197 | .btn#next {
198 | width: 8%;
199 | margin-left: 1.5%;
200 | }
201 |
202 | .btn#previous {
203 | width: 8%;
204 | margin-right: 1.5%;
205 | }
206 |
207 | span#pagina {
208 | width: 5%;
209 | height: 5%;
210 | font-size: 21px;
211 | background-color: transparent !important;
212 | }
213 |
214 | .pagination {
215 | width: 100%;
216 | display: contents;
217 | }
218 |
219 | @media screen and (max-width: 1250px) {
220 | .card-description h2 {
221 | font-size: 100%;
222 | text-align: center;
223 | align-items: center;
224 | }
225 | .card-description p {
226 | font-size: 120%;
227 | text-align: center;
228 | align-items: center;
229 | }
230 |
231 | .row {
232 | width: 100%;
233 | margin-bottom: 1%;
234 | margin-left: auto;
235 | margin-right: auto;
236 | }
237 |
238 | h1 {
239 | margin-top: 2.5%;
240 | margin-bottom: 3%;
241 | }
242 | #views {
243 | width: 15%;
244 | margin-right: 5%;
245 | }
246 |
247 | #clock {
248 | width: 25%;
249 | }
250 |
251 | .btn#next {
252 | margin-left: 3%;
253 | }
254 |
255 | .btn#previous {
256 | margin-right: 3%;
257 | }
258 |
259 | #n-views {
260 | font-size: 70%;
261 | }
262 |
263 | #time {
264 | font-size: 70%;
265 | margin-right: 5%;
266 | }
267 | .btn#next {
268 | margin-left: 3%;
269 | }
270 |
271 | .btn#previous {
272 | margin-right: 3%;
273 | }
274 | }
275 |
276 | @media screen and (max-width: 725px) {
277 | .card-description h2 {
278 | font-size: 10px;
279 | text-align: center;
280 | align-items: center;
281 | }
282 | .card-description p {
283 | font-size: 15px;
284 | text-align: center;
285 | align-items: center;
286 | }
287 |
288 | .btn#next {
289 | width: 15%;
290 | }
291 |
292 | .btn#previous {
293 | width: 15%;
294 | }
295 |
296 | .pagination {
297 | width: 100%;
298 | display: contents;
299 | }
300 |
301 | .row {
302 | width: 100%;
303 | margin-bottom: 1%;
304 | margin-left: auto;
305 | margin-right: auto;
306 | }
307 |
308 | h1 {
309 | margin-top: 2.5%;
310 | margin-bottom: 3%;
311 | }
312 |
313 | #views {
314 | width: 22px;
315 | margin-bottom: 0.5%;
316 | margin-right: 10%;
317 | margin-left: 10%;
318 | }
319 |
320 | #time {
321 | font-size: 15px;
322 | margin-right: 5%;
323 | }
324 |
325 | #clock {
326 | width: 18px;
327 | }
328 | #n-views {
329 | font-size: 70%;
330 | }
331 |
332 | #time {
333 | font-size: 70%;
334 | margin-right: 5%;
335 | }
336 | .btn#next {
337 | margin-left: 3%;
338 | }
339 |
340 | .btn#previous {
341 | margin-right: 3%;
342 | }
343 | }
344 |
345 |
346 | @media screen and (max-width: 575px) {
347 | .card-description h2 {
348 | font-size: 100%;
349 | }
350 |
351 | .card-description p {
352 | font-size: 120%;
353 | }
354 | .row {
355 | width: 100%;
356 | margin-bottom: 1%;
357 | margin-left: auto;
358 | margin-right: auto;
359 | }
360 |
361 | nav {
362 | width: auto;
363 | }
364 |
365 | h1 {
366 | margin-top: 4%;
367 | margin-bottom: 4.5%;
368 | font-size: 28px;
369 | }
370 |
371 | .btn#next {
372 | width: 20%;
373 | }
374 |
375 | .btn#previous {
376 | width: 20%;
377 | }
378 | img#icone {
379 | width: 7%;
380 | }
381 |
382 | #titolo {
383 | margin-left: 6%;
384 | }
385 |
386 | .btn#next {
387 | margin-left: 5%;
388 | }
389 |
390 | .btn#previous {
391 | margin-right: 5%;
392 | }
393 |
394 | li.page-item{
395 | font-size: 20px;
396 | }
397 | #pagina {
398 | font-size: 15px;
399 | }
400 | }
401 |
402 | html {
403 | scroll-behavior: smooth;
404 | }
405 |
406 | /* Firefox */
407 | * {
408 | scrollbar-color: #424242;
409 | }
410 |
411 | /* Chrome, Edge, and Safari */
412 | *::-webkit-scrollbar {
413 | width: 16px;
414 | }
415 |
416 | *::-webkit-scrollbar-track {
417 | background: transparent;
418 | }
419 |
420 | *::-webkit-scrollbar-thumb {
421 | background-color: #353535;
422 | border-radius: 0px;
423 | border: 5px solid transparent;
424 | }
425 |
--------------------------------------------------------------------------------