Skip to content

Commit c808bb9

Browse files
committed
Ex27 - Click and drag
1 parent 2757367 commit c808bb9

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

27 - Click and Drag/index.html

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Click and Drag</title>
6+
<link rel="stylesheet" href="style.css">
7+
</head>
8+
<body>
9+
<div class="items">
10+
<div class="item item1">01</div>
11+
<div class="item item2">02</div>
12+
<div class="item item3">03</div>
13+
<div class="item item4">04</div>
14+
<div class="item item5">05</div>
15+
<div class="item item6">06</div>
16+
<div class="item item7">07</div>
17+
<div class="item item8">08</div>
18+
<div class="item item9">09</div>
19+
<div class="item item10">10</div>
20+
<div class="item item11">11</div>
21+
<div class="item item12">12</div>
22+
<div class="item item13">13</div>
23+
<div class="item item14">14</div>
24+
<div class="item item15">15</div>
25+
<div class="item item16">16</div>
26+
<div class="item item17">17</div>
27+
<div class="item item18">18</div>
28+
<div class="item item19">19</div>
29+
<div class="item item20">20</div>
30+
<div class="item item21">21</div>
31+
<div class="item item22">22</div>
32+
<div class="item item23">23</div>
33+
<div class="item item24">24</div>
34+
<div class="item item25">25</div>
35+
</div>
36+
37+
<script src="script.js" charset="utf-8"></script>
38+
39+
</body>
40+
</html>

27 - Click and Drag/script.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
'use strict';
2+
3+
const slider = document.querySelector('.items');
4+
let isDown = false;
5+
let startX;
6+
let scrollLeft;
7+
8+
slider.addEventListener('mousedown', (event) => {
9+
isDown = true;
10+
slider.classList.add('active');
11+
startX = event.pageX - slider.offsetLeft;
12+
scrollLeft = slider.scrollLeft;
13+
});
14+
15+
slider.addEventListener('mouseup', () => {
16+
isDown = false;
17+
slider.classList.remove('active');
18+
});
19+
20+
slider.addEventListener('mouseleave', () => {
21+
isDown = false;
22+
slider.classList.remove('active');
23+
});
24+
25+
slider.addEventListener('mousemove', (event) => {
26+
if (!isDown) return; // eslint-disable-line curly
27+
//cancels the event without stoping further propagation of the event
28+
event.preventDefault(); // prevent the selection of text, etc. inside the element.
29+
const x = event.pageX - slider.offsetLeft;
30+
const walk = (x - startX) * 2;
31+
slider.scrollLeft = scrollLeft - walk;
32+
});

0 commit comments

Comments
 (0)