CSS:使用Mask作为Webkit-Mask-Image的后备

时间:2013-10-05 19:37:16

标签: css html5 svg webkit

所以我一直在尝试将背景图像剪切成圆形六边形,我发现webkit的惊人蒙版图像非常容易解决我的所有问题。可悲的是,它只适用于Chrome和Safari(当然)。

我如何构建非webkit浏览器的SVG掩码的后备?是否有可能使用我的images文件夹中的.svg文件作为掩码,或者它是否必须在html文档的svg标记中定义?

这是我想要的JSFiddle: http://jsfiddle.net/fbB3P/

CSS:

.hexagon {
    position: relative;
    display: inline-block;
    width: 205px;
    height: 233px;
    overflow: hidden;
    color: #fff;
    -webkit-mask-image: url('http://i40.tinypic.com/kajqg.jpg');
    text-align: center;
}

.hexagon .content {
    height: 186px;
    width: 186px;
    margin: auto;
    margin-top: 16px;
}

.hexagon a {
    cursor: -webkit-zoom-in;
    cursor: -moz-zoom-in;
}

HTML:

<div class="hexagon" style="background: url('https://s3.amazonaws.com/images.dailydabbles.com/artwork/skull-link5243b4c783a87-crop-260x260-medium.png');">
   <a href="#skullkid">
      <div class="content"></div>
   </a>
</div>

1 个答案:

答案 0 :(得分:2)

太糟糕的掩码有awful support

我创建了另一种屏蔽方式,利用了:before:after伪元素。

jsFiddle demo here - 更好的跨浏览器支持。

<强> HTML

<div class="hex"></div>

<强> CSS

.hex {
    width: 205px;
    height: 233px;
    position: relative;
    background: url('https://s3.amazonaws.com/images.dailydabbles.com/artwork/skull-link5243b4c783a87-crop-260x260-medium.png');
}

.hex:before {
    content: "";
    width: 0;
    height: 0;
    border-bottom: 60px solid transparent;
    border-left: 103px solid white;
    border-right: 102px solid white;
    position: absolute;
}

.hex:after {
    content: "";
    width: 0;
    position: absolute;
    bottom: 0px;
    border-top: 60px solid transparent;
    border-left: 103px solid white;
    border-right: 102px solid white;
}