Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: chrome/browser/resources/local_ntp/most_visited_single.js

Issue 2316423003: NTP: fade-in the tiles only when they change, not when they are shown initially (Closed)
Patch Set: . Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/resources/local_ntp/most_visited_single.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Copyright 2015 The Chromium Authors. All rights reserved. 1 /* Copyright 2015 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. */ 3 * found in the LICENSE file. */
4 4
5 // Single iframe for NTP tiles. 5 // Single iframe for NTP tiles.
6 (function() { 6 (function() {
7 'use strict'; 7 'use strict';
8 8
9 9
10 /** 10 /**
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 // Store the tiles on the current closure. 251 // Store the tiles on the current closure.
252 var cur = tiles; 252 var cur = tiles;
253 253
254 // Create empty tiles until we have NUMBER_OF_TILES. 254 // Create empty tiles until we have NUMBER_OF_TILES.
255 while (cur.childNodes.length < NUMBER_OF_TILES) { 255 while (cur.childNodes.length < NUMBER_OF_TILES) {
256 addTile({}); 256 addTile({});
257 } 257 }
258 258
259 var parent = document.querySelector('#most-visited'); 259 var parent = document.querySelector('#most-visited');
260 260
261 // Mark old tile DIV for removal after the transition animation is done. 261 // Only fade in the new tiles if there were tiles before.
262 var fadeIn = false;
262 var old = parent.querySelector('#mv-tiles'); 263 var old = parent.querySelector('#mv-tiles');
263 if (old) { 264 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
265 fadeIn = true;
266 // Mark old tile DIV for removal after the transition animation is done.
264 old.removeAttribute('id'); 267 old.removeAttribute('id');
265 old.classList.add('mv-tiles-old'); 268 old.classList.add('mv-tiles-old');
266 old.style.opacity = 0.0; 269 old.style.opacity = 0.0;
267 cur.addEventListener('webkitTransitionEnd', function(ev) { 270 cur.addEventListener('webkitTransitionEnd', function(ev) {
268 if (ev.target === cur) { 271 if (ev.target === cur) {
269 removeAllOldTiles(); 272 removeAllOldTiles();
270 } 273 }
271 }); 274 });
272 } 275 }
273 276
274 // Add new tileset. 277 // Add new tileset.
275 cur.id = 'mv-tiles'; 278 cur.id = 'mv-tiles';
276 parent.appendChild(cur); 279 parent.appendChild(cur);
277 // We want the CSS transition to trigger, so need to add to the DOM before 280 // getComputedStyle causes the initial style (opacity 0) to be applied, so
278 // setting the style. 281 // that when we then set it to 1, that triggers the CSS transition.
279 setTimeout(function() { 282 if (fadeIn) {
Marc Treib 2016/09/08 18:17:48 This was the root problem: When the timeout functi
280 cur.style.opacity = 1.0; 283 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.
281 }, 0); 284 }
285 cur.style.opacity = 1.0;
282 286
283 // Make sure the tiles variable contain the next tileset we may use. 287 // Make sure the tiles variable contain the next tileset we may use.
284 tiles = document.createElement('div'); 288 tiles = document.createElement('div');
285 289
286 if (impressionUrl) { 290 if (impressionUrl) {
287 navigator.sendBeacon(impressionUrl); 291 navigator.sendBeacon(impressionUrl);
288 impressionUrl = null; 292 impressionUrl = null;
289 } 293 }
290 }; 294 };
291 295
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 var html = document.querySelector('html'); 615 var html = document.querySelector('html');
612 html.dir = 'rtl'; 616 html.dir = 'rtl';
613 } 617 }
614 618
615 window.addEventListener('message', handlePostMessage); 619 window.addEventListener('message', handlePostMessage);
616 }; 620 };
617 621
618 622
619 window.addEventListener('DOMContentLoaded', init); 623 window.addEventListener('DOMContentLoaded', init);
620 })(); 624 })();
OLDNEW
« no previous file with comments | « chrome/browser/resources/local_ntp/most_visited_single.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698