shadow left/right on scroll
by tomik23
HTML
<div id="scrollbox" class="right-border">
<ul id="myDIV">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
</ul>
</div>
SCSS
#scrollbox {
overflow-x: auto;
width: 500px;
max-height: 220px;
margin: 0 auto;
ul {
display: flex;
flex-direction: row;
white-space: nowrap;
min-width: 100vw;
height: 130px;
margin: 0;
padding: 0;
list-style: none;
li {
display: flex;
justify-content: center;
align-items: center;
text-align: center;
min-width: 130px;
border: 1px solid red;
margin: 0 2px;
}
}
}
.left-border {
box-shadow: inset 10px 0 5px -5px rgba(0, 0, 0, 0.25);
}
.right-border {
box-shadow: inset -10px 0 5px -5px rgba(0, 0, 0, 0.25);
}
.center-border {
box-shadow: inset 10px 0 5px -5px rgba(0, 0, 0, 0.25), inset -10px 0 5px -5px rgba(0, 0, 0, 0.25);
}
JavaScript
function myFunction() {
let el = document.getElementById('scrollbox');
let div = document.getElementById('myDIV');
console.log(el.scrollLeft, div.scrollWidth, el.offsetWidth);
if(el.scrollLeft > 40) {
el.classList.add('center-border');
el.classList.remove('right-border');
} else {
el.classList.add('right-border');
el.classList.remove('center-border');
}
if(el.scrollLeft < div.scrollWidth - el.offsetWidth) {
el.classList.remove('left-border');
} else {
el.classList.add('left-border');
el.classList.remove('center-border');
}
}
document.getElementById('scrollbox').addEventListener('scroll', myFunction);