#javascript #html #css #animation #css-selectors
#javascript #HTML #css #Анимация #css-селекторы
Вопрос:
<style>
#container {
width: 400px;
height: 400px;
position: relative;
background: rgb(240, 240, 231);
}
#animate {
width: 50px;
height: 50px;
position: absolute;
background-color: red;
}
#animate1 {
width: 50px;
height: 50px;
left: 350px;
top: 2px;
position: absolute;
background-color: rgb(43, 1, 1);
}
</style>
<p>
<button onclick="myMove()">Click Me</button>
</p>
<div id="container">
<div id="animate"></div>
<div id="animate1"></div>
</div>
<script>
function myMove() {
var elem = document.getElementById("animate");
var elem1 = document.getElementById("animate1");
var pos = 0;
var pos1 = 0;
var id = setInterval(frame, 5);
var id1 = setInterval(frame1, 5);
function frame() {
if (pos == 350) {
clearInterval(id);
} else {
pos ;
elem.style.top = pos "px";
elem.style.left = pos "px";
}
}
function frame1() {
if (pos1 == 350) {
clearInterval(id1);
} else {
pos1 ;
elem1.style.top = pos1 "px";
elem1.style.right = pos1 "px";
}
}
}
</script>
В приведенном выше коде у меня есть 2 куба (div). При нажатии кнопки левый куб должен перемещаться слева направо до конца контейнера по диагонали, а правый куб должен перемещаться справа налево по диагонали до конца контейнера. Но только левый куб перемещается слева направо, а правый куб перемещается сверху вниз. Я хочу, чтобы правый куб перемещался справа налево по диагонали до конца контейнера. И это моя ссылка на песочницу. https://codesandbox.io/s/autumn-sun-uz961?file=/index.html
Ответ №1:
.класс animate1 имеет значение left:350px, сделайте это справа: 0, это будет работать.
function myMove() {
var elem = document.getElementById("animate");
var elem1 = document.getElementById("animate1");
var pos = 0;
var pos1 = 0;
var id = setInterval(frame, 5);
var id1 = setInterval(frame1, 5);
function frame() {
if (pos == 350) {
clearInterval(id);
} else {
pos ;
elem.style.top = pos "px";
elem.style.left = pos "px";
}
}
function frame1() {
if (pos1 == 350) {
clearInterval(id1);
} else {
pos1 ;
elem1.style.top = pos1 "px";
elem1.style.right = pos1 "px";
}
}
}
#container {
width: 400px;
height: 400px;
position: relative;
background: rgb(240, 240, 231);
}
#animate {
width: 50px;
height: 50px;
position: absolute;
background-color: red;
}
#animate1 {
width: 50px;
height: 50px;
right:0px;
position: absolute;
background-color: rgb(43, 1, 1);
}
<p>
<button onclick="myMove()">Click Me</button>
</p>
<div id="container">
<div id="animate"></div>
<div id="animate1"></div>
</div>
Ответ №2:
Обновите свой CSS и измените left: 350px;
на right: 0px;
для #animate1
:
function myMove() {
var elem = document.getElementById("animate");
var elem1 = document.getElementById("animate1");
var pos = 0;
var pos1 = 0;
var id = setInterval(frame, 5);
var id1 = setInterval(frame1, 5);
function frame() {
if (pos == 350) {
clearInterval(id);
} else {
pos ;
elem.style.top = pos "px";
elem.style.left = pos "px";
}
}
function frame1() {
if (pos1 == 350) {
clearInterval(id1);
} else {
pos1 ;
elem1.style.top = pos1 "px";
elem1.style.right = pos1 "px";
}
}
}
#container {
width: 400px;
height: 400px;
position: relative;
background: rgb(240, 240, 231);
}
#animate {
width: 50px;
height: 50px;
position: absolute;
background-color: red;
}
#animate1 {
width: 50px;
height: 50px;
right: 0px; /* instead of right : 350px; */
top: 2px;
position: absolute;
background-color: rgb(43, 1, 1);
}
<p>
<button onclick="myMove()">Click Me</button>
</p>
<div id="container">
<div id="animate"></div>
<div id="animate1"></div>
</div>
Ответ №3:
Не по теме, но знаете ли вы о переходах CSS?
function myMove() {
document.getElementById("animate").classList.toggle("move");
document.getElementById("animate1").classList.toggle("move");
}
// try clicking the boxes themselves
for (let item of document.querySelectorAll("#animate, #animate1")) {
item.onclick = function() {
item.classList.toggle("move");
}
}
#container {
width: 400px;
height: 400px;
position: relative;
background: rgb(240, 240, 231);
}
#animate {
width: 50px;
height: 50px;
top: 0;
left: 0;
position: absolute;
background-color: red;
transition: 3s linear;
}
#animate.move {
top: 350px;
left: 350px;
}
#animate1 {
width: 50px;
height: 50px;
right: 0px;
top: 2px;
position: absolute;
background-color: rgb(43, 1, 1);
transition: 3s linear;
}
#animate1.move {
top: 350px;
right: 350px;
}
<p>
<button onclick="myMove()">Click Me</button>
</p>
<div id="container">
<div id="animate"></div>
<div id="animate1"></div>
</div>