Guest User

Untitled

a guest
Oct 22nd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. function Navigation(navObj) {
  2. this.btn = document.getElementById(navObj.btnId)
  3. this.nav = document.getElementById(navObj.navigationId)
  4. this.overlay = document.createElement('div')
  5.  
  6. this.openNav_ = () => {
  7. document.body.appendChild(this.overlay)
  8. setTimeout(() => this.nav.classList.add(navObj.activeNavClass), 200)
  9. }
  10. this.hideNav_ = event => {
  11. if (document.querySelector(`.${navObj.overlayClass}`) && event.keyCode === 27 || event.type === 'click' || event.type === 'dragend') {
  12. this.nav.classList.remove(navObj.activeNavClass)
  13. if (this.nav.hasAttribute('style')) {
  14. this.nav.removeAttribute('style')
  15. }
  16. setTimeout(() => document.body.removeChild(this.overlay), 200)
  17. }
  18. }
  19. this.dragStart_ = e => {
  20. let start = 270 - e.screenX
  21. if( start < 270 ) this.nav.style.transform = `translateX(${-start}px)`
  22. }
  23.  
  24. this.events_ = () => {
  25. this.btn.addEventListener('click', this.openNav_);
  26. this.overlay.addEventListener('click', this.hideNav_);
  27. window.addEventListener('keyup', this.hideNav_);
  28. this.nav.addEventListener('drag', this.dragStart_);
  29. this.nav.addEventListener('dragend', this.hideNav_);
  30. }
  31. this.init_ = () => {
  32. this.events_();
  33. this.overlay.classList.add(navObj.overlayClass);
  34. console.log(navObj.navigationId)
  35. }
  36. this.init_();
  37. }
  38.  
  39. const nav = {
  40. btnId: 'nav-btn',
  41. navigationId: 'navigation',
  42. activeNavClass: 'active-navigation',
  43. overlayClass: 'overlay'
  44. }
  45.  
  46. const offCanvas = new Navigation(nav);
Add Comment
Please, Sign In to add comment