Index: chrome/browser/resources/local_ntp/most_visited_single.js |
diff --git a/chrome/browser/resources/local_ntp/most_visited_single.js b/chrome/browser/resources/local_ntp/most_visited_single.js |
index e2e0911eb43557e4178920adaf9de2185fcbb191..535c3fe624a4876b38edc0ddb171b8e394bddaf0 100644 |
--- a/chrome/browser/resources/local_ntp/most_visited_single.js |
+++ b/chrome/browser/resources/local_ntp/most_visited_single.js |
@@ -258,9 +258,12 @@ var showTiles = function() { |
var parent = document.querySelector('#most-visited'); |
- // Mark old tile DIV for removal after the transition animation is done. |
+ // Only fade in the new tiles if there were tiles before. |
+ var fadeIn = false; |
var old = parent.querySelector('#mv-tiles'); |
if (old) { |
jkrcal
2016/09/09 08:13:13
I am puzzled:
How come this is not true initially
Marc Treib
2016/09/09 08:56:28
When this runs for the first time, there is no div
jkrcal
2016/09/09 09:00:17
Huh, I've swapped the direction :) Sure, this make
|
+ fadeIn = true; |
+ // Mark old tile DIV for removal after the transition animation is done. |
old.removeAttribute('id'); |
old.classList.add('mv-tiles-old'); |
old.style.opacity = 0.0; |
@@ -274,11 +277,12 @@ var showTiles = function() { |
// Add new tileset. |
cur.id = 'mv-tiles'; |
parent.appendChild(cur); |
- // We want the CSS transition to trigger, so need to add to the DOM before |
- // setting the style. |
- setTimeout(function() { |
Marc Treib
2016/09/08 18:17:48
This was the root problem: When the timeout functi
|
- cur.style.opacity = 1.0; |
- }, 0); |
+ // getComputedStyle causes the initial style (opacity 0) to be applied, so |
+ // that when we then set it to 1, that triggers the CSS transition. |
+ if (fadeIn) { |
+ window.getComputedStyle(cur).opacity; |
Marc Treib
2016/09/08 18:17:48
From https://timtaubert.de/blog/2012/09/css-transi
jkrcal
2016/09/09 08:13:13
This looks hacky :) I haven't found any cleaner so
Marc Treib
2016/09/09 08:56:28
It's not pretty, but I'd argue it's less hacky tha
jkrcal
2016/09/09 09:00:17
That's true, probably less hacky.
|
+ } |
+ cur.style.opacity = 1.0; |
// Make sure the tiles variable contain the next tileset we may use. |
tiles = document.createElement('div'); |