Skip to content

Commit b38e9c7

Browse files
committed
[design] animate menu sub nav
1 parent adbf68c commit b38e9c7

File tree

3 files changed

+39
-17
lines changed

3 files changed

+39
-17
lines changed

‎src/css/menu.css‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@
165165
.menu-nav .menu-nav-tab{
166166
padding-left:calc(var(--menu-space) *2);
167167
padding-right:calc(var(--menu-space) *2);
168-
height:3.5em;
169168
justify-content: flex-start;
170169
}
171170

@@ -174,6 +173,13 @@
174173
display: flex;
175174
flex-direction: column;
176175
flex-wrap: nowrap;
176+
overflow: hidden;
177+
height:0;
178+
transition: height var(--layout-timing-fast);
179+
}
180+
181+
.menu-nav-body.active{
182+
height:var(--menu-nav-body-height);
177183
}
178184

179185
.is-edge .menu-nav-body{
@@ -214,6 +220,7 @@
214220
padding-left:calc(var(--menu-space) *5);
215221
border-radius:0;
216222
height:3em;
223+
min-height:3em;
217224
width:100%;
218225
line-height:1;
219226
justify-content: flex-start;
@@ -246,6 +253,5 @@
246253
.menu{
247254
width:60vw;
248255
max-width:60em;
249-
max-height:60em;
250256
}
251257
}

‎src/html/menu/menu-nav.html‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<divclass="menu-nav">
22
<divclass="menu-nav-item">
33
<buttonclass="control-menu-layout menu-nav-tab button active" tabindex="-1">Layout</button>
4-
<divclass="menu-nav-body menu-nav-body-layout">
4+
<divclass="menu-nav-body menu-nav-body-layout active">
55
<ahref="#menu-content-layout-scaling" class="menu-nav-sub button button-small" tabindex="-1">Global scaling</a>
66
<ahref="#menu-content-layout-area" class="menu-nav-sub button button-small" tabindex="-1">Area</a>
77
<ahref="#menu-content-layout-order" class="menu-nav-sub button button-small" tabindex="-1">Area order</a>
@@ -12,7 +12,7 @@
1212
</div>
1313
<divclass="menu-nav-item">
1414
<buttonclass="control-menu-header menu-nav-tab button" tabindex="-1">Header</button>
15-
<divclass="menu-nav-body menu-nav-body-header is-hidden">
15+
<divclass="menu-nav-body menu-nav-body-header active">
1616
<ahref="#menu-content-header-area" class="menu-nav-sub button button-small" tabindex="-1">Area</a>
1717
<ahref="#menu-content-header-greeting" class="menu-nav-sub button button-small" tabindex="-1">Greeting</a>
1818
<ahref="#menu-content-header-transitional" class="menu-nav-sub button button-small" tabindex="-1">Transitional words</a>
@@ -29,15 +29,15 @@
2929
</div>
3030
<divclass="menu-nav-item">
3131
<buttonclass="control-menu-groups menu-nav-tab button" tabindex="-1">Groups</button>
32-
<divclass="menu-nav-body menu-nav-body-groups is-hidden">
32+
<divclass="menu-nav-body menu-nav-body-groups active">
3333
<ahref="#menu-content-groups-names" class="menu-nav-sub button button-small" tabindex="-1">Names</a>
3434
<ahref="#menu-content-groups-order" class="menu-nav-sub button button-small" tabindex="-1">Order</a>
3535
<ahref="#menu-content-groups-border" class="menu-nav-sub button button-small" tabindex="-1">Border</a>
3636
</div>
3737
</div>
3838
<divclass="menu-nav-item">
3939
<buttonclass="control-menu-bookmarks menu-nav-tab button" tabindex="-1">Bookmarks</button>
40-
<divclass="menu-nav-body menu-nav-body-bookmarks is-hidden">
40+
<divclass="menu-nav-body menu-nav-body-bookmarks active">
4141
<ahref="#menu-content-bookmarks-area" class="menu-nav-sub button button-small" tabindex="-1">Area</a>
4242
<ahref="#menu-content-bookmarks-bookmarks" class="menu-nav-sub button button-small" tabindex="-1">Bookmarks</a>
4343
<ahref="#menu-content-bookmarks-color" class="menu-nav-sub button button-small" tabindex="-1">Background colour</a>
@@ -50,7 +50,7 @@
5050
</div>
5151
<divclass="menu-nav-item">
5252
<buttonclass="control-menu-theme menu-nav-tab button" tabindex="-1">Theme</button>
53-
<divclass="menu-nav-body menu-nav-body-theme is-hidden">
53+
<divclass="menu-nav-body menu-nav-body-theme active">
5454
<ahref="#menu-content-theme-preset" class="menu-nav-sub button button-small" tabindex="-1">Preset</a>
5555
<ahref="#menu-content-theme-saved" class="menu-nav-sub button button-small" tabindex="-1">Saved</a>
5656
<ahref="#menu-content-theme-style" class="menu-nav-sub button button-small" tabindex="-1">Style</a>
@@ -64,14 +64,14 @@
6464
</div>
6565
<divclass="menu-nav-item">
6666
<buttonclass="control-menu-background menu-nav-tab button" tabindex="-1">Background</button>
67-
<divclass="menu-nav-body menu-nav-body-background is-hidden">
67+
<divclass="menu-nav-body menu-nav-body-background active">
6868
<ahref="#menu-content-background-color" class="menu-nav-sub button button-small" tabindex="-1">Colour</a>
6969
<ahref="#menu-content-background-image" class="menu-nav-sub button button-small" tabindex="-1">Image</a>
7070
</div>
7171
</div>
7272
<divclass="menu-nav-item">
7373
<buttonclass="control-menu-data menu-nav-tab button" tabindex="-1">Data</button>
74-
<divclass="menu-nav-body menu-nav-body-data is-hidden">
74+
<divclass="menu-nav-body menu-nav-body-data active">
7575
<ahref="#menu-content-data-restore" class="menu-nav-sub button button-small" tabindex="-1">Restore</a>
7676
<ahref="#menu-content-data-backup" class="menu-nav-sub button button-small" tabindex="-1">Backup</a>
7777
<ahref="#menu-content-data-clear" class="menu-nav-sub button button-small" tabindex="-1">Clear</a>

