Jonathan last won the day on July 21

Jonathan had the most liked content!

Jonathan

Moderators
  • Content count

    3,109
  • Joined

  • Last visited

  • Days Won

    113

Jonathan last won the day on July 21

Jonathan had the most liked content!

Community Reputation

3,837 Superhero

2 Followers

About Jonathan

  • Rank
    Super Moderator

Contact Methods

Profile Information

  • Gender
    Male
  • Location
    United States

Recent Profile Visitors

18,743 profile views
  1. Glad you got it sorted If you have say a rotation on the element and tell GSAP force3D: false.. it might still use matrix3d() since your passing a rotation which can still tell GSAP to use matrix3D regardless if force3d is false. Did you have a rotation or z (translateZ) on your element as well? You could report it to chrome webkit bug reports. https://www.chromium.org/for-testers/bug-reporting-guidelines https://webkit.org/reporting-bugs/ Sometimes also adding overflow:hidden to a 3d transformed element can make webkit-clip-path work. There previously was a webkit bug regarding this: https://bugs.webkit.org/show_bug.cgi?id=95646 Even though its marked as fixed doesnt mean its really fixed, but that is the way of webkit. Also the spec shows for SVG elements when using clip-path that it will ignore clip-path if a 3d Transform is used, but not sure if this also applies to non SVG elements. https://www.w3.org/TR/css-transforms-1/#svg-three-dimensional-functions Happy Tweening
  2. Hello, You can either set backface-visibility : hidden via a GSAP set() before your regular tweens or on your to() or from() tween like // GSAP will add webkit-backface-visibility if needed in webkit browsers TweenLite.set(".element-with-transform", {backfaceVisibility:"hidden"}); or via your style-sheet .element-with-transform { -webkit-backface-visibility: hidden; backface-visibility: hidden; } Usually that helps with the flicker bug, also adding transform-style: preserve-3d can help with that flicker along with backface-visibility: hidden. Those properties help the browser know the intent on how to render. Sometimes when they are missing the browser can render wrong since backface-visibility default is visible and transform-style default is flat. Also sometimes adding transform: translateZ(0) on the parent of the transformed element can help by bringing the parent on a new render layer like its transformed child.
  3. Hello, Do you have an actual code example link with this happening, since its not happening in codepen? Usually the same type of bug would show up in desktop chrome that happens on android mobile chrome. That is one good thing the chrome devs have implemented, making the same rendering at least for desktop PC chrome and mobile chrome on android. The fact it doesnt happen in codepen shows there is an issue with your original code somewhere. Also when you see this flicker do you know if the element is animating using matrix3d() or just matrix() for the transform property inline on the element? I believe it is only matrix() like your codepen above. As a rule of thumb anytime you animate x (translateX) or y (translateY) especially in Firefox desktop or mobile versions. Its best to add a slight rotation: 0.01 to prevent a firefox translation bug that could cause jank or flicker flack. That forces firefox to use matrix3d() so the element is placed on their own rendering layer for a smoother animation. Along with making sure it uses transform matrix3d().. also sometimes adding backface-visibility:hidden on the problem element being transformed can help with this flicker. But if you cant provide an example where this happens i would just opt for @Carl's solution animating the height of the div.
  4. What happens if you set explicitly touch-action: manipulate which prevents the 300ms click delay on mobile, since touch-action: manipulate tells the browser your intent, and then it doesn't have to have that mobile 300ms click delay. That is one reason why Chrome devs added support for touch-action: manipulate. You might need to use the !important declaration for touch-action: manipulate to override the inline style of touch-action: pan-y currently being added inline. Mozilla added touch-action property support for the new pointer-events spec like 5 days ago. Not sure if that was pushed to Mozilla Firefox Mobile Browser app. Does that help in any way either by adding touch-action: manipulate or even trying touch-action: none to see how it is affected?
  5. Hello @NUcreative and welcome to the GreenSock Forum! Sorry your having this issue. To better help you, can you please create a a reduced codepen example? So we can see your code in context to test live in the browser. This looks like this can resolved with the use of the GSAP position parameter. The last parameter for the call() and to() method is the position parameter. Thanks
  6. It looks like the spec includes the <svg> element and its children to not render in the tree when they have display none. In this case its inheriting display none from the parent div. So that triggers it not to not render directly. Then bam, boom, battabing that error gets thrown. https://www.w3.org/TR/SVG11/painting.html#DisplayProperty So your best bet is to use a CSS rule with visibility:hidden, width:0 and height:0 then it should render like you want, so it doesn't leave a gap due to just using visibility:hidden by itself. .hide { visibility:hidden; height:0; width:0; }
  7. When i say SVG elements, i mean the children of the <svg> element.. for example <rect>, <circle>, <g>, etc.. The parent of the <svg> element (which could be a DOM element like a <div>) and the main <svg> parent itself can use display: none, just not those SVG child elements within the <svg> element. Those shouldn't use display:none due to the way display and visibility works with <svg> children, making them be removed from the render tree based on the SVG spec display. Happy Tweening
  8. Hello @TartufoDAlba You should be using CSS visibility: hidden or the SVG visible attribute to hide your elements, since when an SVG child element has display none it is removed from the render tree, and will throw that error. Previously Firefox would throw a NS_Error_Failure error. But opted to match other browsers like Chrome and MS Edge., and throw null for ownerSVGElement. See this Mozilla bug report regarding why Firefox throws null instead of NS_Error_Failure for ownerSVGElement. https://bugzilla.mozilla.org/show_bug.cgi?id=835048
  9. Hello @Payman Yes I agree, a very reduced limited codepen example showing what your seeing, since it will be impossible to replicate this without knowing how to replicate this with the exact dynamic SVG code your trying to animate. And when you say old versions, what do you mean, old versions of jQuery, since i didnt read anything on exactly what in the GSAP API your having an issue with. But only a mention of you using jQuery.parents(). That looks like this is happening due to the browser thinking the SVG element has no parent. That would throw that ownerSVGElement is null error, especially if the outermost SVG doesn't exist yet or is not part of the render tree. That is why it throws null. You could try and add a setTimeout() or use GSAP delayedCall() to try and get ownerSVGElement after 300ms-500ms and see if ownerSVGElement returns an element and not null. (Giving time for your dynamic inline SVG to be inserted in the DOM) Firefox has several bugs for this, but we wont know without testing live in the browser with the code your seeing this with. But a codepen example will help us replicate this, which is the only way to resolve this, so we have some context to test what your seeing.
  10. If you would like to disable async stack traces when Chrome Dev Tools is open, you can press Ctrl + Shift + p to access the Chrome Command Menu. In the pop up list search area, type debugger .. Then click the following to disable Debugger Do not capture async stack traces Async Stack Traces are on by default now.. so doing the above will disable it
  11. Hello @Payman and welcome to the GreenSock Forum! If you can please provide a codepen example showing your issue. We will be more than happy to help you with the issue your having! Happy Tweening
  12. Hello @allebrum and Thanks for your feedback. You will find throughout this community and throughout this forum. That you will find 1000's of instances of the GreenSock team and the great GreenSock community members troubleshooting other peoples code free of charge. Even when its not related to the GSAP API. With some members troubleshooting others code lasting hours if not sometimes days with little or no appreciation, or sleep. You should also notice in these forums, that a lot of people in the community are willing to help, even when they are treated poorly like on StackOverflow. But we thrive on being polite and wish everyone the best to learn in a productive positive environment . Happy Tweening
  13. To detect if your element, video or ad is in the viewport (or above the fold) you can take advantage of the HTML5 Intersection Observer API. Better performance then using getBoundClientRect() which causes too much re-layout triggers. But it is not available in IE11 yet, but is for all other modern browsers (chrome, safari, opera, and firefox) including MS Edge. Using with ads : https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API/Timing_element_visibility Resources: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API https://developers.google.com/web/updates/2016/04/intersectionobserver Also here is an example of using GSAP with the HTML5 Page Visibility API:
  14. To detect if your element, video or ad is in the viewport you can take advantage of the HTML5 Intersection Observer API. Better performance then using getBoundClientRect() which causes too much re-layout triggers. But it is not available in IE11 yet, but is for all other modern browsers (chrome, safari, opera, and firefox) including MS Edge. Using with ads : https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API/Timing_element_visibility Resources: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API https://developers.google.com/web/updates/2016/04/intersectionobserver
  15. No worries.. glad to help