Commit ec56af03 authored by samli@chromium.org's avatar samli@chromium.org

Devtools Animations: Update timeline controls and UI

This change updates the UI of the animation timeline and removes the
pause button. Instead, the pause button is combined into a single
control button to pause, play and replay the timeline.

BUG=492679,447083

Review URL: https://codereview.chromium.org/1156323003

git-svn-id: svn://svn.chromium.org/blink/trunk@201749 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 9b2e09a4
...@@ -19,10 +19,12 @@ ...@@ -19,10 +19,12 @@
position: relative; position: relative;
transform-style: preserve-3d; transform-style: preserve-3d;
line-height: 40px; line-height: 40px;
} border-bottom: 1px solid hsl(0, 0%, 90%);
margin-bottom: -1px;
.animation-node-row:nth-child(odd) { margin-right: 30px;
background-color: hsla(0, 0%, 0%, 0.05); background-color: hsl(0, 0%, 98%);
text-overflow: ellipsis;
white-space: nowrap;
} }
.animation-timeline-row { .animation-timeline-row {
...@@ -34,6 +36,10 @@ path.animation-keyframe { ...@@ -34,6 +36,10 @@ path.animation-keyframe {
fill-opacity: 0.3; fill-opacity: 0.3;
} }
.animation-node-selected path.animation-keyframe {
fill-opacity: 0.4;
}
line.animation-line { line.animation-line {
stroke-width: 2px; stroke-width: 2px;
stroke-linecap: round; stroke-linecap: round;
...@@ -47,15 +53,12 @@ line.animation-delay-line { ...@@ -47,15 +53,12 @@ line.animation-delay-line {
circle.animation-endpoint, circle.animation-keyframe-point { circle.animation-endpoint, circle.animation-keyframe-point {
stroke-width: 2px; stroke-width: 2px;
}
circle.animation-endpoint, circle.animation-keyframe-point {
transition: transform 100ms cubic-bezier(0, 0, 0.2, 1); transition: transform 100ms cubic-bezier(0, 0, 0.2, 1);
transform: scale(1); transform: scale(1);
transform-origin: 50% 50%; transform-origin: 50% 50%;
} }
circle.animation-endpoint:hover, circle.animation-keyframe-point:hover { .animation-ui:not(.animation-ui-canceled) circle.animation-endpoint:hover, .animation-ui:not(.animation-ui-canceled) circle.animation-keyframe-point:hover {
transform: scale(1.2); transform: scale(1.2);
} }
...@@ -76,6 +79,7 @@ circle.animation-keyframe-point { ...@@ -76,6 +79,7 @@ circle.animation-keyframe-point {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
min-width: 50px;
} }
.animation-timeline-header { .animation-timeline-header {
...@@ -84,12 +88,25 @@ circle.animation-keyframe-point { ...@@ -84,12 +88,25 @@ circle.animation-keyframe-point {
flex-shrink: 0; flex-shrink: 0;
} }
.animation-controls { .animation-timeline-header:after {
content: "";
height: 100%;
position: absolute;
width: 200px; width: 200px;
max-width: 200px; left: 0;
background-color: hsl(0, 0%, 98%);
z-index: -1;
border-right: 1px solid hsl(0, 0%, 90%);
}
.animation-controls {
width: 201px;
max-width: 201px;
padding: 10px; padding: 10px;
height: 100%; height: 100%;
line-height: 22px; line-height: 22px;
background-color: hsl(0, 0%, 98%);
border-right: 1px solid hsl(0, 0%, 90%);
} }
.animation-timeline-markers { .animation-timeline-markers {
...@@ -106,16 +123,22 @@ circle.animation-keyframe-point { ...@@ -106,16 +123,22 @@ circle.animation-keyframe-point {
width: 100%; width: 100%;
} }
.animation-timeline-end > .animation-time-overlay {
visibility: hidden;
}
input.animation-playback-slider { input.animation-playback-slider {
width: 68px; width: 93px;
margin-left: 12px; margin-left: 12px;
-webkit-appearance: none; -webkit-appearance: none;
position: absolute; position: absolute;
top: 18px; top: 7px;
background: none;
} }
input[type=range].animation-playback-slider::-webkit-slider-runnable-track { input[type=range].animation-playback-slider::-webkit-slider-runnable-track {
height: 4px; height: 4px;
margin: 10px 0;
border-radius: 2px; border-radius: 2px;
cursor: pointer; cursor: pointer;
background: #c8c8c8; background: #c8c8c8;
...@@ -139,25 +162,38 @@ input[type=range].animation-playback-slider::-webkit-slider-thumb { ...@@ -139,25 +162,38 @@ input[type=range].animation-playback-slider::-webkit-slider-thumb {
} }
.animation-playback-label { .animation-playback-label {
width: 34px;
text-align: right;
font-family: 'DejaVu Sans';
display: inline-block; display: inline-block;
width: 40px;
height: 22px;
overflow: hidden;
text-align: center;
border: 1px solid #dadada;
border-radius: 2px;
line-height: 20px;
font-size: 11px;
padding: 0;
color: #333;
white-space: nowrap;
overflow: hidden;
} }
.animation-scrubber { .animation-scrubber {
opacity: 1; opacity: 1;
position: absolute; position: absolute;
left: 200px; left: 230px;
height: calc(100% - 43px); height: calc(100% - 43px);
width: calc(100% - 200px); width: calc(100% - 200px);
top: 43px; top: 43px;
border-left: 1px solid rgba(0,0,0,0.5); border-left: 1px solid rgba(0,0,0,0.5);
} }
.animation-scrubber.animation-timeline-end {
border: none;
}
.animation-scrubber-head { .animation-scrubber-head {
background-color: rgba(0, 0, 0, 0.5); background-color: rgba(0, 0, 0, 0.7);
width: 50px; width: 60px;
height: 23px; height: 23px;
color: white; color: white;
line-height: 23px; line-height: 23px;
...@@ -165,11 +201,26 @@ input[type=range].animation-playback-slider::-webkit-slider-thumb { ...@@ -165,11 +201,26 @@ input[type=range].animation-playback-slider::-webkit-slider-thumb {
border-radius: 5px; border-radius: 5px;
position: relative; position: relative;
top: -29px; top: -29px;
left: -26px; left: -30px;
font-size: 10px; font-size: 10px;
visibility: visible; visibility: visible;
} }
.animation-scrubber-head:before, .animation-scrubber-head:after {
content: "||";
position: absolute;
color: #999;
font-size: 8px;
}
.animation-scrubber-head:before {
left: 3px;
}
.animation-scrubber-head:after {
right: 3px;
}
.animation-timeline-end > .animation-scrubber-head { .animation-timeline-end > .animation-scrubber-head {
visibility: visible; visibility: visible;
} }
...@@ -185,7 +236,7 @@ input[type=range].animation-playback-slider::-webkit-slider-thumb { ...@@ -185,7 +236,7 @@ input[type=range].animation-playback-slider::-webkit-slider-thumb {
top: -6px; top: -6px;
left: -7px; left: -7px;
-webkit-clip-path: polygon(0 0, 6px 6px, 12px 0px, 0px 0px); -webkit-clip-path: polygon(0 0, 6px 6px, 12px 0px, 0px 0px);
background-color: rgba(0, 0, 0, 0.5); background-color: rgba(0, 0, 0, 0.7);
} }
.animation-timeline-end > .animation-timeline-timer { .animation-timeline-end > .animation-timeline-timer {
...@@ -194,15 +245,11 @@ input[type=range].animation-playback-slider::-webkit-slider-thumb { ...@@ -194,15 +245,11 @@ input[type=range].animation-playback-slider::-webkit-slider-thumb {
svg.animation-timeline-grid { svg.animation-timeline-grid {
position: absolute; position: absolute;
left: 200px; left: 230px;
} }
rect.animation-timeline-grid-line { rect.animation-timeline-grid-line {
fill: #eee; fill: hsl(0, 0%, 90%);
}
rect.animation-timeline-grid-line:first-child {
fill: #ccc;
} }
.animation-timeline-row > svg.animation-ui { .animation-timeline-row > svg.animation-ui {
...@@ -221,7 +268,7 @@ rect.animation-timeline-grid-line:first-child { ...@@ -221,7 +268,7 @@ rect.animation-timeline-grid-line:first-child {
} }
.animation-node-row.animation-node-removed { .animation-node-row.animation-node-removed {
background-color: #fff0f0; background-color: hsla(0, 100%, 50%, 0.1);
} }
svg.animation-ui g:first-child { svg.animation-ui g:first-child {
...@@ -259,5 +306,22 @@ text.animation-timeline-grid-label { ...@@ -259,5 +306,22 @@ text.animation-timeline-grid-label {
} }
.animation-node-row.animation-node-selected { .animation-node-row.animation-node-selected {
background-color: hsla(218, 78%, 66%, 0.1); background-color: hsla(216, 71%, 53%, 0.08);
}
.animation-node-selected > .animation-node-description {
background-color: #EFF4FD;
}
.animation-timeline-empty-message {
padding-left: 230px;
padding-right: 30px;
text-align: center;
position: absolute;
font-size: 20px;
line-height: 32px;
align-items: center; justify-content: center;
width: 100%;
height: calc(100% - 44px);
display: flex;
} }
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment