#html #css #optimization #html-helper
#HTML #css #оптимизация #html-помощник
Вопрос:
Весь код, который у меня есть на данный момент, находится там, я новичок в HTML
Итак, я хочу, чтобы эти так называемые «морковные» изображения падали сверху веб-сайта в качестве «анимации загрузки», но единственный способ, который я пока выяснил, — это создать несколько версий одного изображения и присвоить им всем разные идентификаторы, поскольку мне нужно каждоеморковь должна находиться в другом положении на X кординате
Я придумал, как придать каждой картинке одинаковую анимацию, и у меня есть анимация, мне просто нужен способ создать все эти изображения без такого большого количества кода, или это единственный способ, в то время как все картинки также должны находиться в случайном положении накординат X или что-либо, что вы задаете как.
Это моя часть HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS</title>
<link rel="stylesheet" href="stylesheet.css">
</head>
<body>
<div id="mainContainer">
<img id="carrot" src="images/carrot.png" alt="">
<img id="carrot1" src="images/carrot.png" alt="">
<img id="carrot2" src="images/carrot.png" alt="">
<img id="carrot3" src="images/carrot.png" alt="">
</div>
</body>
</html>
ЧАСТЬ CSS
#carrot {
width: 56px;
z-index: 0;
position: relative;
right: -10px;
bottom: 0px;
animation-name: fall;
animation-duration: 3s;
animation-delay: 0s;
animation-iteration-count: infinite;
}
#carrot1 {
width: 56px;
z-index: 0;
position: relative;
right: -190px;
bottom: 0px;
animation-name: fall;
animation-duration: 3s;
animation-delay: 0s;
animation-iteration-count: infinite;
}
#carrot2 {
width: 56px;
z-index: 0;
position: relative;
right: -290px;
bottom: 0px;
animation-name: fall;
animation-duration: 3s;
animation-delay: 0s;
animation-iteration-count: infinite;
}
#carrot3 {
width: 56px;
z-index: 0;
position: relative;
right: -500px;
bottom: 0px;
animation-name: fall;
animation-duration: 3s;
animation-delay: 0s;
animation-iteration-count: infinite;
}
@keyframes fall {
0% { transform: translateY(0px); opacity: 1; }
25% { opacity: 1; }
50% { opacity: 0.8; }
100% { transform: translateY(1400px); opacity: 0.3; }
}
Комментарии:
1. Рассматривали ли вы возможность использования
canvas
вместо этого? Погуглите.
Ответ №1:
Я могу предложить решение для javascript. Используется путем createElement
присвоения URL-адресов изображению и присвоения класса. Обратите внимание, что mainContainer
изначально в структуре html пусто.
Кроме того, для каждого carrot
.carrot:nth-child()
в css был добавлен псевдокласс, чтобы назначить уникальное правило right
.
var container = document.querySelector('#mainContainer');
for(var i = 0; i < 4; i ) {
var img = document.createElement('img');
img.className = 'carrot';
img.src = 'https://banner2.cleanpng.com/20180620/gl/kisspng-monument-valley-2-level-cheating-in-video-games-5b29fd2c754be5.5312592115294784444805.jpg';
container.append(img);
}
.carrot {
width: 56px;
z-index: 0;
position: relative;
right: -10px;
bottom: 0px;
animation-name: fall;
animation-duration: 3s;
animation-delay: 0s;
animation-iteration-count: infinite;
}
.carrot:nth-child(1) {
right: -10px;
}
.carrot:nth-child(2) {
right: -190px;
}
.carrot:nth-child(3) {
right: -290px;
}
.carrot:nth-child(4) {
right: -500px;
}
@keyframes fall {
0% { transform: translateY(0px); opacity: 1; }
25% { opacity: 1; }
50% { opacity: 0.8; }
100% { transform: translateY(1400px); opacity: 0.3; }
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS</title>
<link rel="stylesheet" href="stylesheet.css">
</head>
<body>
<div id="mainContainer">
</div>
</body>
</html>
Ответ №2:
Вы можете использовать класс в CSS для назначения вещей, которые являются общими для нескольких элементов. В этом примере я создал класс falling
. Вы также можете использовать фоновый URL-адрес в CSS в этом классе, который также будет применяться ко всем элементам. И в этом примере я сделал именно это, и вместо использования img
в HTML я использовал div
фоновое изображение. Я надеюсь, что это ответ на ваш вопрос!
.falling {
background: no-repeat url("https://external-content.duckduckgo.com/iu/?u=https://image.flaticon.com/icons/png/512/591/591329.pngamp;f=1amp;nofb=1") 50% / 100%;
width: 56px;
height: 56px;
z-index: 0;
position: relative;
bottom: 0px;
animation-name: fall;
animation-duration: 3s;
animation-delay: 0s;
animation-iteration-count: infinite;
}
#carrot {
right: -10px;
}
#carrot1 {
right: -190px;
}
#carrot2 {
right: -290px;
}
#carrot3 {
right: -500px;
}
@keyframes fall {
0% { transform: translateY(0px); opacity: 1; }
25% { opacity: 1; }
50% { opacity: 0.8; }
100% { transform: translateY(1400px); opacity: 0.3; }
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS</title>
<link rel="stylesheet" href="stylesheet.css">
</head>
<body>
<div id="mainContainer">
<div id="carrot" class="falling"></div>
<div id="carrot1" class="falling"></div>
<div id="carrot2" class="falling"></div>
<div id="carrot3" class="falling"></div>
</div>
</body>
</html>