CSS3实现六边形图片,兼容IE6

最近在写一个小项目,遇到一个需求是做一个六边形的图层,鼠标移动上去显示图片。
先看一下最终实现的效果图

主要采用的技术

这个效果的主要css样式有:

  • transform: rotate(120deg); 图片旋转
  • overflow:hidden; 超出隐藏
  • visibility: hidden; 也是隐藏,与display:none;相似,但不同的是,它虽然隐藏了,但依然会在网页中占有位置

实现原理

我们使用3层div来实现这个六边形图层,

  • 最外层div(boxF)旋转120度,div设置visibility: hidden
  • 第二层(boxS)旋转-60度,div设置visibility: hidden
  • 第三层(boxT)再旋转-60度,和最外层第二层的旋转正好回转,使视觉看起来没有旋转,div设置visibility: visible
  • 经过旋转肯定有超出的部分,因此对3个div都设置overflow:hidden;
  • 鼠标放上去时,图层显示以背景图的形式展示图片

浏览器兼容性处理

  • 兼容IE9:-ms-transform:rotate(120deg);
  • 兼容firefox:-moz-transform:rotate(120deg);
  • 兼容Safari和Chrome:-webkit-transform:rotate(120deg);
  • 兼容Opera:-o-transform:rotate(120deg);
  • 兼容IE6-8: filter:progid:DXImageTransform.Microsoft.Matrix(M11=cos(roation),M12=-sin(roation),M21=sin(roation),M22=cos(roation),SizingMethod=’auto expand’);

demo

六边形图片演示

资料推荐