added in typewriter effect to header
This commit is contained in:
@@ -190,6 +190,17 @@ i.fa-chevron-down {
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
div h1 span {
|
||||
visibility: visible;
|
||||
animation: caret 1s steps(1) infinite;
|
||||
}
|
||||
|
||||
@keyframes caret {
|
||||
50% {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 75em) {
|
||||
nav {
|
||||
display: block;
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
</ul>
|
||||
</nav>
|
||||
<div>
|
||||
<h1>full stack developer_</h1>
|
||||
<h1>full stack developer</h1>
|
||||
<a href="" class="btn btnPrimary boxShadowIn boxShadowOut">Contact Me</a>
|
||||
<a href="#about"><i class="fas fa-chevron-down"></i></a>
|
||||
</div>
|
||||
|
||||
+60
-10
@@ -1,6 +1,9 @@
|
||||
// scrolling effect
|
||||
const scrollLimit = 150;
|
||||
window.onscroll = () =>
|
||||
{
|
||||
if (document.body.scrollTop >= 150 || document.documentElement.scrollTop >= 150)
|
||||
// check if scrolled past limit if so add scrolled class to change background of nav
|
||||
if (document.body.scrollTop >= scrollLimit || document.documentElement.scrollTop >= scrollLimit)
|
||||
{
|
||||
document.querySelector("nav").classList.add("scrolled");
|
||||
}
|
||||
@@ -8,9 +11,9 @@ window.onscroll = () =>
|
||||
{
|
||||
document.querySelector("nav").classList.remove("scrolled");
|
||||
}
|
||||
|
||||
let current = "";
|
||||
|
||||
|
||||
let current = ""; //id of current section scrolled to, set to "" if at top
|
||||
// go through all sections and find current section id scrolled to
|
||||
document.querySelectorAll("section").forEach((section) =>
|
||||
{
|
||||
const sectionTop = section.offsetTop;
|
||||
@@ -19,17 +22,64 @@ window.onscroll = () =>
|
||||
current = section.getAttribute("id");
|
||||
}
|
||||
});
|
||||
|
||||
document.querySelectorAll("nav ul li").forEach((li) =>
|
||||
|
||||
// go through all nav links, remove active class and add it to the link whose href matches the current id scrolled
|
||||
// to
|
||||
document.querySelectorAll("nav ul li a").forEach((a) =>
|
||||
{
|
||||
li.firstChild.classList.remove("active");
|
||||
if (li.firstChild.href.includes(current) && current !== "")
|
||||
a.classList.remove("active");
|
||||
if (a.href.includes(current) && current !== "")
|
||||
{
|
||||
li.firstChild.classList.add("active");
|
||||
a.classList.add("active");
|
||||
}
|
||||
else if (current === "")
|
||||
{
|
||||
document.querySelector("nav ul li").firstChild.classList.add("active");
|
||||
document.querySelector("nav ul li a").classList.add("active"); // at the top
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () =>
|
||||
{
|
||||
// array with texts to type in typewriter
|
||||
var dataText = [ "full stack developer", "web designer", "student", "gamer", "drummer"];
|
||||
|
||||
// type one text in the typwriter
|
||||
// keeps calling itself until the text is finished
|
||||
function typeWriter(text, i, fnCallback) {
|
||||
// chekc if text isn't finished yet
|
||||
if (i < (text.length)) {
|
||||
// add next character to h1
|
||||
document.querySelector("header div h1").innerHTML = text.substring(0, i+1) +'<span aria-hidden="true">_</span>';
|
||||
|
||||
// wait for a while and call this function again for next character
|
||||
setTimeout(function() {
|
||||
typeWriter(text, i + 1, fnCallback)
|
||||
}, 100);
|
||||
}
|
||||
// text finished, call callback if there is a callback function
|
||||
else if (typeof fnCallback == 'function') {
|
||||
// call callback after timeout
|
||||
setTimeout(fnCallback, 700);
|
||||
}
|
||||
}
|
||||
// start a typewriter animation for a text in the dataText array
|
||||
function StartTextAnimation(i) {
|
||||
if (typeof dataText[i] === 'undefined'){
|
||||
setTimeout(function() {
|
||||
StartTextAnimation(0);
|
||||
}, 1000);
|
||||
// StartTextAnimation(0);
|
||||
}
|
||||
else if (i < dataText[i].length) {
|
||||
// text exists! start typewriter animation
|
||||
typeWriter(dataText[i], 0, function(){
|
||||
// after callback (and whole text has been animated), start next text
|
||||
StartTextAnimation(i + 1);
|
||||
});
|
||||
}
|
||||
}
|
||||
// start the text animation
|
||||
StartTextAnimation(0);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user