cardMixins.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // https://forum.vuejs.org/t/how-to-use-helper-functions-for-imported-modules-in-vuejs-vue-template/6266/5
  2. export default {
  3. directives: {
  4. lazy: {
  5. bind(img,binding){
  6. // console.log('lazy bind', img, binding);
  7. if(binding.value === 0){
  8. img.setAttribute('src', img.getAttribute('data-src'))
  9. img.removeAttribute('data-src')
  10. img.classList.remove('lazy')
  11. }
  12. }
  13. },
  14. switcher: {
  15. inserted(el,binding){
  16. // switch images on mousemove
  17. el.addEventListener('mousemove', function(event) {
  18. let figs = this.querySelectorAll('figure')
  19. // console.log('mousemove', this, event, figs.length);
  20. // let len = figs.length
  21. // let w = this.clientWidth;
  22. // let g = w / len;
  23. // let delta = Math.floor(event.layerX / g)
  24. let delta = Math.floor(event.layerX / (this.clientWidth / figs.length))
  25. // console.log('delta', delta);
  26. figs.forEach((fig, index) => {
  27. // console.log(index);
  28. if(index == delta){
  29. // fig.style.display = "block"
  30. fig.classList.remove("hide")
  31. fig.classList.add("show")
  32. }else{
  33. // fig.style.display = "none"
  34. fig.classList.remove("show")
  35. fig.classList.add("hide")
  36. }
  37. })
  38. })
  39. }
  40. }
  41. },
  42. mounted() {
  43. // lazy load images on mouseover
  44. this.$el.addEventListener('mouseover', function(event) {
  45. let imgs = this.querySelectorAll('.images figure img.lazy')
  46. // console.log('mouseover', this, imgs);
  47. imgs.forEach((img) => {
  48. // console.log('forEach img',img);
  49. img.setAttribute('src', img.getAttribute('data-src'))
  50. img.removeAttribute('data-src')
  51. img.classList.remove('lazy')
  52. })
  53. }, {once : true})
  54. },
  55. methods: {
  56. // deg2rad (deg) {
  57. // return deg * (Math.PI / 180)
  58. // },
  59. }
  60. }