CSS3-After-Element-Transformation 不能跨浏览器工作?

标签 css css-transitions css-animations

我认为我的动画六边形实现有几个跨浏览器问题: http://jsbin.com/mojavowapi/1/edit?css,output

.hexagon {
    position: relative;
    width: 173px;
    height: 300px;
    background-image: url(https://live.tlprod.de/temp/glas.jpg);
    background-size: auto 100%;
    background-position: 50% 50%;
    transition: all 2s linear;
    margin-left: auto;
    margin-right: auto;
}

.hexagon:after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 2;
    background: inherit;
}

.hexLeftBox, .hexRightBox {
    overflow: hidden;
    transform: scaleY(1.6) rotate(-45deg);
    background: inherit;
    top: 27.9%;
    position: absolute;
    display: inline-block; /* let the block get the width of the containing image */
    z-index: 1;
    height: 44%;
}

.hexLeft, .hexRight {
    width: auto;
    height: 100%; /* get full height of parent element, set width to aspect ratio 1:1 */
}

.hexLeftBox {
    transform: scaleY(1.6) rotate(-45deg) translate(-35.5%,-35.5%);
}

.hexRightBox {
    right: 0;
    transform: scaleY(1.6) rotate(-45deg) translate(35.5%,35.5%);
}

.hexLeftBox:after, .hexRightBox:after {
    content: "";
    position: absolute;
    width: 142%;
    height: 142%;
    transform: rotate(45deg) scaleY(1) scaleX(1.6) translate(-50%,0%);
    transform-origin: 0 0;
    background: inherit;
    transition: all 2s linear;
}

.hexLeftBox:after {
    background-position: -7% top;
}

.hexRightBox:after {
    background-position: 107% top;
}

.hexagon:hover {
    width: 300px;
    height: 350px;
}

.hexagon:hover .hexLeftBox:after {
    background-position: -35% top;
}

.hexagon:hover .hexRightBox:after {
    background-position: 135% top;
}

.hexagon2 {
    width: 300px;
    height: 350px;
    margin-top: 40px;
}

.hexagon2 .hexLeftBox:after {
    background-position: -35% top;
}

.hexagon2 .hexRightBox:after {
    background-position: 135% top;
}

在此示例中,上面的六边形在悬停时更改为与加载的另一个相同的大小。

  • 在 Chrome 50 中,后元素的背景图像消失并且宽高比崩溃

  • 在 IE 11 中只有边缘的宽高比崩溃

  • 在 Firefox 46 中一切正常

..但有趣的是:在所有浏览器中,与悬停具有相同值的第二个静态版本工作正常。

是否存在一些已知且可修复的问题?

最佳答案

宽高比崩溃是一个 webkit 优化问题。

它只能通过切换到 javascript 动画并通过以下方式强制重新渲染来修复:

$('body').css('display', 'table').height();
$('body').css('display', 'block');

使用 jQuery,您可以在 animate() 函数的进度参数中执行此操作。

切换到 javascript 动画也会消除消失的后元素。

关于CSS3-After-Element-Transformation 不能跨浏览器工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624349/

相关文章:

html - 调整我的页面大小使元素消失

jquery - 如何使用 jquery 触发此页面转换?

jquery - Safari 动画故障 - 白色闪烁

javascript - 将 angular 6 应用程序集成到其他应用程序时如何避免 css 冲突?

css - 使用 css3 和 Sprite 的多个背景图像

html - css关键帧变换不旋转超过180度

html - CSS 卡翻转和文本

css - 如何将 Unicode 数学符号完全置于其父元素的中心?

CSS 边距表现奇怪

twitter-bootstrap - 生涩的扩展子菜单动画