1
+ <!DOCTYPE html>
2
+ < title > scrollIntoViewIfNeeded test page</ title >
3
+
4
+ < style type ="text/css ">
5
+ body {
6
+ font : 14px Arial;
7
+ }
8
+ # scroll-area {
9
+ border : 1px solid # AAA ;
10
+ height : 7em ;
11
+ margin : 0 ;
12
+ overflow : auto;
13
+ padding : 0 ;
14
+ width : 400px ;
15
+ white-space : nowrap;
16
+ }
17
+ # scroll-area li {
18
+ background : # EEE ;
19
+ border-radius : 5px ;
20
+ display : inline-block;
21
+ list-style : none;
22
+ padding : 5px 10px ;
23
+ }
24
+ # scroll-area li : nth-child (2n+1) {
25
+ background : # DDD ;
26
+ text-align : right;
27
+ }
28
+ # scroll-area li .selected {
29
+ background : # BADA55 ;
30
+ }
31
+ </ style >
32
+
33
+ < h1 > scrollIntoViewIfNeeded test page</ h1 >
34
+
35
+ < ul id ="scroll-area "> < li class ="selected "> item #0</ li > < li > item #1</ li > < li > item #2</ li > < li > item #3</ li > < li > item #4</ li > < li > item #5</ li > < li > item #6</ li > < li > item #7</ li > < li > item #8</ li > < li > item #9</ li > < li > item #10</ li > < li > item #11</ li > < li > item #12</ li > < li > item #13</ li > < li > item #14</ li > < li > item #15</ li > < li > item #16</ li > < li > item #17</ li > < li > item #18</ li > < li > item #19</ li > < li > item #20</ li > < li > item #21</ li > < li > item #22</ li > < li > item #23</ li > < li > item #24</ li > < li > item #25</ li > < li > item #26</ li > < li > item #27</ li > < li > item #28</ li > < li > item #29</ li > < li > item #30</ li > < li > item #31</ li > < li > item #32</ li > < li > item #33</ li > < li > item #34</ li > < li > item #35</ li > < li > item #36</ li > < li > item #37</ li > < li > item #38</ li > < li > item #39</ li > < li > item #40</ li > < li > item #41</ li > < li > item #42</ li > < li > item #43</ li > < li > item #44</ li > < li > item #45</ li > < li > item #46</ li > < li > item #47</ li > < li > item #48</ li > < li > item #49</ li > < li > item #50</ li > < li > item #51</ li > < li > item #52</ li > < li > item #53</ li > < li > item #54</ li > < li > item #55</ li > < li > item #56</ li > < li > item #57</ li > < li > item #58</ li > < li > item #59</ li > < li > item #60</ li > < li > item #61</ li > < li > item #62</ li > < li > item #63</ li > < li > item #64</ li > < li > item #65</ li > < li > item #66</ li > < li > item #67</ li > < li > item #68</ li > < li > item #69</ li > < li > item #70</ li > < li > item #71</ li > < li > item #72</ li > < li > item #73</ li > < li > item #74</ li > < li > item #75</ li > < li > item #76</ li > < li > item #77</ li > < li > item #78</ li > < li > item #79</ li > < li > item #80</ li > < li > item #81</ li > < li > item #82</ li > < li > item #83</ li > < li > item #84</ li > < li > item #85</ li > < li > item #86</ li > < li > item #87</ li > < li > item #88</ li > < li > item #89</ li > < li > item #90</ li > < li > item #91</ li > < li > item #92</ li > < li > item #93</ li > < li > item #94</ li > < li > item #95</ li > < li > item #96</ li > < li > item #97</ li > < li > item #98</ li > < li > item #99</ li > </ ul >
36
+
37
+ < div id ="buttons-centerFalse ">
38
+ < span > < code > scrollIntoViewIfNeeded(false)</ code > to item : </ span >
39
+ < button data-item-idx ="0 "> #0</ button >
40
+ < button data-item-idx ="11 "> #11</ button >
41
+ < button data-item-idx ="22 "> #22</ button >
42
+ < button data-item-idx ="24 "> #24</ button >
43
+ < button data-item-idx ="26 "> #26</ button >
44
+ < button data-item-idx ="33 "> #33</ button >
45
+ < button data-item-idx ="44 "> #44</ button >
46
+ < button data-item-idx ="55 "> #55</ button >
47
+ < button data-item-idx ="66 "> #66</ button >
48
+ < button data-item-idx ="77 "> #77</ button >
49
+ < button data-item-idx ="82 "> #82</ button >
50
+ < button data-item-idx ="84 "> #84</ button >
51
+ < button data-item-idx ="86 "> #86</ button >
52
+ < button data-item-idx ="99 "> #99</ button >
53
+ </ div >
54
+
55
+ < div id ="buttons-centerTrue ">
56
+ < span > < code > scrollIntoViewIfNeeded(true)</ code > to item : </ span >
57
+ < button data-item-idx ="0 "> #0</ button >
58
+ < button data-item-idx ="11 "> #11</ button >
59
+ < button data-item-idx ="22 "> #22</ button >
60
+ < button data-item-idx ="24 "> #24</ button >
61
+ < button data-item-idx ="26 "> #26</ button >
62
+ < button data-item-idx ="33 "> #33</ button >
63
+ < button data-item-idx ="44 "> #44</ button >
64
+ < button data-item-idx ="55 "> #55</ button >
65
+ < button data-item-idx ="66 "> #66</ button >
66
+ < button data-item-idx ="77 "> #77</ button >
67
+ < button data-item-idx ="82 "> #82</ button >
68
+ < button data-item-idx ="84 "> #84</ button >
69
+ < button data-item-idx ="86 "> #86</ button >
70
+ < button data-item-idx ="99 "> #99</ button >
71
+ </ div >
72
+
73
+ < div id ="buttons-centerUndefined ">
74
+ < span > < code > scrollIntoViewIfNeeded(undefined)</ code > to item : </ span >
75
+ < button data-item-idx ="0 "> #0</ button >
76
+ < button data-item-idx ="11 "> #11</ button >
77
+ < button data-item-idx ="22 "> #22</ button >
78
+ < button data-item-idx ="24 "> #24</ button >
79
+ < button data-item-idx ="26 "> #26</ button >
80
+ < button data-item-idx ="33 "> #33</ button >
81
+ < button data-item-idx ="44 "> #44</ button >
82
+ < button data-item-idx ="55 "> #55</ button >
83
+ < button data-item-idx ="66 "> #66</ button >
84
+ < button data-item-idx ="77 "> #77</ button >
85
+ < button data-item-idx ="82 "> #82</ button >
86
+ < button data-item-idx ="84 "> #84</ button >
87
+ < button data-item-idx ="86 "> #86</ button >
88
+ < button data-item-idx ="99 "> #99</ button >
89
+ </ div >
90
+
91
+ < div id ="buttons-centerNoArgs ">
92
+ < span > < code > scrollIntoViewIfNeeded()</ code > to item : </ span >
93
+ < button data-item-idx ="0 "> #0</ button >
94
+ < button data-item-idx ="11 "> #11</ button >
95
+ < button data-item-idx ="22 "> #22</ button >
96
+ < button data-item-idx ="24 "> #24</ button >
97
+ < button data-item-idx ="26 "> #26</ button >
98
+ < button data-item-idx ="33 "> #33</ button >
99
+ < button data-item-idx ="44 "> #44</ button >
100
+ < button data-item-idx ="55 "> #55</ button >
101
+ < button data-item-idx ="66 "> #66</ button >
102
+ < button data-item-idx ="77 "> #77</ button >
103
+ < button data-item-idx ="82 "> #82</ button >
104
+ < button data-item-idx ="84 "> #84</ button >
105
+ < button data-item-idx ="86 "> #86</ button >
106
+ < button data-item-idx ="99 "> #99</ button >
107
+ </ div >
108
+
109
+ < script src ="../src/index.js "> </ script >
110
+ < script >
111
+ ( function ( ) {
112
+ var scrollArea = document . getElementById ( 'scroll-area' ) ,
113
+ buttonsCenterFalse = document . getElementById ( 'buttons-centerFalse' ) ,
114
+ buttonsCenterTrue = document . getElementById ( 'buttons-centerTrue' ) ,
115
+ buttonsCenterUndefined = document . getElementById ( 'buttons-centerUndefined' ) ,
116
+ buttonsCenterNoArgs = document . getElementById ( 'buttons-centerNoArgs' ) ,
117
+ scrollIntoViewIfNeededToItemAndSelect ;
118
+ scrollIntoViewIfNeededToItemAndSelect = function ( itemIdx , centerIfNeeded ) {
119
+ scrollArea . querySelector ( '.selected' ) . className = '' ;
120
+ // Allow us to really have difference bewteen scrollIntoViewIfNeeded() and scrollIntoViewIfNeeded(undefined)
121
+ if ( arguments . length === 1 ) {
122
+ scrollArea . children [ itemIdx ] . scrollIntoViewIfNeeded ( ) ;
123
+ } else {
124
+ scrollArea . children [ itemIdx ] . scrollIntoViewIfNeeded ( centerIfNeeded ) ;
125
+ }
126
+ scrollArea . children [ itemIdx ] . className = 'selected' ;
127
+ } ;
128
+ buttonsCenterFalse . addEventListener ( 'click' , function ( e ) {
129
+ if ( e . target . nodeName === 'BUTTON' ) {
130
+ scrollIntoViewIfNeededToItemAndSelect ( e . target . dataset . itemIdx , false ) ;
131
+ }
132
+ } , false ) ;
133
+ buttonsCenterTrue . addEventListener ( 'click' , function ( e ) {
134
+ if ( e . target . nodeName === 'BUTTON' ) {
135
+ scrollIntoViewIfNeededToItemAndSelect ( e . target . dataset . itemIdx , true ) ;
136
+ }
137
+ } , false ) ;
138
+ buttonsCenterUndefined . addEventListener ( 'click' , function ( e ) {
139
+ if ( e . target . nodeName === 'BUTTON' ) {
140
+ scrollIntoViewIfNeededToItemAndSelect ( e . target . dataset . itemIdx , undefined ) ;
141
+ }
142
+ } , false ) ;
143
+ buttonsCenterNoArgs . addEventListener ( 'click' , function ( e ) {
144
+ if ( e . target . nodeName === 'BUTTON' ) {
145
+ scrollIntoViewIfNeededToItemAndSelect ( e . target . dataset . itemIdx ) ;
146
+ }
147
+ } , false ) ;
148
+ } ) ( ) ;
149
+ </ script >
0 commit comments