Anonymous
Анимации, не рендеринг на мобильных платформах [закрыто]
Сообщение
Anonymous » 14 апр 2025, 19:15
Я создал веб -сайт портфеля с использованием React JS с Node JS на VSCODE, чтобы продемонстрировать мой набор навыков с помощью анимации для пишущей машинки терминала. Все отлично работает в браузерах для ноутбуков/ПК, но когда я пытался получить доступ к своему веб -сайту на мобильном телефоне, он не показывает ни одной из анимации, даже когда я переключаюсь на веб -сайт настольных компьютеров на моем устройстве Android, все еще нет анимации.
Код: Выделить всё
import './App.css';
import React, { use, useState } from 'react';
import Windowz from './RoomWindow';
import Table from './Tables';
import Footer from './Footer';
import Contents from './ScreenContent';
function App() {
return (
);
}
export default App;
< /code>
Часть CSS -> < /p>
/* TERMINAL WINDOW ------------------------------------------------ */
/* CONTENT ----------------------------------- */
#fake__Screen:-ms-fullscreen p {
visibility: visible;
font-size: 2.0em;
overflow: auto;
}
#fake__Screen:fullscreen {
font-size: 2.0em;
width: 100vw;
height: 100vh;
overflow: auto;
}
span {
color: #fff;
font-family: monospace;
text-align: left;
font-size: 1.5em;
display: inline-flex;
}
a {
color: #fff;
font-family: monospace;
text-align: left;
}
.codeHead {
color: rgb(0, 229, 255);
font-family: monospace;
text-align: left;
font-size: 1.5em;
display: inline-flex;
}
.typewriter {
width: fit-content;
color: #fff;
font-family: monospace;
overflow: hidden; /* Ensures the content is not revealed until the animation */
border-right: .7em solid rgb(0, 229, 255); /* The typwriter cursor */
white-space: nowrap; /* Keeps the content on a single line */
margin: -10 auto; /* Gives that scrolling effect as the typing happens */
letter-spacing: .15em; /* Adjust as needed */
-webkit-animation:
typing 3.5s steps(30, end),
blink-caret .5s step-end infinite;
animation:
typing 3.5s steps(30, end),
blink-caret .9s step-end infinite;
}
.typewriter1 {
width: fit-content;
color: #fff;
font-family: monospace;
overflow: hidden; /* Ensures the content is not revealed until the animation */
border-right: .7em solid rgb(0, 229, 255); /* The typwriter cursor */
white-space: nowrap; /* Keeps the content on a single line */
margin: -10 auto; /* Gives that scrolling effect as the typing happens */
letter-spacing: .15em; /* Adjust as needed */
-webkit-animation:
typing 1s steps(60, end),
blink-caret .5s step-end infinite;
animation:
typing 1s steps(60, end),
blink-caret .9s step-end infinite;
}
.bio:hover {
color: rgb(0, 229, 255);
}
.work:hover {
color: rgb(0, 229, 255);
}
.projects:hover {
color: rgb(0, 229, 255);
}
/* The typing effect */
@-webkit-keyframes typing {
from { width: 0 }
to { width: 40% }
}
@keyframes typing {
from { width: 0 }
to { width: 40% }
}
/* The typewriter cursor effect */
@-webkit-keyframes blink-caret {
from, to { border-color: transparent }
50% { border-color: rgb(0, 238, 255) }
}
@keyframes blink-caret {
from, to { border-color: transparent }
50% { border-color: rgb(0, 208, 255) }
}
#id {
overflow-y:auto;
}
/* CONTENT ----------------------------------- */
body {
background-color: rgb(84, 96, 97);
padding: 10px;
margin-bottom: 0;
padding-bottom: 0;
}
.fakeButtons {
height: 10px;
width: 10px;
border-radius: 50%;
border: 1px solid #000;
position: relative;
top: 6px;
left: 6px;
background-color: #ff3b47;
border-color: #9d252b;
display: inline-block;
}
.fakeMinimize {
left: 11px;
background-color: #ffc100;
border-color: #9d802c;
}
.fakeZoom {
left: 16px;
background-color: #00d742;
border-color: #049931;
}
.fakeMenu {
max-width: 748px;
box-sizing: border-box;
height: 25px;
background-color: #bbb;
margin: 0 auto;
border-top-right-radius: 5px;
border-top-left-radius: 5px;
text-align: left;
}
.fakeScreen {
background-color: #151515;
box-sizing: border-box;
max-width: 748px;
height: 467.50px;
margin: 0 auto;
padding: 20px;
overflow: auto;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
p {
position: relative;
left: 22%;
margin-left: -8.5em;
text-align: left;
font-size: 2.5em;
font-family: monospace;
white-space: normal;
overflow: hidden;
width: 0;
}
.hide {
display: none;
}
/* TERMINAL WINDOW ------------------------------------------------ */
/* CLOUDS SYLE 000000000000000000000000000000000000000000000000*/
/* KEYFRAMES */
@-webkit-keyframes animateCloud {
0% {
margin-left: -1000px;
}
100% {
margin-left: 100%;
}
}
@-moz-keyframes animateCloud {
0% {
margin-left: -1000px;
}
100% {
margin-left: 100%;
}
}
@keyframes animateCloud {
0% {
margin-left: -1000px;
}
100% {
margin-left: 100%;
}
}
/* ANIMATIONS */
.x1 {
-webkit-animation: animateCloud 35s linear infinite;
-moz-animation: animateCloud 35s linear infinite;
animation: animateCloud 35s linear infinite;
-webkit-transform: scale(0.65);
-moz-transform: scale(0.65);
transform: scale(0.65);
}
.x2 {
-webkit-animation: animateCloud 20s linear infinite;
-moz-animation: animateCloud 20s linear infinite;
animation: animateCloud 20s linear infinite;
-webkit-transform: scale(0.3);
-moz-transform: scale(0.3);
transform: scale(0.3);
}
.x3 {
-webkit-animation: animateCloud 30s linear infinite;
-moz-animation: animateCloud 30s linear infinite;
animation: animateCloud 30s linear infinite;
-webkit-transform: scale(0.5);
-moz-transform: scale(0.5);
transform: scale(0.5);
}
.x4 {
-webkit-animation: animateCloud 18s linear infinite;
-moz-animation: animateCloud 18s linear infinite;
animation: animateCloud 18s linear infinite;
-webkit-transform: scale(0.4);
-moz-transform: scale(0.4);
transform: scale(0.4);
}
.x5 {
-webkit-animation: animateCloud 25s linear infinite;
-moz-animation: animateCloud 25s linear infinite;
animation: animateCloud 25s linear infinite;
-webkit-transform: scale(0.55);
-moz-transform: scale(0.55);
transform: scale(0.55);
}
/* OBJECTS */
.cloud {
background: #fff;
background: -moz-linear-gradient(top, #fff 5%, #f1f1f1 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(5%,#fff), color-stop(100%,#f1f1f1));
background: -webkit-linear-gradient(top, #fff 5%,#f1f1f1 100%);
background: -o-linear-gradient(top, #fff 5%,#f1f1f1 100%);
background: -ms-linear-gradient(top, #fff 5%,#f1f1f1 100%);
background: linear-gradient(top, #fff 5%,#f1f1f1 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f1f1f1',GradientType=0 );
-webkit-border-radius: 100px;
-moz-border-radius: 100px;
border-radius: 100px;
-webkit-box-shadow: 0 8px 5px rgba(0, 0, 0, 0.1);
-moz-box-shadow: 0 8px 5px rgba(0, 0, 0, 0.1);
box-shadow: 0 8px 5px rgba(0, 0, 0, 0.1);
height: 120px;
position: relative;
width: 350px;
}
.cloud:after, .cloud:before {
background: #fff;
content: '';
position: absolute;
z-indeX: -1;
}
.cloud:after {
-webkit-border-radius: 100px;
-moz-border-radius: 100px;
border-radius: 100px;
height: 100px;
left: 50px;
top: -50px;
width: 100px;
}
.cloud:before {
-webkit-border-radius: 200px;
-moz-border-radius: 200px;
border-radius: 200px;
width: 180px;
height: 180px;
right: 50px;
top: -90px;
}
/* CLOUDS SYLE 000000000000000000000000000000000000000000000000*/
/* SUNRISE - SUNSET END ------------------------------------------- */
@keyframes sunrise {
from {
transform: rotate(-45deg);
}
to {
transform: rotate(315deg);
}
}
@keyframes moonrise {
from {
transform: rotate(0deg);
}
to {
transform: rotate(180deg);
}
}
@keyframes dawn {
0% {
opacity: 0;
}
10% {
opacity: 1;
}
60% {
opacity: 0;
}
}
@keyframes noon {
0% {
opacity: 0;
}
50% {
opacity: 1;
}
75% {
opacity: 0;
}
}
@keyframes dusk {
0% {
opacity: 0;
}
50% {
opacity: 0;
}
70% {
opacity: 1;
}
90% {
opacity: 0;
}
}
@keyframes midnight {
0% {
opacity: 1;
}
25% {
opacity: 0;
}
50% {
opacity: 0;
}
80% {
opacity: 1;
}
}
body {
--animation-speed: 1200s;
background-color: #63689b;
}
body.pause {
--animation-speed: 0;
}
.sky {
width: 85vw;
height: 100vh;
position: fixed;
top: 2%;
left: 7%;
max-height: 600px;
overflow: hidden;
}
.sky__phase {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
transition: opacity 0.2s;
}
.sky__dawn {
background: linear-gradient(
0deg,
rgba(254, 215, 102, 1) 0%,
rgba(205, 237, 246, 1) 100%
);
animation: linear dawn infinite var(--animation-speed);
}
.sky__noon {
background: linear-gradient(
0deg,
rgba(205, 237, 246, 1) 0%,
rgba(36, 123, 160, 1) 100%
);
animation: linear noon infinite var(--animation-speed);
}
.sky__dusk {
background: linear-gradient(
0deg,
rgba(255, 32, 110, 1) 0%,
rgba(10, 0, 94, 1) 100%
);
animation: linear dusk infinite var(--animation-speed);
}
.sky__midnight {
background: linear-gradient(
0deg,
rgba(2, 0, 20, 1) 0%,
rgba(10, 0, 94, 1) 100%
);
animation: linear midnight infinite var(--animation-speed);
}
.orbit {
position: relative;
width: 500px;
height: 500px;
margin: 200px auto;
transform: rotate(-45deg);
animation: linear sunrise infinite var(--animation-speed);
}
@media (min-width: 768px) {
.sky {
max-height: 600px;
}
.orbit {
width: 700px;
height: 700px;
margin: 150px auto;
}
}
@media (min-width: 940px) {
.orbit {
width: 800px;
height: 800px;
}
}
@media (min-width: 1200px) {
body {
--animation-speed: 1204s;
}
.orbit {
width: 1000px;
height: 1000px;
margin: 200px auto;
}
}
@media (min-width: 1500px) {
body {
--animation-speed: 1206s;
}
.orbit {
width: 1300px;
height: 1300px;
}
}
.sun {
position: absolute;
top: -40px;
left: -40px;
width: 80px;
height: 80px;
background-color: rgb(254, 215, 102);
border-radius: 50%;
box-shadow: 0 0 14px 14px rgba(254, 215, 102, 0.2);
}
.moon {
position: absolute;
bottom: -40px;
right: -40px;
width: 80px;
height: 80px;
border-radius: 50%;
background-color: #ebf3fe;
box-shadow: inset -40px 0px 0px #d8e8f7, inset 20px 0px 0px #ffffff, inset -50px 0px 0px 20px #e2eefa, 0px 0px 0px 20px rgba(255, 255, 255, 0.05), 0px 0px 0px 40px rgba(255, 255, 255, 0.025), 0px 0px 0px 60px rgba(255, 255, 255, 0.0125);
transition: all 0.2s ease-in;
}
.moon:after {
content: "";
width: 13px;
height: 13px;
border-radius: 50%;
background-color: #d8e8f7;
position: absolute;
top: 20%;
left: 20%;
box-shadow: 40px -20px 0px -10px #d8e8f7, 40px 10px 0px -15px #d8e8f7;
}
#sky__stars > div {
width: 3px;
height: 3px;
background-color: #fff;
border-radius: 50%;
position: absolute;
}
#toggle-animation {
position: fixed;
bottom: 1em;
right: 1em;
text-transform: uppercase;
background-color: rgb(2, 0, 20);
color: #fff;
border: 0;
padding: 0.5em 1em;
letter-spacing: 0.5px;
}
#toggle-animation:hover {
background-color: rgb(61, 0, 21);
cursor: pointer;
}
.paused {
display: none;
}
.pause .paused {
display: block;
}
.pause .playing {
display: none;
}
/* SUNRISE - SUNSET END ------------------------------------------- */
< /code>
Код для окна комнаты JSX -> < /p>
import './App.css';
import React, { useState } from 'react';
function Windowz() {
//////////////////////////////////////////////////////
const starsArray = [];
const stars = 40;
let x,y = 0;
// Generate stars randomly using absolute position
for (let i = 0; i < stars; i++) {
x = Math.floor(Math.random() * 100 + 1) + "%";
y = Math.floor(Math.random() * 100 + 1) + "%";
starsArray.push(x);
starsArray.push(y);
}
//////////////////////////////////////////////////////
return (
{starsArray.map((element,index) => {
return();
})}
);
}
export default Windowz;
Обновленная ссылка на веб -сайт для тестирования на мобильной платформе -
https://mirza-asim.github.io/portfolio1.1/
Подробнее здесь:
https://stackoverflow.com/questions/795 ... -platforms
1744647330
Anonymous
Я создал веб -сайт портфеля с использованием React JS с Node JS на VSCODE, чтобы продемонстрировать мой набор навыков с помощью анимации для пишущей машинки терминала. Все отлично работает в браузерах для ноутбуков/ПК, но когда я пытался получить доступ к своему веб -сайту на мобильном телефоне, он не показывает ни одной из анимации, даже когда я переключаюсь на веб -сайт настольных компьютеров на моем устройстве Android, все еще нет анимации.[code]import './App.css'; import React, { use, useState } from 'react'; import Windowz from './RoomWindow'; import Table from './Tables'; import Footer from './Footer'; import Contents from './ScreenContent'; function App() { return ( ); } export default App; < /code> Часть CSS -> < /p> /* TERMINAL WINDOW ------------------------------------------------ */ /* CONTENT ----------------------------------- */ #fake__Screen:-ms-fullscreen p { visibility: visible; font-size: 2.0em; overflow: auto; } #fake__Screen:fullscreen { font-size: 2.0em; width: 100vw; height: 100vh; overflow: auto; } span { color: #fff; font-family: monospace; text-align: left; font-size: 1.5em; display: inline-flex; } a { color: #fff; font-family: monospace; text-align: left; } .codeHead { color: rgb(0, 229, 255); font-family: monospace; text-align: left; font-size: 1.5em; display: inline-flex; } .typewriter { width: fit-content; color: #fff; font-family: monospace; overflow: hidden; /* Ensures the content is not revealed until the animation */ border-right: .7em solid rgb(0, 229, 255); /* The typwriter cursor */ white-space: nowrap; /* Keeps the content on a single line */ margin: -10 auto; /* Gives that scrolling effect as the typing happens */ letter-spacing: .15em; /* Adjust as needed */ -webkit-animation: typing 3.5s steps(30, end), blink-caret .5s step-end infinite; animation: typing 3.5s steps(30, end), blink-caret .9s step-end infinite; } .typewriter1 { width: fit-content; color: #fff; font-family: monospace; overflow: hidden; /* Ensures the content is not revealed until the animation */ border-right: .7em solid rgb(0, 229, 255); /* The typwriter cursor */ white-space: nowrap; /* Keeps the content on a single line */ margin: -10 auto; /* Gives that scrolling effect as the typing happens */ letter-spacing: .15em; /* Adjust as needed */ -webkit-animation: typing 1s steps(60, end), blink-caret .5s step-end infinite; animation: typing 1s steps(60, end), blink-caret .9s step-end infinite; } .bio:hover { color: rgb(0, 229, 255); } .work:hover { color: rgb(0, 229, 255); } .projects:hover { color: rgb(0, 229, 255); } /* The typing effect */ @-webkit-keyframes typing { from { width: 0 } to { width: 40% } } @keyframes typing { from { width: 0 } to { width: 40% } } /* The typewriter cursor effect */ @-webkit-keyframes blink-caret { from, to { border-color: transparent } 50% { border-color: rgb(0, 238, 255) } } @keyframes blink-caret { from, to { border-color: transparent } 50% { border-color: rgb(0, 208, 255) } } #id { overflow-y:auto; } /* CONTENT ----------------------------------- */ body { background-color: rgb(84, 96, 97); padding: 10px; margin-bottom: 0; padding-bottom: 0; } .fakeButtons { height: 10px; width: 10px; border-radius: 50%; border: 1px solid #000; position: relative; top: 6px; left: 6px; background-color: #ff3b47; border-color: #9d252b; display: inline-block; } .fakeMinimize { left: 11px; background-color: #ffc100; border-color: #9d802c; } .fakeZoom { left: 16px; background-color: #00d742; border-color: #049931; } .fakeMenu { max-width: 748px; box-sizing: border-box; height: 25px; background-color: #bbb; margin: 0 auto; border-top-right-radius: 5px; border-top-left-radius: 5px; text-align: left; } .fakeScreen { background-color: #151515; box-sizing: border-box; max-width: 748px; height: 467.50px; margin: 0 auto; padding: 20px; overflow: auto; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; } p { position: relative; left: 22%; margin-left: -8.5em; text-align: left; font-size: 2.5em; font-family: monospace; white-space: normal; overflow: hidden; width: 0; } .hide { display: none; } /* TERMINAL WINDOW ------------------------------------------------ */ /* CLOUDS SYLE 000000000000000000000000000000000000000000000000*/ /* KEYFRAMES */ @-webkit-keyframes animateCloud { 0% { margin-left: -1000px; } 100% { margin-left: 100%; } } @-moz-keyframes animateCloud { 0% { margin-left: -1000px; } 100% { margin-left: 100%; } } @keyframes animateCloud { 0% { margin-left: -1000px; } 100% { margin-left: 100%; } } /* ANIMATIONS */ .x1 { -webkit-animation: animateCloud 35s linear infinite; -moz-animation: animateCloud 35s linear infinite; animation: animateCloud 35s linear infinite; -webkit-transform: scale(0.65); -moz-transform: scale(0.65); transform: scale(0.65); } .x2 { -webkit-animation: animateCloud 20s linear infinite; -moz-animation: animateCloud 20s linear infinite; animation: animateCloud 20s linear infinite; -webkit-transform: scale(0.3); -moz-transform: scale(0.3); transform: scale(0.3); } .x3 { -webkit-animation: animateCloud 30s linear infinite; -moz-animation: animateCloud 30s linear infinite; animation: animateCloud 30s linear infinite; -webkit-transform: scale(0.5); -moz-transform: scale(0.5); transform: scale(0.5); } .x4 { -webkit-animation: animateCloud 18s linear infinite; -moz-animation: animateCloud 18s linear infinite; animation: animateCloud 18s linear infinite; -webkit-transform: scale(0.4); -moz-transform: scale(0.4); transform: scale(0.4); } .x5 { -webkit-animation: animateCloud 25s linear infinite; -moz-animation: animateCloud 25s linear infinite; animation: animateCloud 25s linear infinite; -webkit-transform: scale(0.55); -moz-transform: scale(0.55); transform: scale(0.55); } /* OBJECTS */ .cloud { background: #fff; background: -moz-linear-gradient(top, #fff 5%, #f1f1f1 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(5%,#fff), color-stop(100%,#f1f1f1)); background: -webkit-linear-gradient(top, #fff 5%,#f1f1f1 100%); background: -o-linear-gradient(top, #fff 5%,#f1f1f1 100%); background: -ms-linear-gradient(top, #fff 5%,#f1f1f1 100%); background: linear-gradient(top, #fff 5%,#f1f1f1 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f1f1f1',GradientType=0 ); -webkit-border-radius: 100px; -moz-border-radius: 100px; border-radius: 100px; -webkit-box-shadow: 0 8px 5px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 8px 5px rgba(0, 0, 0, 0.1); box-shadow: 0 8px 5px rgba(0, 0, 0, 0.1); height: 120px; position: relative; width: 350px; } .cloud:after, .cloud:before { background: #fff; content: ''; position: absolute; z-indeX: -1; } .cloud:after { -webkit-border-radius: 100px; -moz-border-radius: 100px; border-radius: 100px; height: 100px; left: 50px; top: -50px; width: 100px; } .cloud:before { -webkit-border-radius: 200px; -moz-border-radius: 200px; border-radius: 200px; width: 180px; height: 180px; right: 50px; top: -90px; } /* CLOUDS SYLE 000000000000000000000000000000000000000000000000*/ /* SUNRISE - SUNSET END ------------------------------------------- */ @keyframes sunrise { from { transform: rotate(-45deg); } to { transform: rotate(315deg); } } @keyframes moonrise { from { transform: rotate(0deg); } to { transform: rotate(180deg); } } @keyframes dawn { 0% { opacity: 0; } 10% { opacity: 1; } 60% { opacity: 0; } } @keyframes noon { 0% { opacity: 0; } 50% { opacity: 1; } 75% { opacity: 0; } } @keyframes dusk { 0% { opacity: 0; } 50% { opacity: 0; } 70% { opacity: 1; } 90% { opacity: 0; } } @keyframes midnight { 0% { opacity: 1; } 25% { opacity: 0; } 50% { opacity: 0; } 80% { opacity: 1; } } body { --animation-speed: 1200s; background-color: #63689b; } body.pause { --animation-speed: 0; } .sky { width: 85vw; height: 100vh; position: fixed; top: 2%; left: 7%; max-height: 600px; overflow: hidden; } .sky__phase { position: absolute; top: 0; left: 0; height: 100%; width: 100%; transition: opacity 0.2s; } .sky__dawn { background: linear-gradient( 0deg, rgba(254, 215, 102, 1) 0%, rgba(205, 237, 246, 1) 100% ); animation: linear dawn infinite var(--animation-speed); } .sky__noon { background: linear-gradient( 0deg, rgba(205, 237, 246, 1) 0%, rgba(36, 123, 160, 1) 100% ); animation: linear noon infinite var(--animation-speed); } .sky__dusk { background: linear-gradient( 0deg, rgba(255, 32, 110, 1) 0%, rgba(10, 0, 94, 1) 100% ); animation: linear dusk infinite var(--animation-speed); } .sky__midnight { background: linear-gradient( 0deg, rgba(2, 0, 20, 1) 0%, rgba(10, 0, 94, 1) 100% ); animation: linear midnight infinite var(--animation-speed); } .orbit { position: relative; width: 500px; height: 500px; margin: 200px auto; transform: rotate(-45deg); animation: linear sunrise infinite var(--animation-speed); } @media (min-width: 768px) { .sky { max-height: 600px; } .orbit { width: 700px; height: 700px; margin: 150px auto; } } @media (min-width: 940px) { .orbit { width: 800px; height: 800px; } } @media (min-width: 1200px) { body { --animation-speed: 1204s; } .orbit { width: 1000px; height: 1000px; margin: 200px auto; } } @media (min-width: 1500px) { body { --animation-speed: 1206s; } .orbit { width: 1300px; height: 1300px; } } .sun { position: absolute; top: -40px; left: -40px; width: 80px; height: 80px; background-color: rgb(254, 215, 102); border-radius: 50%; box-shadow: 0 0 14px 14px rgba(254, 215, 102, 0.2); } .moon { position: absolute; bottom: -40px; right: -40px; width: 80px; height: 80px; border-radius: 50%; background-color: #ebf3fe; box-shadow: inset -40px 0px 0px #d8e8f7, inset 20px 0px 0px #ffffff, inset -50px 0px 0px 20px #e2eefa, 0px 0px 0px 20px rgba(255, 255, 255, 0.05), 0px 0px 0px 40px rgba(255, 255, 255, 0.025), 0px 0px 0px 60px rgba(255, 255, 255, 0.0125); transition: all 0.2s ease-in; } .moon:after { content: ""; width: 13px; height: 13px; border-radius: 50%; background-color: #d8e8f7; position: absolute; top: 20%; left: 20%; box-shadow: 40px -20px 0px -10px #d8e8f7, 40px 10px 0px -15px #d8e8f7; } #sky__stars > div { width: 3px; height: 3px; background-color: #fff; border-radius: 50%; position: absolute; } #toggle-animation { position: fixed; bottom: 1em; right: 1em; text-transform: uppercase; background-color: rgb(2, 0, 20); color: #fff; border: 0; padding: 0.5em 1em; letter-spacing: 0.5px; } #toggle-animation:hover { background-color: rgb(61, 0, 21); cursor: pointer; } .paused { display: none; } .pause .paused { display: block; } .pause .playing { display: none; } /* SUNRISE - SUNSET END ------------------------------------------- */ < /code> Код для окна комнаты JSX -> < /p> import './App.css'; import React, { useState } from 'react'; function Windowz() { ////////////////////////////////////////////////////// const starsArray = []; const stars = 40; let x,y = 0; // Generate stars randomly using absolute position for (let i = 0; i < stars; i++) { x = Math.floor(Math.random() * 100 + 1) + "%"; y = Math.floor(Math.random() * 100 + 1) + "%"; starsArray.push(x); starsArray.push(y); } ////////////////////////////////////////////////////// return ( {starsArray.map((element,index) => { return(); })} ); } export default Windowz; [/code] Обновленная ссылка на веб -сайт для тестирования на мобильной платформе - https://mirza-asim.github.io/portfolio1.1/ Подробнее здесь: [url]https://stackoverflow.com/questions/79572794/animations-not-rendering-on-mobile-platforms[/url]