使用 SVG 剪辑(或遮盖)DIV

Posted

技术标签:

【中文标题】使用 SVG 剪辑(或遮盖)DIV【英文标题】:Using SVG to clip (or mask) a DIV 【发布时间】:2012-04-23 19:00:36 【问题描述】:

我在谷歌上搜索了很多,我刚刚放弃了,所以我会求助于那里的专家,看看是否有人可以帮助我完成我的任务。

我已通过 illustrator 将徽标转换为 .SVG。

我的目标是使用该徽标来剪辑(或根据需要遮盖)整个 div,以便只显示其中的一小部分并且您可以看到背景。

我决定采用 .SVG 方式,因为我想将这个网站创建为完全可扩展的体验,因此 .png 无法从全高清分辨率到 1024x768 准确地工作。

所以首先我想知道如何剪辑一个 Div,同时如何“反向剪辑”,这样不仅可以显示 div 的那一部分,它还可以显示除它之外的所有内容。

我会急切地等待你的答案,因为我真的需要它们......

提前谢谢你。

【问题讨论】:

澄清您要做什么...您想覆盖整个 div(带有正方形)并且只允许一个与您的徽标形状相同的孔?这是否意味着徽标是一个简单的路径? 【参考方案1】:

如果我对您的理解正确(但我不确定),您希望显示“背景中所有符合您徽标形状的内容”,对吗?但是,如果“反转”您的徽标,使其自身透明并赋予背景中性色,例如黑色或白色或其他颜色,那又如何呢?然后你可以将两个 div 放在一起,顶部是你的 Logo。

我创建了一个小提琴来向您展示我的意思: http://jsfiddle.net/ds82/R4rBH/2/

Der circle 是标志,它在蓝线内外都是透明的,它是一个 svg。希望这是你想要的。

【讨论】:

还没有看到你的答案。它绝对有效。必须彻底考虑这一点,看看是否值得使用它而不是.png。你怎么看?【参考方案2】:

我认为你无法做到这一点。我曾经看到一个插件和一个生成器like this,虽然我认为这可能不是你最好的选择。

我会在 svg 中加入您想要剪辑的任何文本,我确信这比找到一种让您的 html 与 svg 正确交互的方法更容易。

【讨论】:

我不认为他对包装感兴趣,他可能只是想在视觉上剪辑 div【参考方案3】:

好吧,因为我无法通过 .svg 完成,所以我最终只使用了一个 .png,其中所有内容都是黑色的,我的徽标是透明的。可惜我找不到答案……

【讨论】:

【参考方案4】:

目前你想做的基本上只有in Firefox。方法是在SVG中定义正确的<mask>元素,然后通过CSS应用:

#content 
  mask: url(remote.svg#logo-mask);

(或者,如果您嵌入了 SVG:)

#content 
  mask: url(#logo-mask);

【讨论】:

以上是关于使用 SVG 剪辑(或遮盖)DIV的主要内容,如果未能解决你的问题,请参考以下文章

怎么把div上的highchart置于底层,他遮盖了munu层

float浮动后,父级元素高度塌陷和遮盖问题

css里怎么让div或者其他盒子里的东西宽高不变的任意移动而不被其他东西遮盖住?

CSS 导航~如何能让这个DIV盒子不盖住前面的li的底部边框(只遮盖一个)

定位布局中关于z-index的一些问题

创建反向剪辑路径 - CSS 或 SVG