Easy smooth scrolling instead of jumping to location on page
This commit is contained in:
		
							parent
							
								
									ab6b288f58
								
							
						
					
					
						commit
						fc38127066
					
				
							
								
								
									
										117
									
								
								scroll.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								scroll.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,117 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>
 | 
			
		||||
<head>
 | 
			
		||||
  <meta charset="utf-8">
 | 
			
		||||
  <meta name="viewport" content="width=device-width">
 | 
			
		||||
  <title>Custom Switch</title>
 | 
			
		||||
  <style>
 | 
			
		||||
    .container {
 | 
			
		||||
      margin-left: auto;
 | 
			
		||||
      margin-right: auto;
 | 
			
		||||
      padding: 25px;
 | 
			
		||||
      width: 500px;
 | 
			
		||||
      height: 700px;
 | 
			
		||||
      border: 1px solid black;
 | 
			
		||||
      overflow: scroll;
 | 
			
		||||
      position: relative;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #fab {
 | 
			
		||||
      text-align: right;
 | 
			
		||||
      position: sticky;
 | 
			
		||||
      bottom: 0px;
 | 
			
		||||
      right: 25px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #fab button {
 | 
			
		||||
      width: 50px;
 | 
			
		||||
      height: 50px;
 | 
			
		||||
      background: rgba(0, 0, 255, 1);
 | 
			
		||||
      border: 0px;
 | 
			
		||||
      border-radius: 100%;
 | 
			
		||||
      display: none; /* Dynamic */
 | 
			
		||||
    }
 | 
			
		||||
  </style>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
  <div id="container" class="container">
 | 
			
		||||
    <h1>Scrolling Demo</h1>
 | 
			
		||||
    <div id="text">
 | 
			
		||||
      <!-- Populated with Random Lorum Ipsum -->
 | 
			
		||||
    </div>
 | 
			
		||||
    <div id='fab'>
 | 
			
		||||
      <button>⬆️</button>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
  h1 {
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    font-size: 2em;
 | 
			
		||||
    background-color: rgba(255, 0, 0, 0.5);
 | 
			
		||||
    padding-top: inherit;
 | 
			
		||||
    height: 2em;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @media(prefers-reduced-motion: no-preference) {
 | 
			
		||||
    .container {
 | 
			
		||||
      scroll-behavior: smooth
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  const fab = document.querySelector( '#fab button' )
 | 
			
		||||
  const container = document.getElementById('container')
 | 
			
		||||
  
 | 
			
		||||
  container.addEventListener('scroll', (event) => {
 | 
			
		||||
    if(container.scrollTop < 50){
 | 
			
		||||
      fab.style.display = "none";
 | 
			
		||||
    } else {
 | 
			
		||||
      fab.style.display = "inline";
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
  
 | 
			
		||||
  // Jumps by Default
 | 
			
		||||
  fab.addEventListener('click', (event) => {
 | 
			
		||||
    container.scrollTop = 0
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  const getNewParagraph = textGenerator()
 | 
			
		||||
  const anchorDiv = document.getElementById('text')
 | 
			
		||||
  for(let i = 0; i < 15; i++){
 | 
			
		||||
    const newElem = document.createElement( "p" )
 | 
			
		||||
    newElem.appendChild( getNewParagraph.next().value )
 | 
			
		||||
    anchorDiv.appendChild( newElem )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function* textGenerator(){
 | 
			
		||||
    while(true){
 | 
			
		||||
      let numWords = Math.floor(Math.random() * 50)
 | 
			
		||||
      let text = getText(numWords)
 | 
			
		||||
      yield document.createTextNode(text)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function getText(numWords){
 | 
			
		||||
      let string = ''
 | 
			
		||||
      for(let i = 0; i < numWords; i++){
 | 
			
		||||
        string += getRandomWord() + ' ';
 | 
			
		||||
      }
 | 
			
		||||
      return string;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function getRandomWord(){
 | 
			
		||||
      let options = ['lorum', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit' ]
 | 
			
		||||
      return options[Math.floor(Math.random() * options.length-1)]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
</html>
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user