File tree 3 files changed +62
-8
lines changed
3 files changed +62
-8
lines changed Original file line number Diff line number Diff line change 1
1
<!DOCTYPE html>
2
2
< html lang ="en ">
3
+
3
4
< head >
4
5
< meta charset ="UTF-8 ">
5
6
< title > Click and Drag</ title >
6
7
< link rel ="stylesheet " href ="style.css ">
7
8
</ head >
9
+
8
10
< body >
9
11
< div class ="items ">
10
12
< div class ="item item1 "> 01</ div >
34
36
< div class ="item item25 "> 25</ div >
35
37
</ div >
36
38
37
- < script >
38
- </ script >
39
+ < script src ="typescripts.js "> </ script >
40
+
41
+ </ body >
39
42
40
- </ body >
41
- </ html >
43
+ </ html >
Original file line number Diff line number Diff line change
1
+ var slider = document . querySelector ( '.items' ) ;
2
+ var isDown = false ;
3
+ var startX , scrollLeft ;
4
+ slider . addEventListener ( 'mousedown' , function ( e ) {
5
+ isDown = true ;
6
+ slider . classList . add ( 'active' ) ;
7
+ startX = e . pageX - slider . offsetLeft ;
8
+ scrollLeft = slider . scrollLeft ;
9
+ } ) ;
10
+ slider . addEventListener ( 'mouseleave' , function ( ) {
11
+ isDown = false ;
12
+ slider . classList . remove ( 'active' ) ;
13
+ } ) ;
14
+ slider . addEventListener ( 'mouseup' , function ( ) {
15
+ isDown = false ;
16
+ slider . classList . remove ( 'active' ) ;
17
+ } ) ;
18
+ slider . addEventListener ( 'mousemove' , function ( e ) {
19
+ if ( ! isDown )
20
+ return ;
21
+ e . preventDefault ( ) ;
22
+ var x = e . pageX - slider . offsetLeft ;
23
+ var walk = ( x - startX ) * 3 ;
24
+ slider . scrollLeft = scrollLeft - walk ;
25
+ } ) ;
Original file line number Diff line number Diff line change 1
1
/**
2
2
* JavaScript30 by Wes Bos, https://javascript30.com/
3
3
* TypeScript implementation by Will Wager
4
- * Project:
5
- * Concepts:
6
- * Key takeaways:
7
- * Sidenotes:
4
+ * Project: Click and Drag to Scroll
5
+ * Concepts: Mouse events to set a div's horizontal scroll.
6
+ * Key takeaways: Drag and drop event pattern; isDown (isDrawing) pattern;
7
+ * Recalculate scroll from mousedown event.
8
+ * Sidenotes: Drag and dropping an element can be done similarly.
8
9
* Compilation command:
9
10
* tsc --removeComments --strictNullChecks --noImplicitAny --target es5 typescripts.ts
10
11
*/
12
+
13
+ const slider = document . querySelector ( '.items' ) ! as HTMLDivElement ;
14
+ let isDown = false ;
15
+ let startX : number , scrollLeft : number ;
16
+
17
+ slider . addEventListener ( 'mousedown' , ( e : MouseEvent ) => {
18
+ isDown = true ;
19
+ slider . classList . add ( 'active' ) ;
20
+ startX = e . pageX - slider . offsetLeft ;
21
+ scrollLeft = slider . scrollLeft ;
22
+ } ) ;
23
+ slider . addEventListener ( 'mouseleave' , ( ) => {
24
+ isDown = false ;
25
+ slider . classList . remove ( 'active' ) ;
26
+ } ) ;
27
+ slider . addEventListener ( 'mouseup' , ( ) => {
28
+ isDown = false ;
29
+ slider . classList . remove ( 'active' ) ;
30
+ } ) ;
31
+ slider . addEventListener ( 'mousemove' , ( e ) => {
32
+ if ( ! isDown ) return ;
33
+ e . preventDefault ( ) ;
34
+ const x = e . pageX - slider . offsetLeft ;
35
+ const walk = ( x - startX ) * 3 ;
36
+ slider . scrollLeft = scrollLeft - walk ;
37
+ } ) ;
You can’t perform that action at this time.
0 commit comments