Cross-browser way to flip html/image via Javascript/CSS?

前端 未结 4 531
走了就别回头了
走了就别回头了 2020-12-12 10:14

Is there a library/simple way to flip an image?

Flip image like this:

AABBCC      CCBBAA
AABBCC  ->  CCBBAA

I\'m not loo

相关标签:
4条回答
  • 2020-12-12 10:18

    The following CSS will work in IE and modern browsers that support CSS transforms. I included a vertical flip class just in case you might want to use it too.

    .flip-horizontal {
        -moz-transform: scaleX(-1);
        -webkit-transform: scaleX(-1);
        -o-transform: scaleX(-1);
        transform: scaleX(-1);
        -ms-filter: fliph; /*IE*/
        filter: fliph;
    }
    .flip-vertical {
        -moz-transform: scaleY(-1);
        -webkit-transform: scaleY(-1);
        -o-transform: scaleY(-1);
        transform: scaleY(-1);
        -ms-filter: flipv; /*IE*/
        filter: flipv;
    }
    
    0 讨论(0)
  • 2020-12-12 10:18

    Take a look at one of the many reflection.js type libraries, They are pretty simple. In IE they will take and use the 'flipv' filter, there is a 'fliph' filter too. Inside of other browsers, it will create a canvas tag and use the drawImage. Although Elijah's answer probably supports the same browsers.

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

    Just dug up this answer while trying to fix a bug, while the suggested answer is correct I have found that it breaks most modern CSS Linting rules regarding the inclusion of all vendor rules for the transform. However, including the -ms-tranform rule causes an odd bug in IE9 where it applies the filter and -ms-transform rules causing an image to flip and flip back again.

    Here is my suggested improvement which also supports CSS Lint rules:

    .flip-horizontal {
        -moz-transform: scaleX(-1);
        -webkit-transform: scaleX(-1);
        -o-transform: scaleX(-1);
        -ms-transform: scaleX(1); /* linting rule fix + IE9 fix */
        transform: scaleX(-1);
        -ms-filter: fliph;
        filter: fliph;
    }
    .flip-vertical {
        -moz-transform: scaleY(-1);
        -webkit-transform: scaleY(-1);
        -o-transform: scaleY(-1);
        -ms-transform: scaleY(1);  /* linting rule fix + IE9 fix */
        transform: scaleY(-1);
        -ms-filter: flipv;
        filter: flipv;
    }
    
    0 讨论(0)
  • 2020-12-12 10:37

    If you only want to flip a background image you can use the class on the internal elements inside a flipped div. Basically you're flipping the internal elements with the main div, but flipping each of them back. Works in Firefox anyway.

    Like this:

    <div id="container" class="flip-horizontal"> <!-- container would have your background image -->
    <h3 class="flip-horizontal">Hello There!</h3>
    <p class="flip-horizontal">Here is some text</p>
    </div>
    
    0 讨论(0)
提交回复
热议问题