‎src/js/menu.js‎

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,34 +37,48 @@ var menu = (function(){
3737

3838
render.nav=function(name){
3939
varallMenuNavTab=helper.eA(".menu-nav-tab");
40-
varallMenuNavBody=helper.eA(".menu-nav-body");
4140
varallMenuContentArea=helper.eA(".menu-content");
4241

4342
allMenuNavTab.forEach(function(arrayItem,index){
4443
helper.removeClass(arrayItem,"active");
4544
});
46-
allMenuNavBody.forEach(function(arrayItem,index){
47-
helper.addClass(arrayItem,"is-hidden");
48-
});
4945
allMenuContentArea.forEach(function(arrayItem,index){
5046
helper.addClass(arrayItem,"is-hidden");
5147
});
5248

5349
varcontrol=helper.e(".control-menu-"+name);
54-
varbody=helper.e(".menu-nav-body-"+name);
5550
varcontent=helper.e(".menu-content-"+name);
5651

5752
if(control){
5853
helper.addClass(control,"active");
5954
};
60-
if(body){
61-
helper.removeClass(body,"is-hidden");
62-
};
6355
if(content){
6456
helper.removeClass(content,"is-hidden");
6557
};
6658
};
6759

60+
render.subnav={
61+
calculate: function(){
62+
varallMenuNavBody=helper.eA(".menu-nav-body");
63+
allMenuNavBody.forEach(function(arrayItem,index){
64+
arrayItem.setAttribute("style","--menu-nav-body-height:"+arrayItem.getBoundingClientRect().height+"px;");
65+
if(index>0){
66+
helper.removeClass(arrayItem,"active");
67+
};
68+
});
69+
},
70+
toggle: function(name){
71+
varallMenuNavBody=helper.eA(".menu-nav-body");
72+
allMenuNavBody.forEach(function(arrayItem,index){
73+
helper.removeClass(arrayItem,"active");
74+
});
75+
varbody=helper.e(".menu-nav-body-"+name);
76+
if(body){
77+
helper.addClass(body,"active");
78+
};
79+
}
80+
};
81+
6882
render.tabindex={
6983
toggle: function(){
7084
varmenu=helper.e(".menu");
@@ -104,6 +118,7 @@ var menu = (function(){
104118

105119
varnav=function(name){
106120
render.nav(name);
121+
render.subnav.toggle(name);
107122
render.scrollToTop(name);
108123
};
109124

@@ -144,6 +159,7 @@ var menu = (function(){
144159
mod.close();
145160
render.close();
146161
render.removeStyle();
162+
render.subnav.calculate();
147163
};
148164

149165
return{

0 commit comments

Comments
(0)