在IE9中使用背景图像翻转html div的效果

时间:2013-08-27 04:40:15

标签: jquery html css internet-explorer-9

我正在开发一个功能,我正在用背景图像翻转div。当我翻转div时,另一侧应该有一个新图像。

我尝试过以下jquery插件,结果是:

  1. Flippy:它在IE10,chrome和firefox中运行得非常好但它在IE9中无法正常工作它使图像消失并翻转灰色的div。

  2. 翻转!:它使图像消失并翻转灰色的div。

  3. 图像翻转:2D翻转

  4. 快速翻转:2D翻转

  5. rotate3di:3d翻转,但看起来我们正在从某个角度观看。

  6. 请建议在IE9中翻转div的方法。任何帮助将不胜感激

5 个答案:

答案 0 :(得分:3)

CSS转换是您的代码无法在IE9中运行的原因。 CSS转换用于通过更改CSS来动画对象(不需要JavaScript)。 jQuery.flippy.js使用它来动画对象。 遗憾的是,CSS转换发生在IE9之后,因此不支持CSS转换。

我过去曾遇到类似的问题(http://bitotsav.in/#!/shows),我选择为IE9及以下版本提供一些简单的动画。

但是,如果你想在IE9上有翻转动画,那么请访问 Flip card effect for non-webkit browsers

上面的链接可能包含一些解决您问题的方法。

答案 1 :(得分:0)

对于FF和Chrome,我在这里摆弄:
http://jsfiddle.net/RXU84/

然而,我无法在IE上测试它,因为我现在无法访问。
多谢这个家伙.. David

<强> HTML

<div class="flip-container" ontouchstart="this.classList.toggle('hover');">
    <div class="flipper">
        <div class="front">
            <!-- front content -->
            <img src="http://i.imgur.com/FrJqOAP.jpg"/>
        </div>
        <div class="back">
            <!-- back content -->
            <img src="http://i.imgur.com/eIkgvPL.jpg"/>
        </div>
    </div>
</div>

<强> CSS

        /* simple */
    .flip-container {
        -webkit-perspective: 1000;
        -moz-perspective: 1000;
        perspective: 1000;

        border: 1px solid #ccc;
    }


        .flip-container:hover .flipper, 
                    .flip-container.hover .flipper, #flip-toggle.flip .flipper {
            -webkit-transform: rotateY(180deg);
            -moz-transform: rotateY(180deg);
            transform: rotateY(180deg);
            filter: FlipH;
            -ms-filter: "FlipH";
        }

    .flip-container, .front, .back {
        width: 320px;
        height: 427px;
    }

    .flipper {
        -webkit-transition: 0.6s;
        -webkit-transform-style: preserve-3d;

        -moz-transition: 0.6s;
        -moz-transform-style: preserve-3d;

        transition: 0.6s;
        transform-style: preserve-3d;

        position: relative;
    }

    .front, .back {
        -webkit-backface-visibility: hidden;
        -moz-backface-visibility: hidden;
        backface-visibility: hidden;

        position: absolute;
        top: 0;
        left: 0;
    }

    .front {
        background: lightgreen;
        z-index: 2;
    }

    .back {
        background: lightblue;
        -webkit-transform: rotateY(180deg);
        -moz-transform: rotateY(180deg);
        transform: rotateY(180deg);
    }

    .front .name {
        font-size: 2em;
        display: inline-block;
        background: rgba(33, 33, 33, 0.9);
        color: #f8f8f8;
        font-family: Courier;
        padding: 5px 10px;
        border-radius: 5px;
        bottom: 60px;
        left: 25%;
        position: absolute;
        text-shadow: 0.1em 0.1em 0.05em #333;

        -webkit-transform: rotate(-20deg);
        -moz-transform: rotate(-20deg);
        transform: rotate(-20deg);
    }

答案 2 :(得分:0)

我认为这是您需要的,请参阅此演示:FLIPPING CIRCLE SLIDESHOW

它的翻转不只是图像,易于遵循的代码,您可以自定义它,以便您拥有所需的一切。

希望这会有所帮助。

答案 3 :(得分:0)

试试这个......

  #skew {

变换:歪斜(35deg); }

#scale {

变换:比例(1,0.5); }

#rotate {

变换:旋转(45deg); }

#translate {

transform:translate(10px,20px); }

#rotate-skew-scale-translate {

变换:倾斜(30度)刻度(1.1,1.1)旋转(40度)平移(10px,20px); }

答案 4 :(得分:0)

修改 这可以在IE9中工作,IE只是讨厌jsfiddle而拒绝让它工作。换句话说,死于IE!

我建议使用画布!如果画布是100x100,并且您在画布上加载了100x200的图片,那么一半将在外面。当您翻转图像时,其他部分将显示(虽然它将被翻转,因此原始图像将被翻转)。

http://jsfiddle.net/H82Tq/1/

var c = document.getElementById("joker");
var ctx = c.getContext("2d");
var img = document.createElement('img');
img.src = 'http://i.istockimg.com/file_thumbview_approve/7625283/2/stock-illustration-7625283-joker-face-two-playing-card.jpg';


var b = false;
$(c).click(function(){
    if (b) {
        ctx.drawImage(img, -246, 0, 246, 380);
    } else {
        ctx.drawImage(img, 0, 0, 246, 380);
    }

    b = !b;
    ctx.scale(-1, 1);
}).click();