【发布时间】:2012-01-10 09:00:15
【问题描述】:
我想知道在 HTML 5 中屏蔽图像的最佳方法是什么?
事实上,我想在画廊中显示圆形缩略图,而不会打扰我的客户准备圆形图片...
所以,在我看来,我有两个选择:Canvas masking 或 old fashioned way
你有其他想法吗?最佳做法?
谢谢
【问题讨论】:
-
我的回答对你有帮助吗?如果它确实投票给我作为正确答案
我想知道在 HTML 5 中屏蔽图像的最佳方法是什么?
事实上,我想在画廊中显示圆形缩略图,而不会打扰我的客户准备圆形图片...
所以,在我看来,我有两个选择:Canvas masking 或 old fashioned way
你有其他想法吗?最佳做法?
谢谢
【问题讨论】:
你可以使用
border-radius 设置为其尺寸的一半(以便边框定义一个圆圈)mask 和 mask-clip 属性(这是一个很好的演示:http://www.webkit.org/blog/181/css-masks/)选择取决于目标浏览器和您想要投入的时间。
对于完全跨浏览器的结果,我推荐老式方式,但如果您想要更多形状(可能是动态形状)或不仅仅是图像遮罩,您可以尝试 svg 或 canvas。
【讨论】:
drawImage @
-circle {
-webkit-border-radius: 61px;
-moz-border-radius: 61px;
border-radius: 61px;
border:1px solid #aaaaaa;
width:122px;
height:122px;
}
看到这个
检查这个http://jsfiddle.net/WQSLa/1/
编辑
你也可以按照 albert 的建议试试这个http://jsfiddle.net/jalbertbowdenii/WQSLa/3
【讨论】:
这是最适合我的方法:
对于 200 像素的圆圈,您的 SVG 可能如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="image-mask" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="200px" height="200px" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve">
<circle cx="100" cy="100" r="100" stroke="black" stroke-width="0" fill="black" />
</svg>
您的 CSS 可能如下所示:
#image-mask {
width: 200px;
height: 200px;
mask: url('/static/images/avatarmask.svg');
-webkit-mask-image: url('/static/images/avatarmask.svg');
}
如果您想要更深入的内容,我发现本指南非常有帮助:http://collidercreative.com/how-to-create-css-image-masks-for-the-web-with-svgs/。
【讨论】:
<img src="/images/myimage.jpg" id="image-mask">.
要更新答案,请尝试clip-path(请参阅this css-tricks post)。
caniuse 现在显示超过 80% 的支持,如果您也使用 -webkit- 前缀。所以这对我有用(不过,IE/Edge 可能是限制因素):
clip-path: circle(125px at center);
-webkit-clip-path: circle(125px at center);
【讨论】: