对于“它使我的图像呈圆形”,我假设您的意思是它显示了图像的圆形“切口”。考虑到这一点,我认为您想要的称为CSS Masking。以下所有内容均取自该来源,但此处在链接失效的情况下在答案中提供。
很久以前,Apple 将 CSS 掩码添加到 WebKit 引擎中,
即早在 2008 年 4 月。口罩提供了控制
基于每个像素的元素的不透明度/透明度,类似于如何
“24-bit”-PNG 或 32-bit-TIFF 的 alpha/transparency-channel 工作。
模拟一个简单的 -webkit-mask-image 跨浏览器
假设我们想将一个 HTML 元素屏蔽为右图所示的鼠标头部形状。
使用 WebKit 的专有 CSS 掩码,我们将拥有以下 HTML:
<div class="element">
<p>Lorem ipsum dolor sit … amet.</p>
</div>
并定义如下CSS:
.element {
width: 400px;
height: 300px;
overflow: hidden;
color: #fff;
background: url(background.png);
-webkit-mask-image: url(mouse.png);
}
现代浏览器
[...] 下一步是在我们的内联 SVG 中定义一个 SVG 掩码,我们可以提供一个掩码图像,然后通过 style="mask:[mask id]" 将其应用到我们的 foreignObject/嵌入式 HTML :
<!DOCTYPE html>
<html>
<body>
<!-- SVG begins -->
<svg>
<!-- Definition of a mask begins -->
<defs>
<mask id="mask" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">
<image width="400px" height="300px" xlink:href="mouse.png"></image>
</mask>
</defs>
<!-- Definition of a mask ends -->
<foreignObject width="400px" height="300px" style="mask: url(#mask);">
<!-- HTML begins -->
<div class="element">
<p>Lorem ipsum dolor sit … amet.</p>
</div>
<!-- HTML ends -->
</foreignObject>
</svg>
<!-- SVG ends -->
</body>
</html>
最后我们需要一个合适的蒙版图像。我们不能简单地使用 WebKit 专有的 CSS 掩码中的图像,因为 SVG 掩码不查看透明度值,而是查看亮度值。所以我们需要做的就是将所有不透明的图像像素变成白色阴影。
在 Photoshop 中超级简单:
- 打开要用作遮罩的透明 24 位 PNG
- 选择“图层”菜单,然后选择“图层样式”,最后选择“颜色叠加”
- 在“颜色叠加”对话框中将颜色更改为白色
- 点击“确定”关闭对话框
- 选择“文件”菜单、“保存为网络”,然后替换旧文件。
还有卡布姆! HTML 内容的屏蔽已在 WebKit、Firefox 和 Opera 中启动并运行!不错。
然后为它下面的任何元素创建一个掩码: