123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // https://forum.vuejs.org/t/how-to-use-helper-functions-for-imported-modules-in-vuejs-vue-template/6266/5
- export default {
- directives: {
- lazy: {
- bind(img,binding){
- // console.log('lazy bind', img, binding);
- // show only the first image
- if(binding.value === 0){
- img.setAttribute('src', img.getAttribute('data-src'))
- img.removeAttribute('data-src')
- img.classList.remove('lazy')
- }
- }
- },
- switcher: {
- inserted(el,binding){
- // switch images on mousemove
- el.addEventListener('mousemove', function(event) {
- let figs = this.querySelectorAll('figure')
- // console.log('mousemove', this, event, figs.length);
- // let len = figs.length
- // let w = this.clientWidth;
- // let g = w / len;
- // let delta = Math.floor(event.layerX / g)
- let delta = Math.floor(event.layerX / (this.clientWidth / figs.length))
- // console.log('delta', delta);
- figs.forEach((fig, index) => {
- // console.log(index);
- if(index == delta){
- // fig.style.display = "block"
- fig.classList.remove("hide")
- fig.classList.add("show")
- }else{
- // fig.style.display = "none"
- fig.classList.remove("show")
- fig.classList.add("hide")
- }
- })
- })
- }
- }
- },
- mounted() {
- // lazy load images on mouseover
- console.log('card mounted', this.$options.name);
- // if (this.$options.name ==! 'ModalCard') {
- this.$el.addEventListener('mouseover', function(event) {
- let imgs = this.querySelectorAll('.images figure img.lazy')
- console.log('mousemove', this, imgs);
- imgs.forEach((img) => {
- // console.log('forEach img',img);
- img.setAttribute('src', img.getAttribute('data-src'))
- img.removeAttribute('data-src')
- img.classList.remove('lazy')
- })
- }, {once : true})
- // }
- },
- methods: {
- activateLazyLoad () {
- console.log('card activateLazyLoad', this.$options.name);
- this.$el.addEventListener('mousemove', function(event) {
- let imgs = this.querySelectorAll('.images figure img.lazy')
- console.log('mousemove', this, imgs);
- imgs.forEach((img) => {
- // console.log('forEach img',img);
- img.setAttribute('src', img.getAttribute('data-src'))
- img.removeAttribute('data-src')
- img.classList.remove('lazy')
- })
- }, {once : true})
- }
- // deg2rad (deg) {
- // return deg * (Math.PI / 180)
- // },
- }
- }
|