Skip to content

Commit 26d43b7

Browse files
committed
add header hidden control by scrolling
1 parent 8c527cf commit 26d43b7

File tree

4 files changed

+43
-6
lines changed

4 files changed

+43
-6
lines changed

src/components/global/header/header.js

+32-4
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ export default {
1111
},
1212
data() {
1313
return {
14-
brands: null,
15-
menus: null,
16-
others: null
14+
isActive: false,
15+
pageYOffset: 0
1716
}
1817
},
1918
mounted() {
@@ -30,10 +29,13 @@ export default {
3029
}
3130
resizeTimer = setTimeout(this.init, 200);
3231
});
32+
33+
window.addEventListener('scroll', this.handleScroll);
3334
},
3435
methods: {
3536
init() {
3637
media.init();
38+
3739
this.$refs.toggle.init();
3840
this.brands.style.display = 'none';
3941
this.menus.style.display = 'none';
@@ -44,18 +46,44 @@ export default {
4446
else if (media.isDesktop()) {
4547
this.others.style.display = '';
4648
}
49+
50+
this.isActive = false;
51+
4752
this.$emit('init-header');
4853
},
49-
toggleCollapse() {
54+
handleCollapse() {
55+
window.removeEventListener('scroll', this.handleScroll);
56+
57+
// HamburgerToggle
5058
this.$refs.toggle.toggle();
59+
5160
$(this.brands).slideToggle(speed);
5261
$(this.menus).slideToggle(speed);
5362

5463
if (media.isPhone()) {
5564
$(this.others).slideToggle(speed);
5665
}
5766

67+
this.isActive = !this.isActive;
68+
69+
if (!this.isActive) {
70+
window.addEventListener('scroll', this.handleScroll);
71+
}
72+
5873
this.$emit('toggle-header-collapse', speed);
74+
},
75+
handleScroll() {
76+
const oldPageYOffset = this.pageYOffset;
77+
this.pageYOffset = window.pageYOffset;
78+
79+
if ((oldPageYOffset < this.pageYOffset) && (this.pageYOffset > 90)) {
80+
// Scroll down
81+
this.$el.classList.add('hidden');
82+
}
83+
else {
84+
// Scroll up
85+
this.$el.classList.remove('hidden');
86+
}
5987
}
6088
}
6189
}

src/components/global/header/header.scss

+9
Original file line numberDiff line numberDiff line change
@@ -490,3 +490,12 @@
490490
}
491491
}
492492
}
493+
494+
#header {
495+
transform: translate3d(0, 0, 0);
496+
transition: .5s ease;
497+
498+
&.hidden {
499+
transform: translate3d(0, -100%, 0);
500+
}
501+
}

src/components/global/header/header.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<li class="header_gnav_other_contact"><w-tokyodo-a href="/contact/">お問い合わせ</w-tokyodo-a></li>
2222
</ul>
2323
<div class="header_gnav_btn">
24-
<a @click="toggleCollapse">
24+
<a @click="handleCollapse">
2525
<span class="header_gnav_btn_ttl">Menu</span>
2626
<hamburger-toggle ref="toggle" />
2727
</a>

src/layouts/web-frame.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export default {
5454
$(this.overlay).fadeToggle(speed);
5555
},
5656
closeHeaderCollapse() {
57-
this.$refs.globalHeader.toggleCollapse();
57+
this.$refs.globalHeader.handleCollapse();
5858
}
5959
}
6060
};

0 commit comments

Comments
 (0)