Ensure images don't get stuck on opacity 0

This commit is contained in:
2018-04-29 18:06:36 +01:00
parent 2fbf3b552f
commit c93b9af4b1
3 changed files with 35 additions and 9 deletions

View File

@@ -3,16 +3,20 @@ export default class Image {
this.image = image; this.image = image;
} }
showImage() { fadeIn() {
this.image.style.opacity = 1; this.image.style.opacity = 1;
} }
fadeIn() { start() {
this.image.style.opacity = 0; this.image.style.opacity = 0;
this.attachLoadedEvent(); if (this.image.complete) {
this.fadeIn();
} else {
this.attachLoadedEvent();
}
} }
attachLoadedEvent() { attachLoadedEvent() {
this.image.addEventListener('load', () => this.showImage()); this.image.addEventListener('load', () => this.fadeIn());
} }
} }

View File

@@ -20,16 +20,38 @@ describe('Image', () => {
expect(img.image).toBe(image); expect(img.image).toBe(image);
}); });
test('fadeIn should set the element opacity to 0', () => { test('fadeIn should set the element opacity to 1', () => {
const img = new Image(image); const img = new Image(image);
img.fadeIn(); img.fadeIn();
expect(img.image.style.opacity).toBe('1');
});
test('start should set the element opacity to 0', () => {
const img = new Image(image);
img.start();
expect(img.image.style.opacity).toBe('0'); expect(img.image.style.opacity).toBe('0');
}); });
test('showImage should set the element opacity to 1', () => { test('start should call fadeIn when image has already loaded', () => {
const img = new Image(image); const img = new Image(image);
img.showImage(); img.fadeIn = jest.fn();
expect(img.image.style.opacity).toBe('1'); Object.defineProperty(img.image, 'complete', {
value: true,
writable: false,
});
img.start();
expect(img.fadeIn).toHaveBeenCalledTimes(1);
});
test('start should call attachLoadedEvent if image has not yet loaded', () => {
const img = new Image(image);
img.attachLoadedEvent = jest.fn();
Object.defineProperty(img.image, 'complete', {
value: false,
writable: false,
});
img.start();
expect(img.attachLoadedEvent).toHaveBeenCalledTimes(1);
}); });
}); });

View File

@@ -9,7 +9,7 @@ const windy = {
export default function init() { export default function init() {
document.querySelectorAll('img').forEach((image) => { document.querySelectorAll('img').forEach((image) => {
const img = new Image(image); const img = new Image(image);
img.fadeIn(); img.start();
windy.images.push(img); windy.images.push(img);
}); });
windy.menu = new Menu({ windy.menu = new Menu({