Jump to content
Search Community

_Greg _

Members
  • Posts

    145
  • Joined

  • Last visited

Posts posted by _Greg _

  1. 26 minutes ago, marius96 said:

    How do I kill a timeline if I have multiple ScrollTrigger targets?

    you need to declare tl outside of a function, something like:

    ... //your code
    gsap.registerPlugin(ScrollTrigger);
    let targets = document.querySelectorAll("h2");
    let tl = [] // declarate like array
    ...
    
    targets.forEach((target, index) => {
      tl[index] = gsap.to(target, {
        x: 100,
        scrollTrigger: {
          trigger: target,
          markers: true,
          start: "bottom center"
        }
      });
    });
    ... 
    //After you can get and kill every tl
    tl.forEach(timeline=>...)

    Or you can add id and after getbyid (but you still need list of all ids)

     

    • Like 3
  2. Hi and wellcome.

    This is not css properties

    autoAlpha - will be converted to opacity and visibility, rotationX will be converted to transform: rotateX.. check 2D and 3d transforms

     

    So you need just write like:

    tl.from(this.$refs.plate, {
      autoAlpha: 0,
      rotationY: -26,
      rotationX: 72,
      rotationZ: 5,
    },2)

    What do mean to specify 2 for this.$refs.plate, this is something like delay? What do you expect?

     

    UPD: SVG doesn't allow 3D transforms, please check this topic

  3. Hi Petr.

    I'm not sure does it important snippets but if you add .set, maybe add .quickSetter

    gsap.quickSetter("element", "propName")

    Also maybe add some plugins like ScrollTrigger:

    ScrollTrigger.create({
      trigger: selector,
      start: "position",
      end: "position",
    })
    Draggable.create(selector,{props})
    var split = new SplitText(selectors);

    Also maybe add registration plugin 

    gsap.registerPlugin(pluginName);

    Or maybe utils

    gsap.utils.UtilName(UtilProperty)

     

    This is just ideas.

     

  4. Hi!

    Please create a minimal demo

    Buy the way, ScrollTrigger does not have any property with name target, cssRule plugin was deprecated and autoAlpha or scaleX is not css rule.

     

    You need something like 

    gsap.to(docImgAfter,{
      duration:1.2,
      scrollTrigger:{
        markers:true,
        trigger:docImgAfter,
        start:"top center",
        toggleActions:"restart none none none"
      },
      scaleX:0,
      ease:"Power1.out"
    })
    
    gsap.to(docImgBefore,{
      duration:1.2,
      scrollTrigger:{
        trigger:docImgAfter,
        start:"top center",
        toggleActions:"restart none none none"
      },
      x:-60,
      autoAlpha:1,
      ease:"Power1.out"
    })

     

    • Like 2
  5. 30 minutes ago, Conal said:

    The bottom one works as I want but the 2 proceeding it don't.

    This issue not with GSAP or Draggable.

     

    As i understand, please correct me if i'm wrong

    You create global variables (without declaration) so on every interation you rewrite it
    Read about closure And about scoping rules for let
    You create variable in window (window.scrollGroupID) not inside function, if you declared variable let scrollGroupID you create scoped variable

     

    See the Pen MWOezVZ?editors=0011 by gregOnCodePen (@gregOnCodePen) on CodePen

    • Like 3
  6. You need refresh ScrollTrigger every time whan you load/unload/change something in the DOM part where did you use ScrollTrigger. If some DOM element where did you use ScrollTrigger change position, size... etc you need to call ScrollTrigger.refresh() for recalculate positions and sizes of DOM elements. 
    If you refresh via Timeout you just doing useless calculations.

    • Like 1
  7. Hi!

    I think this is bad idea to create Draggable every time on resize, better on resize check is Draggable was created - then .update(), else -.create()

    If you use resize event on mobile, it will be fired every time when browser adress bar is hidden or showed (scroll up / scroll down page)
    Also you can use optimizedResize (based on requestAnimationFrame + customEvent) check MDN russian version examples part (did't find on english version MDN site)

    • Like 1
  8. offtopic:

    19 hours ago, _josch said:

    but did not manage to get the animation canvas inside because the folder with the images is just on my PC. 

    In codepen you can upload you files only on PRO Plans, or you can use external images or imagegenerators (example, example, example) and just focused on code

     

    If you need specific images or it doesn’t work with these images, but everything works with others, then you can use codesandbox

    • Like 5
  9. 30 minutes ago, Skilltech said:

    As for the carousel init, carousel can actually be initialized via JS

    I talk about event, not init. You can init carousel but didn't get callback does it init or not. 

     

    In my example you have 2 animations - after start (slide.bs.carousel event) and before end (function animationOut) you can place different animations there. I think,  I don't quite understand you.

     

    If you want listener for class was changed, you can use something like MutationObserver with property attributes: true

     

    With bootstrap carousel you have only 2 event callbacks slide.bs.carousel and slid.bs.carousel

     

     

    • Like 2
  10. Hi!

     

    What did you try?

    I think maybe this can help you 

    See the Pen XWzrMGX?editors=0010 by gregOnCodePen (@gregOnCodePen) on CodePen

    I didn't find init event on bootstrap carousel so you need something like DOMContentLoaded or window load

    I don't know why did gsap.delayedCall is not working on my answer so i use setTimeout

     

    UPD:
    I see some issue with last slide (on repeat). I think better use something like swiperjs with normal API or creat your own slider. I can't find onloop, init, beforeinit, afterinit, beforechange, afterchange Events on bootstrap carousel

    • Like 2
×
×
  • Create New...