var scrollElm = (function() {
if('scrollingElement' in document) return document.scrollingElement;
if(navigator.userAgent.indexOf('WebKit') != -1) return document.body;
return document.documentElement;
})();
var duration = 500;
var ignore = '.noscroll';
var easing = function (t, b, c, d) { return c * (0.5 - Math.cos(t / d * Math.PI) / 2) + b; }; //jswing
var smoothScrollElm = [].slice.call(document.querySelectorAll('.hoge'));
Array.prototype.forEach.call(smoothScrollElm, function(elm) {
elm.addEventListener('click', function(e) {
e.preventDefault();
var targetElm = document.querySelector('body');
if(!targetElm) return;
var targetPos = targetElm.getBoundingClientRect().top;
var startTime = Date.now();
var scrollFrom = scrollElm.scrollTop;
(function loop() {
var currentTime = Date.now() - startTime;
if(currentTime < duration) {
scrollTo(0, easing(currentTime, scrollFrom, targetPos, duration));
window.requestAnimationFrame(loop);
} else {
scrollTo(0, targetPos + scrollFrom);
}
})();
})
});