我想知道在HTML 5中遮罩图像的最佳方法是什么?
实际上,我希望在画廊中显示圆形缩略图,而不会让客户费心准备圆形图片...
所以,在我看来,我有两个选择:Canvas masking或老派的方法
你有其他的想法吗?最佳实践?
谢谢
border-radius
属性,将图像的值设置为其尺寸的一半(使边框定义一个圆形)mask
和 mask-clip
属性(这里有一个不错的演示:http://www.webkit.org/blog/181/css-masks/)globalCompositeOperation
遮罩drawImage
),那么这将是一个很棒的答案。 - Phrogz -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/
编辑
您也可以尝试这个http://jsfiddle.net/jalbertbowdenii/WQSLa/3,如Albert所建议的那样。
要更新答案,请尝试使用clip-path
(请参见this css-tricks post)。
caniuse现在显示超过80%的支持率,如果您同时使用-webkit-
前缀。所以这对我来说是有效的(IE/Edge可能是限制因素):
clip-path: circle(125px at center);
-webkit-clip-path: circle(125px at center);
这是我觉得最好的方法:
例如,对于一个直径为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">
。 - T3.0