Skip to content

Instantly share code, notes, and snippets.

@paxperscientiam
Forked from davej/transitionToPromise.js
Created December 12, 2018 01:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paxperscientiam/24361650de186ad97a9816124a5f207a to your computer and use it in GitHub Desktop.
Save paxperscientiam/24361650de186ad97a9816124a5f207a to your computer and use it in GitHub Desktop.
Do a CSS transition and resolve promise when complete
const transitionToPromise = (el, property, value) =>
new Promise(resolve => {
el.style[property] = value;
const transitionEnded = e => {
if (e.propertyName !== property) return;
el.removeEventListener('transitionend', transitionEnded);
resolve();
}
el.addEventListener('transitionend', transitionEnded);
});
/*
CSS rule:
#main-nav {
opacity: 0;
transition: opacity 1s;
}
*/
// Usage
const mainNav = document.getElementById('main-nav');
function es2015() {
transitionToPromise(mainNav, 'opacity', '1')
.then(() => alert('Transition done'));
}
async function es2016() {
await transitionToPromise(mainNav, 'opacity', '1');
alert('Transition done');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment