util.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //兼容requestanimationframe
  2. function requestAniFrame() {
  3. return window.requestAnimationFrame ||
  4. window.webkitRequestAnimationFrame ||
  5. window.mozRequestAnimationFrame ||
  6. function (callback) {
  7. window.setTimeout(callback, 1000 / 60);
  8. };
  9. }
  10. //是否出现在视口内(垂直方向)
  11. function verInViewport(el, viewHeight) {
  12. var rect = el.getBoundingClientRect();
  13. return (rect.top > 0 && rect.top < viewHeight);
  14. }
  15. //是否出现在视口内(水平方向)
  16. function horInViewport(el, viewWidth) {
  17. var rect = el.getBoundingClientRect();
  18. return (rect.left > 0 && rect.left < viewWidth);
  19. }
  20. //探测浏览器是否支持webp
  21. function webpSupport() {
  22. if (!localStorage) return false;
  23. switch (localStorage.getItem('supportWebp')) {
  24. case 'true':
  25. return true;
  26. case 'false':
  27. return false;
  28. default:
  29. try {
  30. if (document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0) {
  31. document.body.classList.add('webp');
  32. localStorage.setItem('supportWebp', 'true');
  33. return true;
  34. } else {
  35. localStorage.setItem('supportWebp', 'false');
  36. return false;
  37. }
  38. } catch (e) {
  39. localStorage.setItem('supportWebp', 'false');
  40. return false;
  41. }
  42. }
  43. }
  44. export {
  45. requestAniFrame,
  46. verInViewport,
  47. horInViewport,
  48. webpSupport,
  49. };