Header.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <header class="site-header site-header__header-one">
  3. <nav class="navbar navbar-expand-lg navbar-light header-navigation stricky">
  4. <div class="container clearfix">
  5. <!-- Brand and toggle get grouped for better mobile display -->
  6. <div class="logo-box clearfix">
  7. <a class="navbar-brand" href="/">
  8. <img src="/assets/images/resources/logo-dark.png" class="main-logo" width="119" alt="Awesome Image" />
  9. </a>
  10. <button class="menu-toggler" data-target=".main-navigation">
  11. <span class="fa fa-bars"></span>
  12. </button>
  13. </div>
  14. <!-- Collect the nav links, forms, and other content for toggling -->
  15. <div class="main-navigation">
  16. <ul class=" one-page-scroll-menu navigation-box">
  17. <li class="current scrollToLink">
  18. <a href="#banner">主页</a>
  19. </li>
  20. <li class="scrollToLink">
  21. <a href="#features">网络赋能</a>
  22. </li>
  23. <!--
  24. <li class="scrollToLink">
  25. <a href="#calltoactiontwo">智慧门店</a>
  26. </li>
  27. <li class="scrollToLink">
  28. <a href="#calltoactionthree">导购驱动</a>
  29. </li> -->
  30. <li class="scrollToLink">
  31. <a href="#featurestwo">我们的服务</a>
  32. </li>
  33. <li class="scrollToLink">
  34. <a href="#counter">我们的客户</a>
  35. </li>
  36. <li class="scrollToLink">
  37. <a href="#pricing">我们的方式</a>
  38. </li>
  39. </ul>
  40. </div><!-- /.navbar-collapse -->
  41. <div class="right-side-box">
  42. <a class="thm-btn header__cta-btn" href="#lxfs"><span>联系我们</span></a>
  43. </div><!-- /.right-side-box -->
  44. </div>
  45. <!-- /.container -->
  46. </nav>
  47. </header>
  48. </template>
  49. <script>
  50. export default {
  51. name: "Header",
  52. mounted() {
  53. // sticky menu
  54. $(window).on('scroll', function () {
  55. // checks if window is scrolled more than 500px, adds/removes solid class
  56. if ($(this).scrollTop() > 60) {
  57. $('.stricky').addClass('original');
  58. $('.stricky').addClass('stricked-menu');
  59. } else {
  60. $('.navbar').removeClass('original');
  61. $('.stricky').removeClass('stricked-menu');
  62. }
  63. });
  64. if ($('.main-navigation .navigation-box').length) {
  65. var subMenu = $('.main-navigation .sub-menu');
  66. subMenu.parent('li').children('a').append(function() {
  67. return '<button class="sub-nav-toggler"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>';
  68. });
  69. var mainNavToggler = $('.header-navigation .menu-toggler');
  70. var subNavToggler = $('.main-navigation .sub-nav-toggler');
  71. mainNavToggler.on('click', function() {
  72. var Self = $(this);
  73. var menu = Self.data('target');
  74. $(menu).slideToggle();
  75. $(menu).toggleClass('showen');
  76. return false;
  77. });
  78. subNavToggler.on('click', function() {
  79. var Self = $(this);
  80. Self.parent().parent().children('.sub-menu').slideToggle();
  81. return false;
  82. });
  83. }
  84. if ($('.scroll-to-target').length) {
  85. $(".scroll-to-target").on('click', function() {
  86. var target = $(this).attr('data-target');
  87. // animate
  88. $('html, body').animate({
  89. scrollTop: $(target).offset().top
  90. }, 1000);
  91. return false;
  92. });
  93. }
  94. function SmoothMenuScroll() {
  95. var anchor = $('.scrollToLink');
  96. if (anchor.length) {
  97. anchor.children('a').bind('click', function(event) {
  98. if ($(window).scrollTop() > 10) {
  99. var headerH = '67';
  100. } else {
  101. var headerH = '100';
  102. }
  103. var target = $(this);
  104. $('html, body').stop().animate({
  105. scrollTop: $(target.attr('href')).offset().top - headerH + 'px'
  106. }, 1200, 'easeInOutExpo');
  107. anchor.removeClass('current');
  108. target.parent().addClass('current');
  109. event.preventDefault();
  110. });
  111. }
  112. }
  113. SmoothMenuScroll();
  114. function OnePageMenuScroll() {
  115. var windscroll = $(window).scrollTop();
  116. if (windscroll >= 100) {
  117. var menuAnchor = $('.one-page-scroll-menu .scrollToLink').children('a');
  118. menuAnchor.each(function() {
  119. // grabing section id dynamically
  120. var sections = $(this).attr('href');
  121. $(sections).each(function() {
  122. // checking is scroll bar are in section
  123. if ($(this).offset().top <= windscroll + 100) {
  124. // grabing the dynamic id of section
  125. var Sectionid = $(sections).attr('id');
  126. // removing current class from others
  127. $('.one-page-scroll-menu').find('li').removeClass('current');
  128. // adding current class to related navigation
  129. $('.one-page-scroll-menu').find('a[href*=\\#' + Sectionid + ']').parent().addClass('current');
  130. }
  131. });
  132. });
  133. } else {
  134. $('.one-page-scroll-menu li.current').removeClass('current');
  135. $('.one-page-scroll-menu li:first').addClass('current');
  136. }
  137. }
  138. if ($('.side-menu__toggler').length) {
  139. $('.side-menu__toggler').on('click', function(e) {
  140. $('.side-menu__block').addClass('active');
  141. e.preventDefault();
  142. });
  143. }
  144. if ($('.side-menu__block-overlay').length) {
  145. $('.side-menu__block-overlay').on('click', function(e) {
  146. $('.side-menu__block').removeClass('active');
  147. e.preventDefault();
  148. });
  149. }
  150. $(window).on('scroll', function() {
  151. if ($('.stricked-menu').length) {
  152. var headerScrollPos = 100;
  153. var stricky = $('.stricked-menu');
  154. if ($(window).scrollTop() > headerScrollPos) {
  155. stricky.addClass('stricky-fixed');
  156. } else if ($(this).scrollTop() <= headerScrollPos) {
  157. stricky.removeClass('stricky-fixed');
  158. }
  159. }
  160. OnePageMenuScroll();
  161. });
  162. }
  163. }
  164. </script>
  165. <style scoped>
  166. </style>