我在 Safari 9.1 中看到的行为似乎是 Safari 中的一个错误,但我把它放在这里看看它是否是我的代码的问题。
我有一个网站正在根据用户操作转换 CSS Shapes 多边形剪辑路径。它在 Chrome 50 上运行良好,但在 Safari 上却不行。在 Safari 上,当另一个插件使用 jQuery 检查相关元素的 CSS 位置时,剪辑路径停止转换。
你可以在我非常小的 codepen中看到这种行为(转载如下)。在 Safari 中,您可以单击绿色三角形来查看它以动画方式填充页面。但是,当您单击红色三角形时,它无法填充页面,即使唯一的区别是我检查了它的$().css('position')
. 在 Chrome 中,两个三角形都可以正常工作。
有没有办法来解决这个问题?
HTML:
<div id="div1"></div>
<div id="div2"></div>
CSS:
body {
position: absolute;
top:0;
bottom:0;
left:0;
right:0;
margin: auto;
}
#div1, #div2 {
position: absolute;
top:0;
width:50%;
height:100%;
transition: clip-path 1s, -webkit-clip-path 1s, width 1s;
}
#div1 {
background: green;
-webkit-clip-path: polygon(0 0, 100% 0, 0 100%, 0 100%);
clip-path: polygon(0 0, 100% 0, 0 100%, 0 100%);
}
#div1.active {
width: 100%;
-webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
#div2 {
background: red;
-webkit-clip-path: polygon(0 0, 0 0, 100% 100%, 0 100%);
clip-path: polygon(0 0, 0 0, 100% 100%, 0 100%);
}
#div2.active {
width: 100%;
-webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
JS:
$('div').click(function() {
$(this).toggleClass('active');
});
console.log($('#div2').css('position'));