Jump to content
Search Community

karzol73

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by karzol73

  1. Hello All

    I am working on a Vue3 component with two parallel vertical carousels. The one on the left is moving from top to bottom, while the other on the right is moving from bottom to top. My problem is that the left carousel is working well with an infinite loop of the cards, but the right carousel is not infinite.

     

    Thank your for your help in advance!

    <template>
        <div
            class="100vh overflow-hidden"
            :class="`wrapper-${name}`"
        >
            <div
                :class="`pictures-${name}`"
                class=""
            >
                <img
                    v-for="(card, idx) in props.cards"
                    :key="idx"
                    class="w-[14vw] block py-3"
                    :class="`picture-${name}`"
                    :src="cardURL(card)"
                    alt="card"
                >
            </div>
        </div>
    </template>
      
    <script setup>
    import { onMounted, ref } from 'vue';
    import { gsap } from 'gsap';
    import { Draggable } from 'gsap/all'
    import { InertiaPlugin } from 'gsap/all';
    
    gsap.registerPlugin(Draggable, InertiaPlugin)
    
    const props = defineProps({
        cards: {
            type: Array,
            required: true,
        },
        name: {
            type: String,
            required: true,
        },
        reverse: {
            type: Boolean,
            required: false,
            default: false,
        }
    });
    
    const cardURL = (img) => {
        return `/card/${img}.png`
    }
    
    const pictures = ref(null);
    let counter = ref(0);
    
    function startAnim() {
        const totalHeight = pictures.value.querySelector(`.pictures-${props.name}`).offsetHeight;
    
        pictures.value.querySelectorAll(`.picture-${props.name}`).forEach((picture, i) => {
            const pictureHeight = picture.offsetHeight;
            const pictureOffset = picture.offsetTop;
            const pictureDistance = pictureHeight + pictureOffset;
    
            const tl = gsap.timeline({ repeat: -1, defaults: { ease: "none", duration: 20 } });
    
            if (props.reverse) {
    
                tl.to(picture, {
                    y: `+=${totalHeight}`,
                    modifiers: {
                        y: function (y, target) {
                            y = parseFloat(y);
                            if (y >= pictureDistance) {
                                y -= totalHeight;
                            }
                            return y + "px";
                        },
                    },
                }, 0);
    
            } else {
    
                tl.to(picture, {
                    y: `-=${totalHeight}`,
                    modifiers: {
                        y: function (y, target) {
                            y = parseFloat(y);
                            if (y < -pictureDistance) {
                                y += totalHeight;
                            }
                            return y + "px";
                        },
                    },
                }, 0);
    
            }
        });
    }
    
    function incrementCounter() {
        counter.value++;
        if (counter.value === pictures.value.querySelectorAll(`.picture-${props.name}`).length) {
            startAnim();
        }
    }
    
    onMounted(() => {
        pictures.value = document.querySelector(`.wrapper-${props.name}`);
        const allPictures = document.querySelectorAll(`.picture-${props.name}`);
    
        allPictures.forEach((picture) => {
            if (picture.complete) {
                incrementCounter();
            } else {
                picture.addEventListener('load', incrementCounter);
            }
        });
    });
    </script>


     

     

     

  2. I would like to use an image with some blur effect with a dropback-filter (or with a simple filter, if it is better) and want to remove this blur effect under a draggable element which seems like a magnifying glass without any zoom effect. Thank you for your help!1043574804_Screenshot2022-04-1822_08_04.thumb.jpg.83f9adc14532ca8ebcc7b0f47ef268d5.jpg

×
×
  • Create New...