为 svg:image 设置圆角
我试图用 d3.js 为 s svg:image (嵌入在 SVG 中的图像)制作圆角。我不知道如何正确设置图像样式,因为根据 W3C 规范,我应该能够使用 CSS,但较近的边框或圆角边缘对我来说都不起作用。
提前致谢。
vis.append("svg:image")
.attr("width", width/3)
.attr("height", height-10)
.attr("y", 5)
.attr("x", 5)
.attr("style", "border:1px solid black;border-radius: 15px;")
.attr("xlink:href",
"http://www.acuteaday.com/blog/wp-content/uploads/2011/03/koala-australia-big.jpg");
编辑:
测试浏览器:Firefox、Chrome
I was trying to make rounded corners for s svg:image (image embedded in SVG) with d3.js. I can't find out how to properly style the image, because according to W3C spec I should be able to use CSS, but neighter border nor rounded edges work for me.
Thanks in advance.
vis.append("svg:image")
.attr("width", width/3)
.attr("height", height-10)
.attr("y", 5)
.attr("x", 5)
.attr("style", "border:1px solid black;border-radius: 15px;")
.attr("xlink:href",
"http://www.acuteaday.com/blog/wp-content/uploads/2011/03/koala-australia-big.jpg");
Edit:
Browsers tested: Firefox, Chrome
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
'border-radius' 不适用于 svg:image 元素(无论如何)。解决方法是创建一个带圆角的矩形,并使用剪切路径。
示例。
源代码的相关部分:
也可以创建多个 rect 元素,而不是使用
。
'border-radius' doesn't apply to svg:image elements (yet anyway). A workaround would be to create a rect with rounded corners, and use a clip-path.
An example.
The relevant part of the source:
It's also possible to create several rect elements instead of using
<use>
.现在还有另一种更干净的方法可以做到这一点。它使用插入剪辑路径。
There is another way to do that nowadays which is a bit cleaner. It's to use an inset clip-path.
另一个简单的替代方案:
将 html
标签包装在
标签中。这允许您使用正常的 html 样式:Another, easy alternative:
Wrap an html
<img>
tag in a<foreignObject>
tag. This allows you to use normal html styling:对于那些只对制作圆形头像感兴趣的人,这里有一个使用 d3 v4 的示例。请注意,您需要在图像位于 (0,0) 时应用裁剪,因此您需要将图像 translate() 到您想要的位置。
For those just interested in making rounded avatars, here goes an example using d3 v4. Notice that you need to apply the clipping while the image is at (0,0), so you need to translate() the image to where you want it.