#javascript #html #css
#javascript #HTML #css
Вопрос:
Это пример анимации загрузчика, скопированной с веб-сайта w3schools:
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.loader {
border: 16px solid #f3f3f3;
border-radius: 50%;
border-top: 16px solid #3498db;
width: 120px;
height: 120px;
-webkit-animation: spin 2s linear infinite; /* Safari */
animation: spin 2s linear infinite;
}
/* Safari */
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
</style>
</head>
<body>
<h2>How To Create A Loader</h2>
<div class="loader"></div>
</body>
</html>
У меня есть похожий на моей странице с функцией, чтобы скрыть загрузчик после секунд обновления главной страницы:
setTimeout(function() {
$('#loadingAnimation').addClass('hidden');
}, 1500);
Теперь мой вопрос:
Есть ли способ добавить элементы анимации с помощью JavaScript? Я имею в виду, когда я просматриваю страницу, я могу изменить CSS загрузчика, который делает его видимым, так как я могу добавить элементы на страницу с помощью JavaScript, а затем удалить его, чтобы сделать его неизменным?
#loadingAnimation{
position: fixed;
max-width: 100%;
max-height: 100%;
top:0;
left:0;
right:0;
bottom:0;
background-color: #ffffff;
opacity: 1;
transition: 0.5s;
visibility: visible;
z-index: 10;
}
#loadingAnimation.hidden{
opacity: 0;
visibility: hidden;
}
Я новичок в программировании 🙂 Мне нужна ваша помощь, и я надеюсь, что мой вопрос понятен!
Комментарии:
1. Вы хотите динамически удалять элемент loader из DOM?
Ответ №1:
Есть некоторые вещи, которые вы можете сделать, а именно:
- Добавьте в свой стиль класс, который выполняет анимацию (рекомендуется, поскольку он требует наименьшей работы), и добавьте элементы с этим классом / добавьте класс в элементы.
- Создайте новый элемент стиля с уникальным идентификатором (несколько слишком сложным для чего-то такого масштаба)
- requestAnimationFrame — Очень сложно и легко ошибиться — в основном только для справки
Реализация для 1: CSS:
.loadingAnimation { /* . notates a class whereas # notates an id */
position: fixed;
max-width: 100%;
max-height: 100%;
top:0;
left:0;
right:0;
bottom:0;
background-color: #ffffff;
opacity: 1;
transition: 0.5s;
visibility: visible;
z-index: 10;
}
JS:
const loader = document.createElement("div");// Create a new div element
loader.className = "loadingAnimation"; // Add the loadingAnimation class to it
document.getElementById("root").append(loader); // Add it to an element with id root
setTimeout(function() {
loader.remove(); // Remove the loader
}, 1500);
Комментарии:
1. Что, если бы я хотел добавить новый
div
внутри первогоloader div
? и дать ему оба разных стиля? Или, напримерimg
, тег внутриdiv
тега в качестве дочернего элемента …?2. Вы можете создать столько элементов, сколько пожелаете, и ссылаться на них либо по идентификатору (добавленному как
element.id = "..."
), либо по их переменным, для сложных случаев вы также можете использовать селекторы CSS с document . querySelector ( developer.mozilla.org/en-US/docs/Web/API/Document/querySelector )
Ответ №2:
Вместо того, чтобы применять hidden
класс к элементу loader, вы можете просто удалить его!
setTimeout(function() {
$('#loadingAnimation').remove();
}, 1500);
Это удалит его из DOM и остановит людей, играющих со стилем в инструментах разработки.
Я добавлю, однако, что на самом деле вы мало что можете сделать, чтобы помешать людям работать с веб-сайтами в их собственных браузерах, и это не такая уж большая проблема.