Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 3cc89d0

Browse files
robertmesserleajoslin
authored andcommitted
perf(tabs): replaces left/width animation with transform
1 parent 002e52b commit 3cc89d0

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

src/components/tabs/_tabs.scss

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,23 @@ md-tabs-ink-bar {
9797
height: 2px;
9898
margin-top: -2px;
9999
transform: scaleX(1);
100-
transition: left 0.5s $swift-ease-in-out-timing-function,
101-
width 0.5s $swift-ease-in-out-timing-function,
102-
transform 0.25s $swift-ease-out-timing-function;
100+
transition: transform 0.5s $swift-ease-in-out-timing-function;
101+
transform-origin: 0 0;
102+
md-tabs-ink-bar-inner {
103+
transition: transform 0.25s $swift-ease-out-timing-function;
104+
transform: scaleX(1);
105+
transform-origin: 50% 50%;
106+
position: absolute;
107+
top: 0;
108+
left: 0;
109+
right: 0;
110+
bottom: 0;
111+
}
103112
&.md-ink-bar-grow {
104-
transition: left 0.5s $swift-ease-in-out-timing-function,
105-
width 0.5s $swift-ease-in-out-timing-function,
106-
transform 0.25s $swift-ease-in-timing-function;
107-
transform: scaleX(1.35);
113+
md-tabs-ink-bar-inner {
114+
transition: transform 0.25s $swift-ease-in-timing-function;
115+
transform: scaleX(1.35);
116+
}
108117
}
109118
}
110119

src/components/tabs/js/inkBarDirective.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ function MdTabInkDirective($mdConstant, $window, $$rAF, $timeout) {
1414
return {
1515
restrict: 'E',
1616
require: ['^?mdNoBar', '^mdTabs'],
17+
template: '<md-tabs-ink-bar-inner></md-tabs-ink-bar-inner>',
1718
link: postLink
1819
};
1920

@@ -38,15 +39,14 @@ function MdTabInkDirective($mdConstant, $window, $$rAF, $timeout) {
3839
var count = tabsCtrl.count();
3940
var scale = 1 / count;
4041
var left = tabsCtrl.indexOf(selected);
42+
element.css($mdConstant.CSS.TRANSFORM, 'scaleX(' + scale + ') ' +
43+
'translate3d(' + left * 100 + '%,0,0)');
4144
element.addClass('md-ink-bar-grow');
42-
element.css({
43-
width: Math.round(scale * 100) + '%',
44-
left: (left / scale) + '%'
45-
});
4645
if (timeout) $timeout.cancel(timeout);
4746
timeout = $timeout(function () {
4847
element.removeClass('md-ink-bar-grow');
4948
}, 250, false);
49+
5050
}
5151
}
5252

src/components/tabs/tabs-theme.scss

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ md-tabs.md-#{$theme-name}-theme {
1212
}
1313

1414
md-tabs-ink-bar {
15-
background: $tabs-highlight-color;
15+
md-tabs-ink-bar-inner {
16+
background: $tabs-highlight-color;
17+
}
1618
}
1719

1820
md-tab {

0 commit comments

Comments
 (0)