图像开箱即用。我这样想似乎不对。如果有人能帮忙,我会很高兴的。非常感谢。在这里你可以找到演示
.box {
width:210px;
height:210px;
border-radius:50%;
border:3px solid yellow;
cursor: default;
overflow: hidden;
}
img{
overflow: hidden;
width:210px;
height:210px;
z-index:-1;
display: block;
position: relative;
-webkit-transition: all 0.6s ease-in-out;
-moz-transition: all 0.6s ease-in-out;
-o-transition: all 0.6s ease-in-out;
-ms-transition: all 0.6s ease-in-out;
transition: all 0.6s ease-in-out;
}
.box:hover img{
-webkit-transform: scale(2);
-moz-transform: scale(2);
-o-transform: scale(2);
-ms-transform: scale(2);
transform: scale(2);
}
问题似乎只出现在webkit浏览器上。我在捕捉到边界半径属性崩溃的规模转换后做了一些研究,我发现了这个
溢出:隐藏忽略边界半径和CSS转换(仅限webkit)
您必须将-webkit mask image:放在父div中才能解决这个问题。
-webkit-mask-image: -webkit-radial-gradient(circle, white, black);
http://jsfiddle.net/Jx8xF/16/
编辑:请注意,背景大小是一项昂贵的操作-请参阅Fix4上的这篇文章。删除背景大小的CSS属性,如果它降低了你的网站速度http://kristerkari.github.io/adventures-in-webkit-land/blog/2013/08/30/fixing-a-parallax-scrolling-website-to-run-in-60-fps/
最后,您可以看到,使用scale()css转换方法放大图像比背景大小更平滑
EDIT2:代码更新http://jsfiddle.net/Jx8xF/19/
在Safari 5.1.7、Chrome、Mozilla、IE10、Opera、Opera Next 上测试
正如你所看到的,Safari浏览器只有在第一次修复后才有问题。对于他,你需要设置
-webkit-transform: translateZ(0);
这还不是全部。您需要为border bug分组两层,并用另一个div将其封装。在代码中,您可以在HTML和CSS文件中看到完整的修复。
通过删除img
元素,而将图像用作.box
元素上的背景,可以更好地实现此效果。然后在background-size
属性上使用transition
。
以下是CodePen的一个工作示例。下面的代码示例。
.box {
-webkit-transition: all 0.4s ease;
width:210px;
height:210px;
border-radius:100%;
border:3px solid yellow;
background: url('http://fc07.deviantart.net/fs71/f/2012/144/b/6/barn_owl_leather_mask_by_teonova_by_teonova-d50xl3v.jpg') center center;
background-size: 100%;
}
.box:hover{
-webkit-transition: all 0.4s ease;
background-size: 150%;
}