mirror of
				https://github.com/Clortox/tylerperkins.xyz.git
				synced 2025-07-17 14:42:11 +00:00 
			
		
		
		
	Add terminal effect
This commit is contained in:
		
							parent
							
								
									b2f80c3a92
								
							
						
					
					
						commit
						eb57cc04f4
					
				
							
								
								
									
										13
									
								
								data/index.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								data/index.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| { | ||||
|     "Hobbies": [ | ||||
|         { | ||||
|             "value": "Software Architecture" | ||||
|         }, | ||||
|         { | ||||
|             "value": "Front End Development" | ||||
|         }, | ||||
|         { | ||||
|             "value": "Back End Development" | ||||
|         } | ||||
|     ] | ||||
| } | ||||
| @ -4,4 +4,18 @@ | ||||
|             {{ .Content }} | ||||
|         </div> | ||||
|     </div> | ||||
|     <div class="homepage-card"> | ||||
|         <h1 to-show="about-description" data-value="uname -a" class="typewriter">~ $ </h1> | ||||
|         <div class="about-grid"> | ||||
|             <div id="about-description"> | ||||
|             <p>Software developer with a passion for literally just about | ||||
|             everything.</p> | ||||
|             <p>Aspiring postmath; Jack of all trades, master of few.</p> | ||||
|             <p>Full stack developer at Etactics Inc.</p> | ||||
|             </div> | ||||
|             <div class="hobbies"> | ||||
|                 <p data-value="cat hobbies.txt | less" class="typewriter">~ $ </p> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| {{ end }} | ||||
|  | ||||
| @ -1,13 +1,16 @@ | ||||
| .background { | ||||
|     background-image: url("/img/webb-dark.png"); | ||||
|     position: absolute; | ||||
|     top: 0; | ||||
|     bottom: 0; | ||||
|     left: 0; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     height: 150%; | ||||
|     overflow-y: hidden; | ||||
|     z-index: -1; | ||||
| 
 | ||||
|     background-position: center; | ||||
|     background-repeat: repeat; | ||||
|     background-attachment: auto; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| /* Footer */ | ||||
| 
 | ||||
| footer { | ||||
|   background-color: rgba(11,11,11,0.9); | ||||
|   background-color: rgba(11,11,11,1); | ||||
|   color: white; | ||||
|   padding: 15px; | ||||
|   text-align: center; | ||||
|  | ||||
| @ -9,6 +9,11 @@ | ||||
|     font-display: swap; | ||||
| } | ||||
| 
 | ||||
| @keyframes blink-caret { | ||||
|     from, to { border-color: transparent } | ||||
|     50% { border-color: white } | ||||
| } | ||||
| 
 | ||||
| body { | ||||
|     overflow-x: hidden; | ||||
|     margin: 0; | ||||
| @ -52,7 +57,7 @@ html { | ||||
| } | ||||
| 
 | ||||
| .top-fade { | ||||
|     background: linear-gradient(rgba(11,11,12,1) 0%, rgba(11,11,12,0.9) 30%, rgba(0,0,0,0.1) 100%) | ||||
|     background: linear-gradient(rgba(11,11,12,1) 0%, rgba(11,11,12,0.9) 30%, rgba(0,0,0,0.0001) 100%) | ||||
| } | ||||
| 
 | ||||
| .dashed-bottom { | ||||
| @ -69,7 +74,35 @@ html { | ||||
|     top: 50%; | ||||
|     left: 50%; | ||||
|     transform: translate(-50%, -50%); | ||||
| } | ||||
| 
 | ||||
| .typewriter { | ||||
|     animation: blink-caret .75s step-end infinite; | ||||
|     border-right: .15em solid white; | ||||
|     display: inline; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| .homepage-card { | ||||
|     height: calc(100vh - 6vh); | ||||
|     width: calc(100vw  - 6vw); | ||||
|     padding: 1vh 1vw; | ||||
|     padding-top: 2vh; | ||||
|     background-color: rgba(11,11,12,0.4); | ||||
|     corner-radius: 10px; | ||||
|     margin: 2vh 2vw; | ||||
| } | ||||
| 
 | ||||
| .about-grid { | ||||
|     display: grid; | ||||
|     grid-template-columns: 65% 1fr; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| .hobbies { | ||||
|     background-color: black; | ||||
|     height: 100%; | ||||
|     padding: 10px; | ||||
| } | ||||
| 
 | ||||
| .page-header { | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" | ||||
| const typeWriterSpeed = 60; | ||||
| 
 | ||||
| window.onload = function() { | ||||
|     document.querySelectorAll(".scramble").forEach(item => { | ||||
| @ -11,6 +12,13 @@ window.onload = function() { | ||||
| 
 | ||||
|         parallax.style.transform = 'translateY(' + scrollPosition * .5 + 'px)'; | ||||
|     }) | ||||
|     document.querySelectorAll(".typewriter").forEach(item => { | ||||
|         observer.observe(item); | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| function sleep(milliseconds) { | ||||
|   return new Promise(resolve => setTimeout(resolve, milliseconds)); | ||||
| } | ||||
| 
 | ||||
| function scramble(event){ | ||||
| @ -39,4 +47,25 @@ function scrambleLetters(element) { | ||||
|     }, 30); | ||||
| } | ||||
| 
 | ||||
| async function typeWriter(element) { | ||||
|     let typeWriterText = element.getAttribute("data-value"); | ||||
|     let output = element.innerText; | ||||
| 
 | ||||
|     for(let i = 0; i < typeWriterText.length; ++i){ | ||||
|         output += typeWriterText.charAt(i); | ||||
|         // sleep for typeWriterSpeed milliseconds
 | ||||
|         await sleep(typeWriterSpeed); | ||||
|         element.innerText = output; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| let observer = new IntersectionObserver(function(entries) { | ||||
|     for (let entry of entries){ | ||||
|         // If the element is visible, start the animation
 | ||||
|         if(entry.isIntersecting) { | ||||
|             typeWriter(entry.target); | ||||
|             observer.unobserve(entry.target); | ||||
|         } | ||||
|     } | ||||
| }, { threshold: 0.7 }); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tyler Perkins
						Tyler Perkins