Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.idea
1 change: 0 additions & 1 deletion README.md

This file was deleted.

14 changes: 14 additions & 0 deletions move-boll/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Передвигать мяч по полю
важность: 5
Сделайте так, что при клике по полю мяч перемещался на место клика.

Требования:

Мяч после перелёта должен становиться центром ровно под курсор мыши, если это возможно без вылета за край поля.
CSS-анимация не обязательна, но желательна.
Мяч должен останавливаться у границ поля, ни в коем случае не вылетать за них.
При прокрутке страницы с полем ничего не должно ломаться.
Замечания:

Код не должен зависеть от конкретных размеров мяча и поля.
Вам пригодятся свойства event.clientX/event.clientY
17 changes: 17 additions & 0 deletions move-boll/images/ball.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions move-boll/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Move The Ball</title>
<link rel="stylesheet" href="style.css">
</head>
<body>

<div class="field">
<img class="ball" src="images/ball.svg">
</div>

<script type="text/javascript" src="main.js"></script>
</body>
</html>
25 changes: 25 additions & 0 deletions move-boll/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
'use strict';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good work!
But if we move our field to the centre of the screen, the code breaks down

const ball = document.querySelector('.ball');
const field = document.querySelector('.field');
const fieldY = field.getBoundingClientRect().top + field.clientTop;
const fieldX = field.getBoundingClientRect().left + field.clientLeft;
const ballY = ball.clientHeight/2;
const ballX = ball.clientWidth/2;
field.addEventListener('click', function(event) {
ball.style.left = event.clientX - fieldX - ballY +"px";
ball.style.top = event.clientY - fieldY - ballX +"px";
if (event.clientX > field.clientWidth) {
ball.style.left = field.clientWidth - fieldX - ballX + 'px';
}
if (event.clientY > field.clientHeight) {
ball.style.top = field.clientHeight - fieldY - ballY +"px";
}
if (event.clientX < fieldX + ballX) {
ball.style.left = fieldX - ballX + 'px';
}
if (event.clientY < fieldY + ballY) {
ball.style.top = fieldY - ballY + 'px';
}
});


19 changes: 19 additions & 0 deletions move-boll/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
.field {
position: relative;
width: 200px;
height: 150px;
border: 10px solid black;
background: #67d30b;
cursor: pointer;
overflow: hidden;
}
.ball {
position: absolute;
left: 0;
top: 0;
width: 40px;
height: 40px;
transition: all 1s;
}


14 changes: 14 additions & 0 deletions tree_from_object/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Tree</title>
<link rel="stylesheet" href="style.css">
</head>
<body>

<div id="container"></div>

<script type="text/javascript" src="main.js"></script>
</body>
</html>
35 changes: 35 additions & 0 deletions tree_from_object/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
'use strict';
const container = document.getElementById('container');
let objectTree = {
"Рыбы": {
"Форель": {},
"Щука": {}
},

"Деревья": {
"Хвойные": {
"Лиственница": {},
"Ель": {}
},
"Цветковые": {
"Берёза": {},
"Тополь": {}
}
}
};

function createTree(element, object) {
const ul = document.createElement("ul");
element.append(ul);
for (const tree in object) {
const li = document.createElement("li");
li.innerHTML = tree;
ul.append(li);

if (Object.keys(object[tree]).length > 0) {
createTree(li, object[tree]);
}
}
}

createTree(container, objectTree);
Empty file added tree_from_object/style.css
Empty file.