backgroundPositionX not working on Firefox

前端 未结 6 1764
感情败类
感情败类 2020-12-10 10:33

I have play with youtube\'s sprite animation but there is a problem. backgroundPositionX won\'t work under Firefox (but works on Chrome and IE8)... This is the

相关标签:
6条回答
  • 2020-12-10 10:35

    This works in IE, FF and chrome:

    background-position: 0 center;

    0 讨论(0)
  • 2020-12-10 10:35

    You can do something like this

    First install jquery migration

    https://github.com/jquery/jquery-migrate/#readme

    Include these on your html

    The $.browser property allows you to target browsers you want to apply your style into

    In this case for background-position can be changed to property supported backgroundPosition

    Available flags are - webkit - safari - opera - msie (for IE) - mozilla

    Example for IE or Firefox

    if ( $.browser.msie || $.browser.mozilla) {
            $(".element").css('backgroundPosition', position + "px 0");                
    }
    

    for chrome

    if ( $.browser.webkit) {
            $(".element").css('backgroundPosition', position + "px 0");                
    }
    

    I got mine working and for all IE

    Cheers

    0 讨论(0)
  • 2020-12-10 10:39

    This worked for me. NX is number of pixels in axis X and NY in axis Y.

    background-position: calc(NXpx) NYpx;
    
    0 讨论(0)
  • 2020-12-10 10:41

    Using like this:

    background-position: calc(100% - 20px) center; // working on chrome and ff
    background-position-x: calc(100% - 20px); // working on ie
    
    0 讨论(0)
  • 2020-12-10 10:46

    Background position-x can work in firefox you just have to specify a fixed background-y position. Here is a function I wrote to move a ribbon from left to right. At first it did not work when there was just a position-x specification, well it worked in IE but not FF. This was my solution. It is the actual code with comments from my site that works in both IE and FF:

       //starts ribbon motion at bottom of animation div 
        function startMotion() {
            var ribbonMove = setInterval(function () { ribbonMotion() }, 50);
            var x = 0;
            var cycles = 0;
    
            function ribbonMotion() {
                //background position moves on the x plane and is fixed at 0 on the y plane (single plane specification does not work in FF)
                document.getElementById("ribbon").style.backgroundPosition = x + "px" + " " + 0 + "px";
                x++;
                if (x == 800 || x==1600 || x==2400 ||x==3200) {
                    cycles++;
    
                  //sets number of cycles before motion stops (max 4 cycles)  
                }
                if (cycles == 3) {
                    clearInterval(ribbonMove);
                }
            }
        }  
    
    0 讨论(0)
  • 2020-12-10 10:51

    Firefox doesn't support backgroundPositionX, but it does support background position

    So we can do something like this:

    psy.style.backgroundPosition = x+'px 0';
    

    This sets the background position, X first, then Y.

    Working example here

    0 讨论(0)
提交回复
热议问题