Skip to content

Instantly share code, notes, and snippets.

@w-jerome
Last active August 31, 2022 00:26
Show Gist options
  • Save w-jerome/414c7a79594e29eafdf801a44f5c79bb to your computer and use it in GitHub Desktop.
Save w-jerome/414c7a79594e29eafdf801a44f5c79bb to your computer and use it in GitHub Desktop.
Javascript — Quick Helpers
function addClass (el, className) {
if (typeof el !== 'object' || typeof className !== 'string') { return }
if (el.classList) {
el.classList.add(className);
} else {
el.className += ' ' + className;
}
}
function removeClass (el, className) {
if (typeof el !== 'object' || typeof className !== 'string') { return }
if (el.classList) {
el.classList.remove(className);
} else {
el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
}
}
function toogleClass (el, className) {
if (typeof el !== 'object' || typeof className !== 'string') { return }
if (el.classList) {
el.classList.toggle(className);
} else {
var classes = el.className.split(' ');
var existingIndex = classes.indexOf(className);
if (existingIndex >= 0) {
classes.splice(existingIndex, 1);
} else {
classes.push(className);
}
el.className = classes.join(' ');
}
}
function hasClass (el, className) {
if (typeof el !== 'object' || typeof className !== 'string') { return }
if (el.classList) {
return el.classList.contains(className);
} else {
return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);
}
}
function offset(el) {
var rect = el.getBoundingClientRect(),
scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,
scrollTop = window.pageYOffset || document.documentElement.scrollTop;
return { top: rect.top + scrollTop, left: rect.left + scrollLeft }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment