将HTML/CSS/JS模板转Angular后自定义JS功能失效求助
Angular项目自定义JS功能失效问题
我正在将一套HTML、CSS、JS模板转换为Angular项目,但自定义JS代码里的ScrollReveal滚动动画和导航激活链接切换功能无法正常运行,不过弹窗这类代码是可以正常执行的。作为Angular新手,我试过把JS代码放到JSON文件、index.html里,还有用内联形式,都没能解决问题。
我的代码托管在GitHub仓库:my-portfolio
index.html代码
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>MyPortfolio</title> <base href="/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> <link href='https://cdn.jsdelivr.net/npm/boxicons@2.0.5/css/boxicons.min.css' rel='stylesheet'> </head> <body> <app-root></app-root> <script src="https://unpkg.com/scrollreveal"></script> <script src="src/assets/main.js"></script> </body> </html>
main.js代码
const showMenu = (toggleId, navId) =>{ const toggle = document.getElementById(toggleId), nav = document.getElementById(navId) if(toggle && nav){ toggle.addEventListener('click', ()=>{ nav.classList.toggle('show') }) } } showMenu('nav-toggle','nav-menu') /*===== REMOVE MENU MOBILE =====*/ const navLink = document.querySelectorAll('.nav__link') function linkAction(){ const navMenu = document.getElementById('nav-menu') navMenu.classList.remove('show') } navLink.forEach(n => n.addEventListener('click', linkAction)) /*===== SCROLL SECTIONS ACTIVE LINK =====*/ const sections = document.querySelectorAll('section[id]') window.addEventListener('scroll', scrollActive) function scrollActive(){ const scrollY = window.pageYOffset sections.forEach(current =>{ const sectionHeight = current.offsetHeight const sectionTop = current.offsetTop - 50; sectionId = current.getAttribute('id') if(scrollY > sectionTop && scrollY <= sectionTop + sectionHeight){ document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.add('active') }else{ document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.remove('active') } }) } /*===== SCROLL REVEAL ANIMATION =====*/ const sr = ScrollReveal({ origin: 'top', distance: '80px', duration: 2000, reset: true }) /*SCROLL HOME*/ sr.reveal('.home__title', {}) sr.reveal('.home__scroll', {delay: 200}) sr.reveal('.home__img', {origin:'right', delay: 400}) /*SCROLL ABOUT*/ sr.reveal('.about__img', {delay: 500}) sr.reveal('.about__subtitle', {delay: 300}) sr.reveal('.about__profession', {delay: 400}) sr.reveal('.about__text', {delay: 500}) sr.reveal('.about__social-icon', {delay: 600, interval: 200}) /*SCROLL SKILLS*/ sr.reveal('.skills__subtitle', {}) sr.reveal('.skills__name', {distance: '20px', delay: 50, interval: 100}) sr.reveal('.skills__img', {delay: 400}) /*SCROLL PORTFOLIO*/ sr.reveal('.portfolio__img', {interval: 200}) /*SCROLL CONTACT*/ sr.reveal('.contact__subtitle', {}) sr.reveal('.contact__text', {interval: 200}) sr.reveal('.contact__input', {delay: 400}) sr.reveal('.contact__button', {delay: 600})
内容的提问来源于stack exchange,提问作者Jay Pearson
相关产品推荐
相关产品推荐

