cardMixins.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. }else{
  31. fig.style.display = "none"
  32. }
  33. })
  34. })
  35. }
  36. }
  37. },
  38. mounted() {
  39. // lazy load images on mouseover
  40. this.$el.addEventListener('mouseover', function(event) {
  41. let imgs = this.querySelectorAll('.images figure img.lazy')
  42. // console.log('mouseover', this, imgs);
  43. imgs.forEach((img) => {
  44. // console.log('forEach img',img);
  45. img.setAttribute('src', img.getAttribute('data-src'))
  46. img.removeAttribute('data-src')
  47. img.classList.remove('lazy')
  48. })
  49. }, {once : true})
  50. },
  51. methods: {
  52. // deg2rad (deg) {
  53. // return deg * (Math.PI / 180)
  54. // },
  55. }
  56. }